Ch12 web-app-part2
-
Upload
chatchai-jantaraprim -
Category
Documents
-
view
138 -
download
1
Transcript of Ch12 web-app-part2
Linux Server Admin
Web Applications IIChatchai J
2013-01-212013-01-23
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)
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>
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>
ปัญหา● VirtualHost *:80 และ *:443 ควรจะ default catch all สำาหรบั site ที่ไมไ่ด้กำาหนด NameVirtualHost และ VirtualHost แบบ specific เอาไว้
● ยังไม่ work
● อาจจะแกปั้ญหาแบบชั่วคราวโดยใช้NameVirtualHost domain.com:80<VirtualHost domain.com:80>
● สำาหรบัการ catch *.domain.com
phpmyadmin conf
● โจทย์สำาหรับ phpmyadmin
– ตอ้งการให้เข้าถงึได้เฉพาะhttps://pma.domain.com
– ไม่สามารถเข้าถงึไดจ้ากทางอื่นๆ● default config จะ install /etc/phpmyadmin/apache.conf
เป็น link ใน /etc/apache2/conf.d/phpmyadmin.conf
phpmyadmin (cont)
● วิธีการ$ sudo mv /etc/apache2/conf.d/phpmyadmin.conf \ /etc/apache2/sitesavailable/phpmyadmin
แก้ไข phpmyadmin
$ sudo ln s /etc/apache2sitesavailable/phpmyadmin \ /etc/apache2/sitesenabled/phpmyadmin
แก้ไข phpmyadmin config ไฟล์● เพ่ิม NameVirtualHost และ VirtualHostNameVirtualHost pma.domain.com:443<VirtualHost pma.domain.com:443>
● เปล่ียน Alias เป็น DocumentRootAlias /phpmyadmin /usr/share/phpmyadmin
เป็นDocumentRoot /usr/share/phpmyadmin
แก้ไข (ต่อ)
● เพิ่ม SSL Certificate Config
● และ ปิดท้าย </VirtualHost>
$ sudo service apache2 restart
● ทดสอบ
SSLEngine onSSLCertificateFile /etc/ssl/certs/sslcertsnakeoil.pemSSLCertificateKeyFile /etc/ssl/private/sslcertsnakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars
</FilesMatch>
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
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
self-signed certificate (cont)
● www.domain.com
TH
Songkla
Hatyai
Domain Com Network
Domain Com Serverwww.domain.com
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
squirrelmail
● ติดตั้ง squirrelmail
$ sudo aptget 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
squirrelmail (cont)
● สามารถ config เพื่อเปลีย่น– ช่ือ, รูป, title (Organization Name/Logo/Title)
– IMAP, SMTP Server (ไม่ต้องอย่บูน เคร่ืองเดียวกันกับ Web
Server)
– Folders, Themes, Address Book (ใช้ LDAP)
– Plugins (มีตัวอยา่ง ที่ติดตั้งแล้ง แต่ยงัไม่ได้ enabled)
● ทดลองเพิม่ Calendar
roundcube
● ติดต้ัง roundcube
$ sudo aptget 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
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
roundcube (cont)
● แกไ้ข$ sudo aptget install phpmdb2drivermysql
● ทดสอบ– Server = localhost
● config ต่อ– debug_level = 1
● ไมต่้องเลือก host และระบุ domain
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['mail_domain'] = 'domain.com';
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/shellinabox2.14.tar.gz$ tar zxvf shellinabox2.14.tar.gz$ cd shellinabox2.14$ ./configure$ make$ sudo make install
● ทดสอบ$ /usr/local/bin/shellinaboxd &$ firefox http://www.domain.com:4200
shell using web interface
● ใชง้านจริง เพิ่มบรรทัดใน /etc/rc.local/usr/local/bin/shellinaboxd localhostonly &
● ก่อน exit 0● config ใหใ้ชง้านไดเ้ฉพาะ localhostต้องการท่ีจะเข้าถึงจาก remote host ทำาอยา่งไร?
● apache2 proxy_http
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}/shellsslerror.logLogLevel infoCustomLog ${APACHE_LOG_DIR}/shellsslaccess.log combined
SSLEngine onSSLCertificateFile /root/ssl/shell.crtSSLCertificateKeyFile /root/ssl/shell.key
</VirtualHost>
shell-in-abox ทดสอบ● https://shell.domain.com
● ดูตัวอย่าง config ท่ี fivedots:~cj/LSA/shell-ssl
wordpress
● install wordpress$ sudo aptget install wordpress$ cd /usr/share/doc/wordpress/examples$ sudo bash setupmysql n wordpress blog.domain.com
$ sudo vi /etc/apache2/sitesavailable/blog
● ดูตัวอย่าง slide หน้าถัดไป$ cd /etc/apache2/sitesenabled$ sudo ln s ../sitesavailable/blog .$ sudo service apache2 restart$ firefox http://blog.domain.com
● config login/password, email
● ที่เหลือ ไปหาค่มืูอ wordpress มาอ่าน
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}/wperror.logLogLevel infoCustomLog ${APACHE_LOG_DIR}/wpaccess.log combined
</VirtualHost>
webmin
● download จาก http://www.webmin.com/download.html
● หรือ fivedots:~cj/LSA/webmin-1.610_all.deb
$ sudo aptget install libnetssleayperl \ libauthenpamperl \ libioptyperl \ libaptpkgperl \ aptshowversion
$ sudo dpkg i webmin_1.610_all.deb
webmin (cont)
● https://localhost:10000login: rootpasswd: ****
● ขอใหใ้ชง้านด้วยความระมดัระวังจำานวน module ท่ีมาก ทำาใหม้ีโอกาส ท่ีจะมีปัญหามาก
● โดยส่วนตัว แนะนำาใหใ้ช ้secure shell
● โดยส่วนตัว ผมไม่ใช ้webmin
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 ได้
● https://localhost/webapp หรือ https://www.domain.com/webapp ควรจะใช้งานได้โดยอัตโนมัติ
● ถ้า enable module ssl เอาไว้แล้ว