AdminTalk - Talk to Learn

Navigation
Go Back   AdminTalk - Talk to Learn > Computer Supports and Discussion > Operating System > Hệ điều hành Linux
Hệ điều hành Linux Những thông tin, kiến thức hay, cơ bản, thủ thuật và kinh nghiệm khi sử dụng trên các hệ điều hành Linux

Đề mục chính

Cấu trúc diễn đàn
Thông tin tổng hợp
Thông báo và quy định chung
Đóng góp ý kiến
Những bài viết có giá trị
Tin tức công nghệ
•• Tin tức công nghệ thông tin
•• Doanh Nghiệp & Người Tiêu Dùng
Premium Server, Hosting Support
Web Hosting / Domain
•• Kiến thức cơ bản về Web Hosting/Domain
•• Plesk - CPanel
Server / VPS
•• Kiến thức cơ bản Server - VPS
•• Server Review/ Hardware
•• Mail Server - AntiSPAM
Virtuozzo - VMWare - HyperV
•• For Windows
•• For Linux
Security
•• Mạng Wan - Lan
•• Internet - Virus - Hacker
VoIP
•• Kiến Thức Cơ Bản VoIP
•• Phần Cứng VoIP
•• Phần Mềm VoIP
•• Nhà cung cấp VoIP
Server Operating System
Linux Server
Windows Server 200x
Computer Supports and Discussion
Operating System
•• Hệ điều hành Linux
•• Hệ điều hành Windows
•• Hệ điều hành Mac
•• Hệ điều hành Chrome
Laptop, Netbook
Hardware
•• Cpu Intel
•• Cpu AMD
•• PSU, Overclocking & Cooling
•• Mainboard & Memory
•• Đồ họa máy tính
•• Kinh nghiệm
Software
•• Linux Apps
•• Windows Apps
Webmaster Area
Webmaster talk
Programming Language
•• HTML & CSS
•• PHP
•• C++ / C#
•• .NET
•• Java
•• Other
Graphic & Mutimedia
SEO (Search Engine Optimization)
Browsers
•• Mozilla Firefox
•• Chrome
•• Internet Explorer
Thủ Thuật Internet
Thương mại điện tử
•• Hình thức thanh toán
•• Giải pháp
HiTech, Mobile, Movies, Music, eBooks, Relax
Tablet PC
•• iPad
Mobile
•• iPhone
•• BlackBerry
•• Others
Movies
•• Download phim HD
•• Download phim DVD
Music
•• Download nhạc Lossless Album
•• Download nhạc Lossless tuyển chọn
eBooks - Tài liệu
•• Tin học - Lập trình
•• Khoa học - Kỹ thuật
•• Ngoại Ngữ
•• Tutorials - Training
•• Kinh tế
•• Thể Loại Khác
Bài học trong cuộc sống
AdminTalk – Talk to You
Introduce Youself
Off topic/ Chatting
Mua bán - Rao vặt - Tuyển dụng
Quảng cáo
Tuyển dụng

Bầu chọn mới nhất
Bạn nghĩ sao về công nghệ USB 3.0 ?

Rất tuyệt! Sẽ sử dụng ngay nếu được bán trên thị trường: 47.37%

Tốt hơn USB 2.0 , nhưng giá có thể mắc hơn nhiều: 42.11%

Bình thường thôi, công nghệ luôn thay đổi mà: 10.53%

Không quan tâm lắm: 0%
Voters: 38. You may not vote on this poll

Thống kê
Đề tài: 10653
Bài gửi: 12217
Thành viên: 20,209
Thành viên tích cực: 82
Xin cùng nhau chào đón thành viên mới nhất: bknpower
Kỷ lục: 624 người đã ghé thăm 17/11/2010 lúc 06:16 AM.
Thành viên mới:
hôm nay
- bknpower
hôm nay
- ketrangtay84
Hôm qua
- buixuantu
Hôm qua
- baophuc0711
08/02/2012
- ddvtien
08/02/2012
- thanhtam1028
08/02/2012
- goodhealthvn1
08/02/2012
- honghobao286
07/02/2012
- condau
07/02/2012
- timlaibautroi7408

Số người đang xem
View Who's Online Thành viên: 5
Khách: 58
Tổng: 63
Nhóm: 0
Nhóm:  
Thành viên:  aviomobile, aviovn8, dinhkhuyen, linhshop1989, NguyenLien
Mở Sổ Bạn Bè

Trả lời
 
LinkBack Ðiều Chỉnh Kiếm Trong Bài Xếp Bài

  #1 (permalink)
Old 12/07/2010, 05:16 AM
Cài đặt Apache2 với module mod_fcgid và PHP5 trên OpenSUSE 11.2

Chip
Admintalk's Staff
can't stop talking
 
Chip's Avatar
 
Tham gia ngày: Apr 2008
Nơi Cư Ngụ: Germany
Bài gởi: 4,003
My Mood:
Thanks: 27
Thanked 210 Times in 152 Posts
VP: 0.00
Donate
Send a message via MSN to Chip Send a message via Yahoo to Chip Send a message via Skype™ to Chip
Giới thiệu với các bạn cách cài đặt Apache2 với module mod_fcgid và PHP5 trên OpenSUSE 11.2. Về bản chất, module mod_fcgid là 1 sự thay thế hoàn hảo của mod_fastcgi, module này cho phép người dùng thực thi các đoạn mã PHP với sự cho phép của người dùng bên trong các tài khoản Apache. Lưu ý sơ bộ
Trong bài viết này chúng ta sử dụng hệ thống OpenSUSE 11.2 server cùng với hostname server1.example.com và địa chỉ IP 192.168.0.100, đồng thời tạo 2 Apache vhost là [Chỉ có thành viên mới thấy links này. ][Chỉ có thành viên mới thấy links này. ], để mô phỏng phương thức sử dụng mod_fcgid.
Cài đặt Apache2/mod_fcgi/PHP5
Để cài đặt những thành phần trên, chúng ta sử dụng câu lệnh sau:
yast2 -i apache2 apache2-mod_fcgid php5-fastcgi
Nếu Apache2 đã được cài đặt sẵn với PHP5 như 1 phần module của Apache, tắt bỏ module PHP5 như sau:
a2dismod php5
Tiếp theo, kích hoạt 2 module suexec và fcgid:
a2enmod suexec
a2enmod fcgid

Tạo đường dẫn khởi động của Apache:
chkconfig --add apache2
/etc/init.d/apache2 start

Mở file /etc/php5/fastcgi/php.ini …:
vi /etc/php5/fastcgi/php.ini
và chú thích các đoạn mã như sau:
[...]
; 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.
; [Chỉ có thành viên mới thấy links này. ]
cgi.fix_pathinfo=1
[...]

Sau đó khởi động lại Apache:
/etc/init.d/apache2 restart
Tạo vhost cho [Chỉ có thành viên mới thấy links này. ][Chỉ có thành viên mới thấy links này. ]
Việc tiếp theo của chúng ta là tạo 2 vhost, [Chỉ có thành viên mới thấy links này. ] (với thư mục tài liệu root /srv/www/web1/web) và [Chỉ có thành viên mới thấy links này. ] (thư mục tài liệu root tại /srv/www/web2/web). Trong đó, [Chỉ có thành viên mới thấy links này. ] được sở hữu bởi người dùng và nhóm web1, [Chỉ có thành viên mới thấy links này. ] thuộc về người dùng và web2.
Trước tiên, tạo tài khoản người dùng và nhóm:
groupadd web1
groupadd web2
useradd -s /bin/false -d /srv/www/web1 -m -g web1 web1
useradd -s /bin/false -d /srv/www/web2 -m -g web2 web2
chmod 755 /srv/www/web1
chmod 755 /srv/www/web2

Sau đó tạo thư mục tài liệu root và tạo quyền chứng thực, sở hữu thuộc về web1 và web2:
mkdir -p /srv/www/web1/web
chown web1:web1 /srv/www/web1/web
mkdir -p /srv/www/web2/web
chown web2:web2 /srv/www/web2/web

Sau đó chạy PHP sử dụng suExec, thư mục tài liệu root của suExec tại /srv/www:
/usr/sbin/suexec2 -V

server1:~ # /usr/sbin/suexec2 -V
-D AP_DOC_ROOT="/srv/www"
-D AP_GID_MIN=96
-D AP_HTTPD_USER="wwwrun"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=96
-D AP_USERDIR_SUFFIX="public_html"
server1:~ #

Do đó chúng ta không thể gọi được các file PHP thực thi lệnh (/usr/bin/php-cgi) trực tiếp vì nó được lưu trữ bên ngoài thư mục tài liệu root của suExec. Nhưng suExec không chấp nhận các symlink, phương pháp duy nhất để giải quyết vấn đề này tạo mã wrap tương ứng cho mỗi web site trong từng thư mục con của /srv/www; các đoạn mã wrap này sẽ có chức năng gọi file thực thi PHP /usr/bin/php-cgi. Và, những đoạn mã wrap này phải được quản lý và sở hữu trực tiếp bởi tài khoản người dùng và nhóm tương ứng của các web site, tại đây chúng ta sẽ tạo mã wrap trong thư mục con của /srv/www/php-fcgi-scripts, ví dụ như /srv/www/php-fcgi-scripts/web1 /srv/www/php-fcgi-scripts/web2.
mkdir -p /srv/www/php-fcgi-scripts/web1
mkdir -p /srv/www/php-fcgi-scripts/web2

vi /srv/www/php-fcgi-scripts/web1/php-fcgi-starter

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

Dòng PHPRC chứa thông tin về thư mục nơi file php.ini được lưu trữ (ví dụ /etc/php5/fastcgi/ thành /etc/php5/fastcgi/php.ini). Trong đó PHP_FCGI_MAX_REQUESTS là số lượng yêu cầu tối đa trước khi quá trình fcgid dừng lại và quá trình mới tiếp tục. PHP_FCGI_CHILDREN định nghĩa số lượng “PHP children” sẽ được kích hoạt.
Các đoạn mã php-fcgi-starter phải được kích hoạt:
chmod 755 /srv/www/php-fcgi-scripts/web1/php-fcgi-starter
chmod 755 /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
chown -R web1:web1 /srv/www/php-fcgi-scripts/web1
chown -R web2:web2 /srv/www/php-fcgi-scripts/web2

Tiếp theo, tạo vhost Apache của [Chỉ có thành viên mới thấy links này. ][Chỉ có thành viên mới thấy links này. ]:
vi /etc/apache2/vhosts.d/www.example1.com.conf

<VirtualHost *>
ServerName [Chỉ có thành viên mới thấy links này. ]
ServerAlias example1.com
ServerAdmin [Chỉ có thành viên mới thấy links này. ]
DocumentRoot /srv/www/web1/web/

<IfModule mod_fcgid.c>
SuexecUserGroup web1 web1
PHP_Fix_Pathinfo_Enable 1
<Directory /srv/www/web1/web/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /srv/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>

vi /etc/apache2/vhosts.d/www.example2.com.conf

<VirtualHost *>
ServerName [Chỉ có thành viên mới thấy links này. ]
ServerAlias example2.com
ServerAdmin [Chỉ có thành viên mới thấy links này. ]
DocumentRoot /srv/www/web2/web/

<IfModule mod_fcgid.c>
SuexecUserGroup web2 web2
PHP_Fix_Pathinfo_Enable 1
<Directory /srv/www/web2/web/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /srv/www/php-fcgi-scripts/web2/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>

Hãy chắc chắn các bạn đã nhập đúng địa chỉ đường dẫn và các tham số kỹ thuật cần thiết (với đúng tài khoản user và nhóm trong dòng khai báo SuexecUserGroup)


Mở file /etc/apache2/httpd.conf và thêm dòng NameVirtualHost * vào trước Include /etc/apache2/vhosts.d/*.conf (nếu không thì chỉ có vhost đầu tiên hoạt động):
vi /etc/apache2/httpd.conf

[...]
### Virtual server configuration ##########################################
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs-2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
NameVirtualHost *

Include /etc/apache2/vhosts.d/*.conf
[…]
Trước khi khởi động lại Apache, chúng ta cần thay đổi các thiết lập và xác nhận quyền hạn của việc thực thi suExec (nếu không thì mỗi lần khởi động Apache thì bạn sẽ nhận được cảnh báo: Warning: SuexecUserGroup directive requires SUEXEC wrapper):
chmod 4755 /usr/sbin/suexec2
Và sau đó khởi động lại Apache như bình thường:
/etc/init.d/apache2 restart
Kiểm tra
Để kiểm tra, chúng ta sẽ tạo file test PHP nho nhỏ, như ví dụ với web site [Chỉ có thành viên mới thấy links này. ]:
vi /srv/www/web1/web/info.php

<?php
phpinfo();
?>

và sau đó gọi file đó qua trình duyệt ([Chỉ có thành viên mới thấy links này. ]). Nếu tất cả quá trình trên hoạt động đúng chức năng, bạn sẽ nhìn thấy kết quả tương tự như sau, đồng thời sẽ thấy hàm CGI/FastCGI trong dòng Server API:
Tùy chỉnh file php.ini cho mỗi web site
Trên thực tế, mỗi web site đều có mã wrap php-fcgi-starter của riêng nó, do đó hoàn toàn có thể tạo các file php.ini riêng biệt đối vơi mỗi web site thành phần. Để mô phỏng quá trình này, chúng ta sẽ copy file php.ini mặc định (/etc/php5/fastcgi/php.ini) tới thư mục /srv/www/web2/ và làm cho [Chỉ có thành viên mới thấy links này. ] gọi file php.ini trực tiếp từ thư mục /srv/www/web2/:
cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini

(tại đây, các bạn có thể /srv/www/web2/php.ini theo ý thích)
Tiếp theo, mở file /srv/www/php-fcgi-scripts/web2/php-fcgi-starter …:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter
và chèn thêm tham số /srv/www/web2/ vào trong dòng PHPRC:
#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

Sau đó khởi động lại Apache:
/etc/init.d/apache2 restart
Tiếp đó, tạo thêm file phpinfo(); mới dành cho [Chỉ có thành viên mới thấy links này. ]…:
vi /srv/www/web2/web/info.php

<?php
phpinfo();
?>

và tiếp tục gọi file đó ra bằng trình duyệt ([Chỉ có thành viên mới thấy links này. ]). Dòng tham số Loaded Configuration File sẽ chỉ ra file /srv/www/web2/php.ini:
Thay đổi cấu trúc PHP đơn
Thay vì việc đi qua file php.ini mới tới toàn bộ web site, các bạn có thể áp dụng phương pháp thay đổi thiết lập PHP trong mã wrap php-fcgi-starter (hoặc sử dụng cách kết hợp cả 2) bằng cách thêm tham số -d để chuyển sang chế độ thực thi PHP. Ví dụ, nếu ta muốn tắt bỏ module magic_quotes_gpc của [Chỉ có thành viên mới thấy links này. ] thì sẽ làm như sau:
vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off

Và khởi động lại Apache:
/etc/init.d/apache2 restart
Tiếp tục, gọi file info.php bằng trình duyệt ([Chỉ có thành viên mới thấy links này. ]) và tìm kiếm dòng magic_quotes_gpc, trình duyệt sẽ chỉ ra tình trạng Off:
Chúc các bạn thành công!


T.Anh (Howtoforce)

Bài viết cùng chủ đề:

Ch? ký c?a Chip

Y!M: vinacis_sale01 ; vinacis_sale02
HostExpress® - Hệ thống đăng ký Hosting tự động.
DinoVPS - Sự kết tinh của các thiết bị đỉnh nhất

Dino Server - - -

Chip vẫn chưa có mặt trong diễn đàn  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Trả Lời Với Trích Dẫn
Trả lời

Bookmarks

Tags
apache2, cài đặt, hướng dẫn, mod_fcgid, opensuse, php5, thủ thuật


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh Kiếm Trong Bài
Kiếm Trong Bài:

Kiếm Chi Tiết
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở

Chuyển đến



Múi giờ GMT. Hiện tại là 01:50 PM.
Powered by: vBulletin - Copyright © 2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.AdminTalk.vn
Powered by vBCMS® 1.2.5 ©2002 - 2012 VinaCIS® Corporation