Hướng dẫn biên dịch Apache & PHP

Như bài trước Tôi đã nói qua cách để biên dịch và tự cài đặt 1 ứng dụng theo ý muốn, trong bài này Tôi sẽ hướng dẫn các bạn biên dịch gói tin Apache và PHP.

Bước 1 – Cài đặt gcc (nếu chưa có): 

Đầu tiên bạn cần kiểm tra xem đã có trình biên dịch hay chưa với lệnh RPM, YUM,… hoặc biên dịch thử gói tin nếu nhận được thống báo bên dưới có nghĩa hệ thống của bạn chưa có sẵn.

yum install gcc -y

Bước 2 – Download & giải nén ứng dụng (httpd, php)

Tạo thư mục lưu trữ và tiền hành cài đặt sau khi tải về.

mkdir ~/download && cd ~/download

wget http://www.gtlib.gatech.edu/pub/apache//httpd/httpd-2.2.29.tar.gz

wget http://am1.php.net/get/php-5.3.29.tar.gz

tar -xzvf httpd-2.2.29.tar.gz

tar -xzvf php-5.3.29.tar.gz

Bước 3 – Biên dịch và cài đặt ứng dụng

Cài đặt HTTP-daemon:

Yêu cầu:

  • Không gian ổ cứng trống: cần tối thiểu 50MB trong quá trình build ứng dụng, HTTPd sẽ chiếm 10MB sau khi cài đặt, tuy nhiên, dung lượng sẽ thay đổi tùy theo module bạn sử dụng thêm.
  • apr/apr-util: Cần Apr/Apr-util phiên bản 1.2 trở lên.

Kiểm tra apr/apr-util:

rpm -qa | grep apr

apr_aprutil_require

Kiểm tra sự tồn tại của gói APR

apr/apr-util đã đạt yêu cầu (phiên bản >= 1.2) nên ta bỏ qua và làm bước tiếp theo tạo thư mục cài đặt cho ứng, nếu khộng đạt yêu cần bạn có thể dùng Yum để update hoặc cài đặt hoặc có thể tìm hiểu cách biên dịch gói apr/apr-util thông qua bài viết này:

mkdir -p /usr/local/webserver/apache

cd httpd-2.2.29

./configrue --prefix=/usr/local/webserver/apache --enable-rewrite=shared \

--enable-speling=shared \ 

--enable-vhost-alias

Các tùy chọn:

–prefix=<đường dẫn>: chỉ đường dẫn cài đặt cho ứng dụng

–enable-rewrite=shared: bật tính năng rewrite theo cơ chế DSO cho phép viết lại đường dẫn URL. Tính năng này rất thích hợp đa số các website muốn rewrite đường dẫn URL của website.

–enable-speling=shared: bật tính năng tự động độ dò tìm đường dẫn phù hợp khi có request sai chính tả theo cơ chế DSO.

Note: Cách trên sẽ build Apache với chức năng Rewrite Link và check Speling ở mode DSO. Bạn có thể thay thế 2 option đó thành “–enable-so” để build tất cả chức năng của Apache chạy ở chế độ DSO.

Sau khi kiểm tra và thêm các thành phần thành công (không lỗi) từ tập tin configure ta tiến hành tạo các tập tin biên dịch và cài đặt chúng thông qua lệnh:

make && make install

Với câu lệnh trên (&&) hệ thống sẽ tiến hành cài đặt sau khi tạo tập tin biên dịch thành công (không lỗi), nếu không nó sẽ ngừng lại ở vế lệnh make.

Cài đặt thành công Apache, ta khởi động dịch vụ:

cd /usr/local/webserver/apache/bin/

apachectl start

kiểm tra dịch vụ Apache đã start thành công hay chưa, Ta có thể dùng 2 cách (kiểm tra bằng dòng lệnh “netstat -ptl” hoặc dùng trình duyệt web)

Kiểm tra hệ thống đang mở Port nào cho Apache (Apache có đang chạy hay không)

Kiểm tra hệ thống có đang lắng nghe giao thức http (apache) hay không.

Kiểm tra Apache server bằng cách dùng WebBrowsers

Kiểm tra Apache server bằng cách dùng WebBrowsers

Như vậy, Apache đã được build thành công, tiếp theo ta sẽ build PHP với các option cơ bản:

cd <source php>

./configure --with-apxs2=/usr/local/webserver/apache/bin/apxs \

--with-mysql --enable-mbstring --with-zlib

(chờ script kiểm tra và thiết lập hoàn tất)

make && make install

Compile_PHP

Biên dịch gói tin PHP

--with-apxs2: chỉ định PHP cài đặt theo Apache shared module.

--with-mysql: cho phép hỗ trợ cho việc truy cập cơ sở dữ liệu (csdl) thông qua PHP.

--enable-mbstring: cho phép hỗ trợ mbstring (sử dụng cho PHPMyAdmin)

--with-zlib: hỗ trợ zlib

Sau khi đã Build PHP ta cần chỉnh kiểm tra và chỉnh sửa 1 chút trong tập tin cấu hình của apache để có thể load php module và thiết lập handler php cho apache.

cd /usr/local/webservers/apache/

vi conf/http.conf

Kiểm tra xem Apache đã load php với dòng (LoadModule php5_module) với từ khóa LoadModule và thêm xử lý Handler php cho Apache bằng cách chèn thêm dòng (AddType application/x-httpd-php .php) như trong hình dưới.

edit_http_loadModule_php5

Kiểm tra Apache Load Module PHP

Edit_http_AddType_HandlerPHP

Chèn thêm dòng chỉ định Apache xử lý code php

Tất cả đã OK ta lưu đóng tập tin lại, tiến hành kiểm tra và khởi động lại dịch vụ Apache.

Restart_Apache_After_config_http_load_php Note:

Thông thường khi tự biên dịch Apache sẽ không có tập tin kịch bản để khởi động trong /etc/init.d/ vì vậy Bạn có thể tìm 1 script trên mạng và chỉnh sửa theo cấu hình đường dẫn của mình để có thể dễ dàng thao tác với Apache hơn.

 

Kiểm tra kết quả:

Kiểm tra Apache đã Load PHP hay chưa:

cd <Apache>

 bin/apachectl -t -D DUMP_MODULES | grep php

hoặc (2 lệnh này tương đương nhau)

 bin/apachectl -M | grep php

Check_Apache_LoadModules

Kiểm tra Apache Load Module PHP

Ta tạo 1 tập tin php với nội dung <?php echo phpinfo(); ?> trong thư mục <Apache>/htdocs/php.php 

dùng lệnh (sử dụng cho local thích hợp với người thích dùng dòng lệnh):

lynx http://localhost/php.php

Check_php_installed_with_lynx

hoặc dùng WebBrowser:

Check_php_installed_with_WebBrowser

Như vậy, việc biên dịch và cài đặt Apache và PHP đã thành công với các tùy chọn cũng như xử dụng các tính năng cở bản đã thành công.

Bonus – Một số lỗi thường gặp khi biên dịch PHP

1. Lỗi không tìm thấy libmysqlclient.

Lỗi không tìm thấy libmysqlclient

Lỗi không tìm thấy libmysqlclient

– Lỗi này nguyên nhân do hệ thống khi biên dịch không tìm thấy libmysqlclient (với các tùy chọn mặc định của libdir) thông thường xảy ra do bạn dùng hệ thống 64bits. Vì vậy để giải quyết bạn chỉ cần thêm option --with-libdir=lib64)

Khắc phục lỗi không tìm thấy libmysqlclient

Khắc phục lỗi không tìm thấy libmysqlclient

2. Lỗi không tìm thấy xml2-config.

Lỗi không tìm thấy xml2-config

Lỗi không tìm thấy xml2-config

– Nguyên nhân thư viện XML cho phép thao tác tập tin XML, để khắc phục bạn có thể dùng YUM để cài đặt gói tin libxml2-devel tự động hoặc download source và build.

 

Chúc Bạn thành công!

Theo httpd.apache.org

php.net

 

Comments

comments