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 potx

17 436 0
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 potx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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. 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? < 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 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 <VirtualHost *:80> ServerName www.example1.com ServerAlias example1.com ServerAdmin webmaster@example1.com DocumentRoot /var/www/web1/web/ <IfModule mod_fcgid.c> SuexecUserGroup web1 web1 <Directory /var/www/web1/web/> 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 </Directory> </IfModule> # ErrorLog /var/log/apache2/error.log # CustomLog /var/log/apache2/access.log combined ServerSignature Off </VirtualHost> a2ensite web1 vi /etc/apache2/sites-available/web2 <VirtualHost *:80> ServerName www.example2.com ServerAlias example2.com ServerAdmin webmaster@example2.com DocumentRoot /var/www/web2/web/ <IfModule mod_fcgid.c> SuexecUserGroup web2 web2 <Directory /var/www/web2/web/> Options +ExecCGI [...]... Order allow,deny Allow from all # ErrorLog /var/log /apache2/ error.log # CustomLog /var/log /apache2/ access.log combined ServerSignature Off a2ensite web2 Hãy chắc chắn rằng bạn đã khai báo đường dẫn chính xác, bao gồm cả tên các tài khoản người dùng và nhóm tại dòng SuexecUserGroup Reload Apache với lệnh sau: /etc/init.d /apache2 reload Kiểm tra Để tiến hành kiểm tra,... info.php bằng địa chỉ http://www.example2.com/info.php, tìm kiếm thông tin của magic_quotes_gpc – hệ thống sẽ hiển thị tình trạng Off: Trên đây là 1 số thao tác để cài đặt Apache2 cùng module mod_fcgid và PHP5 trên nền tảng Ubuntu 10.04 Chúc các bạn thành công! ... PHPRC=/etc /php5/ cgi/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off Tiếp tục tải lại Apache: /etc/init.d /apache2 reload Mở trình duyệt, kiểm tra lại mã info.php bằng địa chỉ http://www.example2.com/info.php, tìm kiếm thông tin của magic_quotes_gpc – hệ thống sẽ hiển thị tình trạng Off: Trên đây là 1 số thao tác để cài đặt Apache2. .. /var/www/php-fcgi-scripts/web2/php-fcgi-starter và thêm giá trị /var/www/web2/ vào dòng PHPRC: #!/bin/sh PHPRC=/var/www/web2/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php Và tải lại Apache: /etc/init.d /apache2 reload Tiếp theo, tạo file phpinfo(); cho www.example2.com … : vi /var/www/web2/web/info.php Và kiểm tra bằng đường dẫn http://www.example2.com/info.php Tại... Configuration File sẽ hiển thị thông tin /var/www/web2/php.ini: Thay đổi thiết lập của file cấu hình PHP Trong quá trình luân chuyển file php.ini mới tới website, bạn vẫn có thể thay đổi lại những thiết lập của mã php-fcgistarter (hoặc sử dụng song song cả 2) bằng cách thêm tiền tố -d để chuyển thành file PHP thực thi Ví dụ, nếu muốn tắt bỏ module magic_quotes_gpc của website www.example2.com thì chúng ta... tạo 1 file PHP nho nhỏ Ví dụ với www.example1.com: vi /var/www/web1/web/info.php Sau đó, mở trình duyệt và gõ địa chỉ sau: http://www.example1.com/info.php Nếu tất cả hoạt động bình thường, kết quả hiển thị sẽ giống như hình dưới đây, và bạn sẽ nhìn thấy thông số CGI/FastCGI tại dòng Server API: Tùy chỉnh file php.ini cho từng website Như đã đề cập bên trên, mỗi website riêng biệt... (/etc /php5/ cgi/php.ini) tới thư mục /var/www/web2/ và “ép” www.example2.com sử dụng php.ini từ thư mục /var/www/web2/: cp /etc /php5/ cgi/php.ini /var/www/web2/ chown web2:web2 /var/www/web2/php.ini Tại đây, bạn có thể chỉnh lại file /var/www/web2/php.ini theo ý thích Sau đó chúng ta tiếp tục mở file /var/www/php-fcgi-scripts/web2/php-fcgi-starter … : vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter và . 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. đượ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. 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

Ngày đăng: 11/07/2014, 21:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan