Danh mục

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

Số trang: 17      Loại file: pdf      Dung lượng: 277.81 KB      Lượt xem: 12      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

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.
Nội dung trích xuất từ tài liệu:
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 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.com và www.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? 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 nếu không sẽ gây ra lỗi PHP_Fix_Pathinfo_Enable cannot occur within section): AddHandler fcgid-script .fcgi FcgidConnectTimeout 20 PHP_Fix_Pathinfo_Enable 1 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 thuộc sở hữu của tài khoản người dùng và nhóm web1, còn www.example2.com thuộc 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 Chúng ta sẽ sử dụng PHP với suExec, và thư mục tài liệu gốc của suExec tại /var/www, như được chỉ ra bằng lệnh sau: /usr/lib/apache2/suexec -V root@server1:~# /usr/lib/apache2/suexec -V -D AP_DOC_ROOT=/var/www -D AP_GID_MIN=100 -D AP_HTTPD_USER=www-data -D AP_LOG_EXEC=/var/log/apache2/suexec.log -D AP_SAFE_PATH=/usr/local/bin:/usr/bin:/bin -D AP_UID_MIN=100 -D AP_USERDIR_SUFFIX=public_html root@server1:~# Nhưng chúng ta lại không thể gọi trực tiếp các file PHP nhị phân (/usr/lib/cgi-bin/php) trực tiếp bởi vì ó được đặt bên ngoài thư mục gốc của suExec. Nhưng suExec lại không chấp nhận các đường dẫn liên kết mềm, do đó cách giải quyết duy nhất để khắc phục vấn đề này là tạo mã kích hoạt hỗ trợ cho từng website riêng biệt trong thư mục con của /var/www; và những đoạn mã này sẽ đảm nhận nhiệm vụ gọi các thư viện của PHP tại /usr/lib/cgi-bin/php. Và những đoạn mã này phải thuộc quyền quản lý của các tài khoản người dùng và nhóm riêng biệt trong từng website. Tại đây, chúng ta sẽ tạo những đoạn mã tương ứng bên trong thư mục /var/www/php-fcgi-scripts, ví dụ là /var/www/php- fcgi-scripts/web1 và /var/www/php-fcgi-scripts/web2: mkdir -p /var/www/php-fcgi-scripts/web1 mkdir -p /var/www/php-fcgi-scripts/web2 vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter #!/bin/sh PHPRC=/etc/php5/cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter #!/bin/sh PHPRC=/etc/php5/cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php Thông tin tại dòng PHPRC sẽ chỉ tới thư mục của file php.ini (ví dụ /etc/php5/cgi/ thành /etc/php5/cgi/php.ini). PHP_FCGI_MAX_REQUESTS là số lượng các yêu cầu tối đa được fcgid xử lý trước khi dừng lại và quá trình mới bắt đầu. PHP_FCGI_CHILDREN khởi tạo số lượng các “PHP children” sẽ được kích hoạt. Đoạn mã php-fcgi-starter phải được thực thi: chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi- starter chmod 755 /var/www/php-fcgi-scripts/web2/php-fcgi- starter chown -R web1:web1 /var/www/php-fcgi-scripts/web1 chown -R web2:web2 /var/www/php-fcgi-scripts/web2 Bây giờ, chúng ta sẽ tạo vhost Apache dành cho www.example1.com và www.example2.com: vi /etc/apache2/sites-available/web1 ServerName www.example1.com ServerAlias example1.com ServerAdmin webmaster@example1.com DocumentRoot /var/www/web1/web/ SuexecUserGroup web1 web1 Options +ExecCGI AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/web1/php-fcgi- starter .php Order allow,deny Allow from all # ErrorLog /var/log/apache2/error.log # CustomLog /var/log/apache2/access.log combined ServerSignature Off a2ensite web1 vi /etc/apache2/sites-available/web2 ServerName www.example2.com ServerAlias example2.com ServerAdmin webmaster@example2.com DocumentRoot /var/www/web2/web/ SuexecUserGroup web2 web2 Options +ExecCGI AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/web2/php ...

Tài liệu được xem nhiều: