More Related Content Similar to Ch12 web-app-part2 Similar to Ch12 web-app-part2 (20) Ch12 web-app-part22. 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)
3. default virtualhosts config
● ใน /etc/apache2/sites-available/default(+ -ssl)
NameVirtualHosts *:80
<VirtualHost *:80>
…
</VirtualHost>
● -ssl สำาหรับ https://
NameVirtualHosts *:443
<VirtualHost *:443>
…
SSLEngine On
SSLCertificateFile /etc/ssl/certs/...
SSLCertificateKeyFile /etc/ssl/private/...
…
</VirtualHost>
4. 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 On
SSLCertificateFile /etc/ssl/certs/...
SSLCertificateKeyFile /etc/ssl/private/...
…
</VirtualHost>
5. ปั ญหา
● VirtualHost *:80 และ *:443 ควรจะ default catch all สำาหรับ site ที่
ไม่ได้กำาหนด NameVirtualHost และ VirtualHost แบบ specific เอา
ไว้
● ยังไม่ work
● อาจจะแก้ปัญหาแบบชั่วคราวโดยใช้
NameVirtualHost domain.com:80
<VirtualHost domain.com:80>
● สำาหรับการ catch *.domain.com
6. phpmyadmin conf
● โจทย์สำาหรับ phpmyadmin
– ต้องการให้เข้าถึงได้เฉพาะ
https://pma.domain.com
– ไม่สามารถเข้าถึงได้จากทางอื่นๆ
● default config จะ install /etc/phpmyadmin/apache.conf
เป็ น link ใน /etc/apache2/conf.d/phpmyadmin.conf
7. 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
8. แก้ไข phpmyadmin config ไฟล์
● เพิ่ม NameVirtualHost และ VirtualHost
NameVirtualHost pma.domain.com:443
<VirtualHost pma.domain.com:443>
● เปลี่ยน Alias เป็ น DocumentRoot
Alias /phpmyadmin /usr/share/phpmyadmin
เป็ น
DocumentRoot /usr/share/phpmyadmin
9. แก้ไข (ต่อ)
● เพิ่ม SSL Certificate Config
SSLEngine on
SSLCertificateFile /etc/ssl/certs/sslcertsnakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/sslcertsnakeoil.key
<FilesMatch ".(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
● และ ปิ ดท้าย </VirtualHost>
$ sudo service apache2 restart
● ทดสอบ
10. 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
11. 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
sysadmin@coe.psu.ac.th
13. 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
14. 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
15. squirrelmail (cont)
● สามารถ config เพื่อเปลียน
่
– ชื่อ, รูป, title (Organization Name/Logo/Title)
– IMAP, SMTP Server (ไม่ต้องอย่บน เครื่องเดียวกันกับ Web
ู
Server)
– Folders, Themes, Address Book (ใช้ LDAP)
– Plugins (มีตัวอย่าง ที่ติดตั้งแล้ง แต่ยงไม่ได้ enabled)
ั
● ทดลองเพิม Calendar
่
16. 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
17. 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
18. 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';
19. 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
20. shell using web interface
● ใช้งานจริง เพิ่มบรรทัดใน /etc/rc.local
/usr/local/bin/shellinaboxd localhostonly &
● ก่อน exit 0
● config ให้ใช้งานได้เฉพาะ localhost
ต้องการที่จะเข้าถึงจาก remote host ทำาอย่างไร?
● apache2 proxy_http
21. shell-in-abox config
● ติดตั้ง mod proxy, proxy_http สำาหรับ apache2
$ sudo a2enmod proxy proxy_http
● config
NameVirtualHost shell.domain.com:443
<VirtualHost shell.domain.com:443>
ServerAdmin webmaster@localhost
ServerName shell.domain.com
<Location />
ProxyPass http://localhost:4200/
</Location>
ErrorLog ${APACHE_LOG_DIR}/shellsslerror.log
LogLevel info
CustomLog ${APACHE_LOG_DIR}/shellsslaccess.log combined
SSLEngine on
SSLCertificateFile /root/ssl/shell.crt
SSLCertificateKeyFile /root/ssl/shell.key
</VirtualHost>
23. 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 มาอ่าน
ู
25. 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
26. webmin (cont)
● https://localhost:10000
login: root
passwd: ****
● ขอให้ใช้งานด้วยความระมัดระวัง
จำานวน module ที่มาก
ทำาให้มีโอกาส ที่จะมีปัญหามาก
● โดยส่วนตัว แนะนำาให้ใช้ secure shell
● โดยส่วนตัว ผมไม่ใช้ webmin
27. 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 ได้
28. ● https://localhost/webapp หรือ
https://www.domain.com/webapp ควรจะใช้
งานได้โดยอัตโนมัติ
● ถ้า enable module ssl เอาไว้แล้ว