Hướng dẫn cài đặt và thiết lập Apache2 với module
mod_fcgid và PHP5 trên Ubuntu 10.04
Trong bài viết sau, Quản Trị sẽ giới thiệu với các bạn cách
cài đặt Apache2 với module hỗ trợ mod_fcgid và PHP5 trên
nền tảng Ubuntu 10.04. Module này là 1 sự thay thế khá
hoàn hảo cho module cũ mod_fastcgi. Nó cho phép b
n thực
hiện các đoạn mã PHP với tài khoản tương ứng của Apache.
Lưu ý sơ bộ
Tại bài thử nghiệm này chúng ta sử dụng hệ điều hành Ubuntu
server với hostname server1.example.com và địa chỉ IP
192.168.0.100. Tại đây, ta tạo 2 vhost Apache, bao gồm
www.example1.comwww.example2.com để mô phỏng mục
đích sử dụng của mod_fcgid. Hãy đăng nhập vào hệ thống bằng
tài khoản root:
sudo su
/bin/sh là đường dẫn liên kết đến /bin/dash, nhưng chúng ta chỉ
cần đến /bin/bash chứ không phải là /bin/dash. Do vậy hãy gõ
lệnh sau:
dpkg-reconfigure dash
Install dash as /bin/sh? <-- gõ No
Tiếp đó, chúng ta cần tắt bỏ AppArmor:
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
aptitude remove apparmor apparmor-utils
Cài đặt Apache2 / mod_fcgi / PHP5
Để cài đặt đầy đủ 3 ứng dụng trên theo thứ tự, sử dụng lệnh sau:
aptitude install apache2 apache2-suexec libapache2-mod-fcgid
php5
-cgi
Nhưng nếu Apache2 đã được cài đặt cùng với PHP5 như 1
module của Apache thì cần phải tắt bỏ module PHP5 đó đi:
a2dismod php5
và kích hoạt những module sau:
a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod fcgid
Sau đó mở file /etc/php5/cgi/php.ini:
vi /etc/php5/cgi/php.ini
bỏ chú thích tại dòng cgi.fix_pathinfo = 1:
[...]
; cgi.fix_pathinfo provides *real*
PATH_INFO/PATH_TRANSLATED support for CGI. PHP's
; previous behaviour was to set PATH_TRANSLATED to
SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO,
see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the
spec. A setting
; of zero causes PHP to behave as before. Default is 1. You
should fix your scripts
; to use SCRIPT_FILENAME rather than
PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
Tiếp tục mở file /etc/apache2/mods-available/fcgid.conf … :
vi /etc/apache2/mods-available/fcgid.conf
và thêm dòng mã PHP_Fix_Pathinfo_Enable 1 (không giống
như các phiên bản Ubuntu trước kia, với bản 10.04 d
òng mã này
không được nằm trong section của <VirtualHost> nếu không sẽ
gây ra lỗi PHP_Fix_Pathinfo_Enable cannot occur within
<VirtualHost> section):
<IfModule mod_fcgid.c>
AddHandler fcgid
-script .fcgi
FcgidConnectTimeout 20
PHP_Fix_Pathinfo_Enable 1
</IfModule>
Và khởi động lại Apache:
/etc/init.d/apache2 restart
Tạo Vhosts cho www.example1.com và
www.example2.com
Trong bước tiếp theo, chúng ta sẽ tạo 2 vhost -
www.example1.com (với thư mục tài liệu gốc là
/var/www/web1/web) và www.example2.com (thư mục tài
liệu gốc là /var/www/web2/web). Trong đó,
www.example1.com thuc sở hữu của tài khoản người
dùng và nhóm web1, còn www.example2.com thuc sở
hữu của tài khoản người dùng và nhóm web2. Trước tiên,
chúng ta tạo tài khoản người sử dụng và các nhóm tương
ứng:
groupadd web1
groupadd web2
useradd -s /bin/false -d /var/www/web1 -m -g web1 web1
useradd -s /bin/false -d /var/www/web2 -m -g web2 web2
Tiếp theo, tạo các thư mục tài liệu gốc tương ứng với các
vhost và nhóm đó:
mkdir -p /var/www/web1/web
chown web1:web1 /var/www/web1/web
mkdir -p /var/www/web2/web
chown web2:web2 /var/www/web2/web