บนเดเบียน สามารถเปิดใช้งานมอดูลด้วยคำสั่ง a2enmod MODULENAME
และปิดการใช้งานด้วยคำสั่ง a2dismod MODULENAME
# vi /etc/apache2/site-enables/example.com
<VirtualHost *:80> ServerAdmin webmaster@example.com ServerName www.example.com ServerAlias example.com <IfModule mod_cband.c> CBandExceededSpeed 1000 10 10 </IfModule> ... </VirtualHost>
# /etc/init.d/apache2 force-reload
# vi /etc/apache2/conf.d/charset
AddCharset TIS-620 .tis-620 .th AddCharset CP874 .cp874
... LoadModule wsgi_module modules/mod_wsgi.so
ที่มา: http://serverfault.com/questions/435926/cant-locate-api-module-structure-mod-wsgi
# aptitude update
# aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-common
# aptitude install php5 php5-cgi php5-commonphp5-curlphp5-gd php5-mcrypt php5-mysql php5-odbc php5-pgsql php5-xmlrpc
# aptitude install libapache2-mod-php5
ช่วงนี้ aptitude ของ etch เป็นอะไรไม่รู้ ชอบติดตั้งไฟล์ไม่ครบ
(อาจเป็นที่ apt-proxy)
แก้ไขแพกเกจติดตั้งไฟล์ไม่ครบ โดยการแตกไฟล์โดยไม่ติดตั้ง ไปยัง /
# dpkg-deb -x /var/cache/apt/archives/apache2.2-common_2.2.3-3.1_i386.deb /
# aptitude install mysql-client-5.0 mysql-common mysql-server-5.0 phpmyadmin
บันทึกการเปิดโมดูลแบบน้อยสุด module-minimal
# a2enmod actions
# a2enmod alias
# a2enmod authz_host
# a2enmod cgi
# a2enmod dir
# a2enmod mime
# a2enmod php5
# a2enmod rewrite
# a2enmod status
# /etc/init.d/apache2 restart
บันทึกการเปิดใช้โมดูลแบบปกติ module-normal
# a2enmod alias
# a2enmod auth_basic
# a2enmod authn_file
# a2enmod authz_default
# a2enmod authz_groupfile
# a2enmod authz_host
# a2enmod authz_user
# a2enmod autoindex
# a2enmod cgi
# a2enmod dir
# a2enmod env
# a2enmod mime
# a2enmod mod_python
# a2enmod negotiation
# a2enmod php5
# a2enmod setenv
# a2enmod status
# /etc/init.d/apache2 restart
เอา php.ini จากตัวอย่างแบบ recommended มาใช้
# cp /usr/share/doc/php5/examples/php.ini-recommended /etc/php5/apache2/php.ini
แก้จะให้ใช้ได้กับ drupal
# vi /etc/php5/apache2/php.ini
... ; หน่วยความจำที่ยอมให้สคริปต์รันได้ ; เก่าเป็น 8M drupal แนะนำ 12M เราใช้ 16M กันเหนียว memory_limit = 16M ; Maximum amount of memory a script may consume (8MB) ... ; ตัวแปรเป็น global อัตโนมัติ ; อันนี้ก็กันเหนียว ตอนเขียนโค๊ดเรี่ยราดไว้หลายที่ เก่าเป็น Off เราแก้เป็น On register_globals = On ... ; ขนาดไฟล์ใหญ่สุด ที่ post ได้ ; อันนี้จำได้แม่น หน้าแตกเพราะเอา Bon Echo เข้าไม่ได้ เก่าเป็น 8M แก้เป็น 20M post_max_size = 20M ... ; adodb ไม่ต้องก็ได้ include_path = ".:/usr/share/php5:/usr/share/php4:/usr/share/php/adodb" ... ; ค่าแนะนำของ drupal session.save_handler = user ... ; ค่าแนะนำของ drupal session.cache_limiter = none ...
ส่วนของไซต์ ถ้ามีหลายไซท์ ควรแยกไฟล์ออกมาวางไว้ที่ /etc/apache2/site-available
เวลาจะเปิดใช้งานก็ใช้คำสั่ง a2ensite
เช่นไซต์ example.com
# vi /etc/apache2/sites-available/example.com
<VirtualHost *:80> ServerAdmin webmaster@example.com ServerName www.example.com DocumentRoot /var/www/www.example.com/ <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /swww2/var/www/www.thaitux.info/> Options Indexes FollowSymLinks MultiViews DirectoryIndex index.html index.php AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On </VirtualHost>
เปิดใช้งานด้วยคำสั่ง
# a2ensite example.com
# /etc/init.d/apache2 restart
!!!BETA!!!
เอามาจาก
Debian Wiki - SubversionApache2SSLHowto
Bug#395823: apache2-ssl-certificate disappeared
ติดตั้ง apache2 กับ ssl
# aptitude install apache2 openssl
เปิดใช้โมดูล ssl
# a2enmod ssl
แก้ให้ apache2 ใช้พอร์ต https คือ 443
# vi /etc/apache2/ports.conf
... Listen 443
etch รุ่นล่าสุด ชุดคำสั่งสร้างกุญแจของ apache2 ชื่อ apache2-ssl-certificate หายไปแล้ว
ต้องสั่งเองทีละขั้น
# export RANDFILE=/dev/random
# mkdir -p /etc/apache2/ssl
# openssl req $@ -new -x509 -days 365 -nodes -out \
/etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
กรอกข้อมูลตามปกติ
...
Country Name (2 letter code) [AU]: <<<--- TH
State or Province Name (full name) [Some-State]: <<<--- Bangkok
Locality Name (eg, city) []: <<<--- Bangkok
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <<<--- Example Co.,Ltd.
Organizational Unit Name (eg, section) []: <<<--- computer
Common Name (eg, YOUR name) []: <<<--- webmaster
Email Address []: <<<--- webmaster@example.com
ป้องกันกุญแจ
# chmod 600 /etc/apache2/ssl/apache.pem
สร้างไฟล์ไซต์ ssl สมมุติชื่อไฟล์ว่า example-ssl โดยเอาโครงมาจากไฟล์ default
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example-ssl
ปรับแก้
# vi /etc/apache2/sites-available/example-ssl
NameVirtualHost *:443 <VirtualHost *:443> ... SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem SSLProtocol all SSLCipherSuite HIGH:MEDIUM </VirtualHost>
(ตรงนี้ สามารถเปลี่ยนไดเรกทอรี่ของ ssl ไปยังจุดใดก็ได้ ตามที่เราต้องการ
เช่น ถ้าใช้ svn ไดเรกทอรี่จะเป็น /var/lib/svn/)
สั่งเปิดใช้ไซต์ที่สร้างขึ้น
# a2ensite example-ssl
สั่งเริ่ม apache2 ใหม่
# /etc/init.d/apache2 restart
debian: lenny/etch
package: apache2.2 (2.2.9-10+lenny1/2.2.3-4+etch6)
สมมุติว่าเซิร์ฟเวอร์ภายนอก ชื่อ www.example.com มีการติดตั้ง apache2 ไว้แล้ว
และเซิร์ฟเวอร์ภายใน ชื่อ internal.example.com มีการติดตั้ง apache2 ไว้แล้ว
ทำที่เครื่องเซิร์ฟเวอร์ภายนอกอย่างเดียว โดยใช้มอดูล proxy_http
# a2enmod proxy
# a2enmod proxy_http
# /etc/init.d/apache2 restart
ติดตั้งชื่อไฟล์ไซต์ใน sites-available
ว่า internal
# vi /etc/apache2/sites-available/internal
<VirtualHost *:80> ServerAdmin webmaster@internal.example.com ServerName internal.example.com ProxyRequests Off <Proxy *> Order Deny,Allow Allow from all </Proxy> ProxyPreserveHost On ProxyPass / http://internal.example.com/ ProxyPassReverse / http://internal.example.com/ </VirtualHost>
เปิดใช้งาน
# a2ensite internal
# /etc/init.d/apache2 reload
เสร็จแล้ว
ถ้าเราตั้งค่า dns ของภายนอกไว้แล้ว สามารถเรียกจากภายนอกผ่าน internal.example.com