28
Linux Server Admin Web Applications II Chatchai J 2013-01-21 2013-01-23

Ch12 web-app-part2

Embed Size (px)

Citation preview

Page 1: Ch12 web-app-part2

Linux Server Admin

Web Applications IIChatchai J

2013-01-212013-01-23

Page 2: Ch12 web-app-part2

Apache2 VirtualHosts

● Multiple VirtualHosts

– config เก็บใน /etc/apache2/sites-available

– enable จะ link มาเก็บใน /etc/apache2/sites-

enabled

– config ใน /etc/apache2/conf.d จะใชไ้ดก้ับทุก site

ใน enabled sites (sites-enabled)

Page 3: Ch12 web-app-part2

default virtualhosts config

● ใน /etc/apache2/sites-available/default(+ -ssl)

NameVirtualHosts *:80<VirtualHost *:80>…</VirtualHost>

● -ssl สำาหรับ https://

NameVirtualHosts *:443<VirtualHost *:443>…SSLEngine OnSSLCertificateFile /etc/ssl/certs/...SSLCertificateKeyFile /etc/ssl/private/...…</VirtualHost>

Page 4: Ch12 web-app-part2

site specific virtualhosts config

● ใน /etc/apache2/sites-available/www

NameVirtualHosts www.domain.com:80<VirtualHost www.domain.com:80>…</VirtualHost>

● -ssl สำาหรับ https://

NameVirtualHosts www.domain.com:443<VirtualHost www.domain.com:443>…SSLEngine OnSSLCertificateFile /etc/ssl/certs/...SSLCertificateKeyFile /etc/ssl/private/...…</VirtualHost>

Page 5: Ch12 web-app-part2

ปัญหา● VirtualHost *:80 และ *:443 ควรจะ default catch all สำาหรบั site ที่ไมไ่ด้กำาหนด NameVirtualHost และ VirtualHost แบบ specific เอาไว้

● ยังไม่ work

● อาจจะแกปั้ญหาแบบชั่วคราวโดยใช้NameVirtualHost domain.com:80<VirtualHost domain.com:80>

● สำาหรบัการ catch *.domain.com

Page 6: Ch12 web-app-part2

phpmyadmin conf

● โจทย์สำาหรับ phpmyadmin

– ตอ้งการให้เข้าถงึได้เฉพาะhttps://pma.domain.com

– ไม่สามารถเข้าถงึไดจ้ากทางอื่นๆ● default config จะ install /etc/phpmyadmin/apache.conf

เป็น link ใน /etc/apache2/conf.d/phpmyadmin.conf

Page 7: Ch12 web-app-part2

phpmyadmin (cont)

● วิธีการ$ sudo mv /etc/apache2/conf.d/phpmyadmin.conf \   /etc/apache2/sites­available/phpmyadmin

แก้ไข phpmyadmin

$ sudo ln ­s /etc/apache2­sites­available/phpmyadmin \   /etc/apache2/sites­enabled/phpmyadmin

Page 8: Ch12 web-app-part2

แก้ไข phpmyadmin config ไฟล์● เพ่ิม NameVirtualHost และ VirtualHostNameVirtualHost pma.domain.com:443<VirtualHost pma.domain.com:443>

● เปล่ียน Alias เป็น DocumentRootAlias /phpmyadmin /usr/share/phpmyadmin

เป็นDocumentRoot /usr/share/phpmyadmin

Page 9: Ch12 web-app-part2

แก้ไข (ต่อ)

● เพิ่ม SSL Certificate Config

● และ ปิดท้าย </VirtualHost>

$ sudo service apache2 restart

● ทดสอบ

SSLEngine onSSLCertificateFile    /etc/ssl/certs/ssl­cert­snakeoil.pemSSLCertificateKeyFile /etc/ssl/private/ssl­cert­snakeoil.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars

</FilesMatch>

Page 10: Ch12 web-app-part2

new self signed certificate

● คำาสั่งในการสร้าง server key

$ openssl genrsa ­des3 ­out server.key 2048

● ได้ไฟล์ server.key ซ่ึงมีขนาด 2048 bit สำาหรับ sign ให้กับไฟล์อ่ืน

● สร้าง key ซ่ึงจะให้ web server ใช้ โดยไม่ต้องใส่ passphrase$ openssl rsa ­in server.key ­out www.key

Page 11: Ch12 web-app-part2

self-signed certificate (cont)

● สร้าง new certificate request

$ openssl req -new -key server.key -out www.csr

● ตอบคำาถามTH

Songkla

Hatyai

Prince of sonkla University

Computer Engineernig Dept

www.coe.psu.ac.th

[email protected]

Page 12: Ch12 web-app-part2

self-signed certificate (cont)

● www.domain.com

TH

Songkla

Hatyai

Domain Com Network

Domain Com Serverwww.domain.com

[email protected]

Page 13: Ch12 web-app-part2

self-signed certificate (cont)

● สร้าง certificate

$ openssl x509 ­req ­days 3650 ­in www.csr ­signkey server.key ­out www.crt

● จะได้ www.key กับ www.crt เอาไปใช้สำาหรับ● ในการสรา้ง certificate/key ครั้งต่อไป สามารถใช้

server.key ท่ีสร้างเอาไว้แล้วได้เลย● ดู genkey script

Page 14: Ch12 web-app-part2

squirrelmail

● ติดตั้ง squirrelmail

$ sudo apt­get install squirrelmail

$ cd /etc/apache2/conf.d

$ sudo ln ­s /etc/squirrelmail/apache.conf squirrelmail.conf

$ sudo service apache2 restart

● การ config อื่นๆ$ sudo /etc/squirrelmail/conf.pl

Page 15: Ch12 web-app-part2

squirrelmail (cont)

● สามารถ config เพื่อเปลีย่น– ช่ือ, รูป, title (Organization Name/Logo/Title)

– IMAP, SMTP Server (ไม่ต้องอย่บูน เคร่ืองเดียวกันกับ Web

Server)

– Folders, Themes, Address Book (ใช้ LDAP)

– Plugins (มีตัวอยา่ง ที่ติดตั้งแล้ง แต่ยงัไม่ได้ enabled)

● ทดลองเพิม่ Calendar

Page 16: Ch12 web-app-part2

roundcube

● ติดต้ัง roundcube

$ sudo apt­get install roundcube

$ vi /etc/apache2/conf.d/roundcube

เพ่ิม Alias /roundcube /var/lib/roundcube$ sudo service apache2 restart

● http://www.domain.com/roundcube

● ติดต้ังแล้วไม่สามารถใช้งานได้Database Error Connection Failed!

● จะแก้ไข error อยา่งไร?

● ดูใน log ของ roundcube

/var/log/roundcube/error.log

Page 17: Ch12 web-app-part2

roundcube (cont)

● วิธีการอื่น● แก้ไข config ของ เพ่ือเพ่ิม debug_level

ไฟล์ /etc/roundcube/main.inc.php

$rcmail_config['debug_level'] = 1;

เปล่ียน$rcmail_config['debug_level'] = 4;

● reload http://www.domain.com/roundcube

Page 18: Ch12 web-app-part2

roundcube (cont)

● แกไ้ข$ sudo apt­get install php­mdb2­driver­mysql

● ทดสอบ– Server = localhost

● config ต่อ– debug_level = 1

● ไมต่้องเลือก host และระบุ domain

$rcmail_config['default_host'] = 'localhost';

$rcmail_config['mail_domain'] = 'domain.com';

Page 19: Ch12 web-app-part2

shell using web interface

● get shell in a box from http://shellinabox.googlecode.com/files/shellinabox-2.14.tar.gz

● ติดตั้ง$ wget http://shellinabox.googlecode.com/files/shellinabox­2.14.tar.gz$ tar ­zxvf shellinabox­2.14.tar.gz$ cd shellinabox­2.14$ ./configure$ make$ sudo make install

● ทดสอบ$ /usr/local/bin/shellinaboxd &$ firefox http://www.domain.com:4200

Page 20: Ch12 web-app-part2

shell using web interface

● ใชง้านจริง เพิ่มบรรทัดใน /etc/rc.local/usr/local/bin/shellinaboxd ­­localhost­only & 

● ก่อน exit 0● config ใหใ้ชง้านไดเ้ฉพาะ localhostต้องการท่ีจะเข้าถึงจาก remote host ทำาอยา่งไร?

● apache2 proxy_http

Page 21: Ch12 web-app-part2

shell-in-abox config

● ติดตั้ง mod proxy, proxy_http สำาหรับ apache2

$ sudo a2enmod proxy proxy_http

● configNameVirtualHost shell.domain.com:443<VirtualHost shell.domain.com:443>

ServerAdmin webmaster@localhostServerName shell.domain.com<Location />

ProxyPass http://localhost:4200/</Location>

ErrorLog ${APACHE_LOG_DIR}/shell­ssl­error.logLogLevel infoCustomLog ${APACHE_LOG_DIR}/shell­ssl­access.log combined

SSLEngine onSSLCertificateFile    /root/ssl/shell.crtSSLCertificateKeyFile /root/ssl/shell.key

</VirtualHost>

Page 22: Ch12 web-app-part2

shell-in-abox ทดสอบ● https://shell.domain.com

● ดูตัวอย่าง config ท่ี fivedots:~cj/LSA/shell-ssl

Page 23: Ch12 web-app-part2

wordpress

● install wordpress$ sudo apt­get install wordpress$ cd /usr/share/doc/wordpress/examples$ sudo bash setup­mysql ­n wordpress blog.domain.com

$ sudo vi /etc/apache2/sites­available/blog

● ดูตัวอย่าง slide หน้าถัดไป$ cd /etc/apache2/sites­enabled$ sudo ln ­s ../sites­available/blog .$ sudo service apache2 restart$ firefox http://blog.domain.com

● config login/password, email

● ที่เหลือ ไปหาค่มืูอ wordpress มาอ่าน

Page 24: Ch12 web-app-part2

apache's blog virtualhost

NameVirtualHost blog.domain.com:80<VirtualHost blog.domain.com:80>

ServerAdmin webmaster@localhost

ServerName blog.domain.com.netDocumentRoot /usr/share/wordpress

ErrorLog ${APACHE_LOG_DIR}/wp­error.logLogLevel infoCustomLog ${APACHE_LOG_DIR}/wp­access.log combined

</VirtualHost>

Page 25: Ch12 web-app-part2

webmin

● download จาก http://www.webmin.com/download.html

● หรือ fivedots:~cj/LSA/webmin-1.610_all.deb

$ sudo apt­get install libnet­ssleay­perl \   libauthen­pam­perl \   libio­pty­perl \   libapt­pkg­perl \   apt­show­version

$ sudo dpkg ­i webmin_1.610_all.deb

Page 26: Ch12 web-app-part2

webmin (cont)

● https://localhost:10000login: rootpasswd: ****

● ขอใหใ้ชง้านด้วยความระมดัระวังจำานวน module ท่ีมาก ทำาใหม้ีโอกาส ท่ีจะมีปัญหามาก

● โดยส่วนตัว แนะนำาใหใ้ช ้secure shell

● โดยส่วนตัว ผมไม่ใช ้webmin

Page 27: Ch12 web-app-part2

VirtualHost setup for WebApp

● ติดตั้ง webapp

$ sudo apt-get install webapp

● Default config จะอยู่ใน/etc/webapp/apache.conf

● จะต้อง link มาเป็น/etc/apache2/conf.d/webapp.conf

● จะใช้งาน http://localhost/webapp ได้

Page 28: Ch12 web-app-part2

● https://localhost/webapp หรือ https://www.domain.com/webapp ควรจะใช้งานได้โดยอัตโนมัติ

● ถ้า enable module ssl เอาไว้แล้ว