intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Cong Thanh | Ngày: | Loại File: PDF | Số trang:17

134
lượt xem
11
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: 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

  1. 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ỉ
  2. 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?
  3. 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
  4. 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
  5. 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
  6. 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
  7. /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
  8. #!/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
  9. 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
  10. # 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
  11. AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/web2/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 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
  12. Kiểm tra Để tiến hành kiểm tra, chúng ta sẽ 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:
  13. 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 đều có mã kích hoạt php-fcgi-starter tương ứng, vì vậy chúng ta không thể tạo riêng file php.ini cho từng website được. Để mô tả quá trình này, chúng ta sẽ copy file php.ini mặc định (/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
  14. 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à 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
  15. Và kiểm tra bằng đường dẫn http://www.example2.com/info.php. Tại dòng Loaded 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-fcgi- starter (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
  16. tắt bỏ module magic_quotes_gpc của website www.example2.com thì chúng ta sẽ làm như sau: 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 -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:
  17. 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!
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2