Upload
tuanfet2005
View
261
Download
0
Embed Size (px)
Citation preview
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
1/16
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
2/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 2/16
Mục tiêu: Giúp các bạn hiểu sơ về web server sử dụng Nginx, PHP-FPM . Các bạn có thể setup đơn giản nhất webserver chạy bằng Nginx , PHP-FPM và
Mysql
Tại sao là Nginx không phải là Apache hay là một web server khác ?
Nginx là open source, free , high performance HTTP server , chủ yếu tập trung vào vấn đề xử lý request ở cùng một thời điểm , tối ưu tài nguyên cho hệ
thống như RAM, CPU .
Các bạn có thể tham khảo thêm thông tin ở link sau: Thấy tài liệu này cũng khá đủ, giải thích cũng khá chi tiết. Nếu tôi viết lại thì chắc là cũng dịch từ tài
liệu bên dưới . He he. Thôi các bạn tự đọc vậy.
http://www.aosabook.org/en/nginx.html (http://www.aosabook.org/en/nginx.html)
PHP-FPM là gì ? Tại sao lại chọn nó ?
Để hiểu đượ c PHP-FPM là gì ? Thì trước hết các bạn phải hiểu được cơ chế x ử lý của web server.
Vậy làm thế nào webserver chạy được web viết bằng php, python, hay ruby …
Chẳng qua là webserver sẽ gọi những chương trình có thể hiểu được PHP, Python, ruby, xử lý những request và trả về thông tin cho
webserver từ đó trả về thông tin cho browser. Như hình bên dưới:
(http://azsysadmin.com/wp-content/uploads/2014/04/cgi0101.gif)
http://azsysadmin.com/wp-content/uploads/2014/04/cgi0101.gifhttp://www.aosabook.org/en/nginx.html
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
3/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 3/16
Vậy CGI là phương pháp giúp web server gọi những chương trình có thể hiểu được ( PHP, Ruby, Python ) để xử lý những request và trả về dữ liệu cho
browser.
Mỗi lần gọi CGI Program’s để xử lý thì tạo một process để xử lý. Vậy mỗi request sinh ra 1 process để xử lý. Việc này làm tốn tài nguyên của hệ thống
như CPU và RAM, nếu trong trường hợp heavy load đễ gây ra crash hệ thống.
Nên Fast CGI ra đời, với cơ chế persistent processes ( có thể hiểu là process nó luôn luôn ở chạy ở trạng thái luôn luôn chờ có một request tới để xử lý )
có thể xử lý nhiều request cùng một lúc. Chính vì điều này , tránh khỏi việc mỗi request tạo ra một process để xử lý, nên sử dụng tài nguyên hiệu quả hơn.
Như vậy các bạn đã hiểu rõ sơ về khái nhiệm GCI, Fast CGI.
Vậy PHP -FPM là gì ?
PHP-FPM (FastCGI Process Manager) là FastCGI với thêm một vài tính năng hỗ trợ khi site heavy load.
Trong danh sách tíng năng thì tính năng này được nói đầu tiên:
advanced process management with graceful stop/start;
Đơn giản nếu bạn dùng fast-cgi thuần tí, thì các bạn thay đổi config thì các bạn phải s top/start lại fast-cgi, như v ậy thì site sẽ down một v ài phút.
Còn với php-fpm thì các bạn có thể thay đổi config và reload lại, không làm site bị down.
Tính năng khác thêm vào các bạn có thể tham khảo ở đây:
http://www.php.net/manual/en/install.fpm.php (http://www.php.net/manual/en/install.fpm.php)
V ậ y là các bạn hiểu đ ượ c sơ sơ vềcác khái ni ệm.Bây h vào mục chính là
Cài đặt Nginx + PHP-FPM + MySQL
Nếu bạn sử dụng EC2 thì trước khi cài đặt bạn chỉnh thời gian, và một số gói cần thiết :
1234
sudo ln -sf /usr/share/zoneinfo/Asia/Saigon /etc/localtimesudo yum install pcre-devel zlib-devel openssl-develsudo yum install gccsudo yum install make
http://www.php.net/manual/en/install.fpm.php
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
4/16
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
5/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 5/16
Thêm dòng include thư mục sites-enabled vào config chính của nginx.
Ví dụ, tôi tạo một Vhost là mysite để config cho trang web mysite.com chẳng hạn. Tạo virtual host mysite file trong thư mục /usr/local/nginx/sites-available
Trước mắt tôi tạo những thư mục sau:
public_html: thư mục web của bạn
logs: thư mục log, thì có access log, error log.
12
mkdir /usr/local/nginx/sites-availablemkdir /usr/local/nginx/sites-enabled
1 sudo vi /usr/local/nginx/conf/nginx.conf
1 include /usr/local/nginx/sites-enabled/*;
1
23
mkdir -p /srv/www/mysite/public_html
mkdir -p /srv/www/mysite/logschown -R nginx:nginx /srv/www/mysite
1234567891011121314151617181920
sudo vi /usr/local/nginx/sites-available/mysite server {server_name mysite.com;access_log /srv/www/mysite/logs/access.log;error_log /srv/www/mysite/logs/error.log;root /srv/www/mysite/public_html; location / {index index.html index.htm index.php;} location ~ \.php$ {try_files $uri =404;# Include the standard fastcgi_params file included with nginxinclude fastcgi_params;fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
6/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 6/16
Tạo soft link những Vhost nào enable. Như trong phần này tôi enable vhost mysite
Tạo script restart Nginx:
Copy và Paste:
2122
}}
1 ln -s /usr/local/nginx/sites-available/mysite /usr/local/nginx/sites-enabled/mysite
1 sudo vi /etc/init.d/nginx
12345
678910111213141516
171819202122232425262728
#!/bin/sh## nginx - this script starts and stops the nginx daemin## chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \# proxy and IMAP/POP3 proxy server# processname: nginx# config: /usr/local/nginx/conf/nginx.conf# pidfile: /usr/local/nginx/logs/nginx.pid # Source function library.. /etc/rc.d/init.d/functions # Source networking configuration.. /etc/sysconfig/network
# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/sbin/nginx"prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" lockfile=/var/lock/subsys/nginx start() {
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
7/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 7/16
293031323334
353637383940414243444546
4748495051525354555657585960616263646566676869
[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6echo -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo
[ $retval -eq 0 ] && touch $lockfilereturn $retval} stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval}
restart() {configtest || return $?stopstart} reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo} force_reload() {restart} configtest() {$nginx -t -c $NGINX_CONF_FILE}
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
8/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 8/16
707172737475
767778798081828384858687
888990919293949596979899100101102103104105106
rh_status() {status $prog} rh_status_q() {rh_status >/dev/null 2>&1
} case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)
$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2esac
12
sudo chmod +x /etc/init.d/nginxsudo /etc/init.d/nginx start
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
9/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 9/16
PHP-FPM Configuration
Auto Start Nginx, PHP-FPM, and MySQL in EC2 Amazon Linux
Kiểm tra cấu hình Nginx and FastCGI:
Tạo file index.php
(/srv/www/mysite/public_html/index.php):
Vào browser và gõ địa chỉ IP và xem kết quả.
Chúc bạn thành công
(http://www.hupso.com/share/)
Tweet 02Like Share
1 sudo vi /etc/php-fpm.d/www.conf
12
3456789
[...]listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginxlisten.group = nginxlisten.mode = 0664 user = nginxgroup = nginx[...]
1 sudo vi /etc/php.ini
1 cgi.fix_pathinfo=0
123
chkconfig nginx onchkconfig mysqld onchkconfig php-fpm on
https://twitter.com/intent/tweet?original_referer=http%3A%2F%2Fazsysadmin.com%2Fcai-dat-nginx-php-fpm-mysql%2F&ref_src=twsrc%5Etfw&text=C%C3%A0i%20%C4%91%E1%BA%B7t%20Nginx%20%2B%20PHP-FPM%20%2B%20MySQL&tw_p=tweetbutton&url=http%3A%2F%2Fazsysadmin.com%2Fcai-dat-nginx-php-fpm-mysql%2Fhttp://www.hupso.com/share/
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
10/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 10/16
Prev Post Next Post
Các Bài Viết Liên Quan:
Set up nginx +gunicorn +
(http://azsysadmin.com/set-
nginx-gunicorn-
supervisord/)
Phân quyền cơ bảncủa MySQL
(http://azsysadmin.com/phan-
quyen-co-ban-cua-
mysql/)
Cấu hình MysqlReplication
(http://azsysadmin.com/cau-
hinh-mysql-
replication/)
Fix mysql slaveerror 1594
(http://azsysadmin.com/fix-
mysql-slave-error-
1594/)(http://azsy sadmin.com/huong-dan-tao-vps-amazon-ec2/) (http://azsysadmin.com/mua-va-quan-ly-domain-nhu-the-nao/)
5 Comments 1
• •
Nhật Minh •
Hi bạn, mình đã cài PHP-FPM (Centos 6.5) , nhưng trên commandline , mình không thể nào sử dụng được lệnh php ? Vì mình cần
xài lệnh này để cài composer và laravel framework. (Mình được biết khi cài PHP-FPM đã có PHP sẵn rồi )
• •
ankhoa011 • Mod
Chào bạn. Mình nghĩ là bạn thiếu php-cli rồi. Bạn có thể thử cài bằng cách yum install php5 -cli thử xem.
https://disqus.com/by/nhtminh/http://azsysadmin.com/huong-dan-tao-vps-amazon-ec2/https://disqus.com/home/forums/azsysadmincom/https://disqus.com/home/inbox/https://disqus.com/by/vankhoa011/https://disqus.com/by/nhtminh/http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2290112248http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2290294359https://disqus.com/by/vankhoa011/http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2290112248https://disqus.com/by/nhtminh/https://disqus.com/home/inbox/https://disqus.com/home/forums/azsysadmincom/http://azsysadmin.com/mua-va-quan-ly-domain-nhu-the-nao/http://azsysadmin.com/huong-dan-tao-vps-amazon-ec2/http://azsysadmin.com/fix-mysql-slave-error-1594/http://azsysadmin.com/cau-hinh-mysql-replication/http://azsysadmin.com/phan-quyen-co-ban-cua-mysql/http://azsysadmin.com/set-nginx-gunicorn-supervisord/
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
11/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 11/16
• •
Nhật Minh •
ah , thanks bạn nhé, mình setup được rồi, mình cứ nghĩ hocvps script đã được setup php-cli, thì ra là nó chưa được
cái php-cli ^^
• •
haodt •
Hi bạn, cho mình hỏi khi config vhost file cho site trong nginx, khi nào thì mình sẽ để param fastcgi_pass là
fastcgi_ pass unix:/var/run/php-fpm/php-fpm.sock;
và khi nào là:
fastcgi_pass 127.0.0.1:9000;
2 cái này khác nhau như thế nào? Có lợi ích cũng như nhược điểm gì đối với 2 config param đó?
Thank bạn nhiều.
ankhoa011 • Mod
Chào bạn.
Câu trả lời bạn có thể ở đây, cũng khá đầy đủ.
http://serverfault.com/questio...
Thì dựa vào ở trên thì bạn sẽ biết khác nhau như thế nào. Đương nhiên là unix socket tốt hơn tcp socket vì tránh được một
số thứ như routing ...
Còn nếu dùng TCP IP , thì bạn có thể loadbancing được, Ví dụ bạn có 2 server chạy php-fpm, và bạn config nginx thế này
fastcgi_pass fpm_backend;
upstream fpm_backend {
server 192.168.100.101:9000;
https://disqus.com/by/nhtminh/https://disqus.com/by/vankhoa011/https://disqus.com/by/thaodt/https://disqus.com/by/nhtminh/http://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-sockethttp://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2148807813http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2148895449https://disqus.com/by/vankhoa011/http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2148807813https://disqus.com/by/thaodt/http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2290294359http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/#comment-2290309626https://disqus.com/by/nhtminh/
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
12/16
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
13/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 13/16
(http://azsysadmin.com/set-
nginx-
gunicorn-
supervisord/)
(http://azsysadmin.com/build-
apache-
source/)
(http://azsysadmin.com/cach-
tao-swap-
file-cho-linux/)
(http://azsysadmin.com/fix-
mysql-
slave-
Recent Posts
Set up nginx + gunicorn + supervisord. (http://azsysadmin.com/set-nginx-gunicorn-supervisord/)
Build Apache from source. (http://azsysadmin.com/build-apache-source/)
Cách tạo swap file cho Linux (http://azsysadmin.com/cach-tao-swap-file-cho-linux/)
Fix mysql slave error 1594 (http://azsysadmin.com/fix-mysql-slave-error-1594/)
http://azsysadmin.com/fix-mysql-slave-error-1594/http://azsysadmin.com/cach-tao-swap-file-cho-linux/http://azsysadmin.com/build-apache-source/http://azsysadmin.com/set-nginx-gunicorn-supervisord/http://azsysadmin.com/fix-mysql-slave-error-1594/http://azsysadmin.com/cach-tao-swap-file-cho-linux/http://azsysadmin.com/build-apache-source/http://azsysadmin.com/set-nginx-gunicorn-supervisord/
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
14/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 14/16
error-
1594/)
(http://azsysadmin.com/cau-
hinh-
mysql-
replication/)
Cấu hình Mysql Replication (http://azsysadmin.com/cau-hinh-mysql-replication/)
Ads
http://azsysadmin.com/cau-hinh-mysql-replication/http://azsysadmin.com/cau-hinh-mysql-replication/http://azsysadmin.com/fix-mysql-slave-error-1594/
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
15/16
5/5/2016 Cài đặt Nginx + PHP-FPM + MySQL
http://azsysadmin.com/cai-dat-nginx-php-fpm-mysql/ 15/16
http://d.adroll.com/r/N34ZPOW5TRGMJKDEFHM2G4/U6PZANHGRBHQFBIDRUUZ3E/dff6f8811315f9056ff1451831236747.re?adroll_ad_payload=AHhhcC1zb3V0aGVhc3QtMWIAGDExNwA4MTk2ODM2NAAQNTgAiGJsYWNrX2JveF9wcmljaW5nABA2MAAoMTM2MDEAEDkyARgyNjk3NjkxNjEyMTY3NzQ3MjI2NjIyNDI5MzYyNzIxODg3MgAQNzAAEC0xABgxMjQAEC0xABgxMjUAsDRBUFZET01BUkpBRDVCRVJHRU1GUEwAEDI2ALBLN1c1UElSV0ZaQjc1RUlQM0c4UFJPABA1NgA4MTIwMzYzOQAYMjAzADg5ODYxNTQxABgyMDIBGDI2OTc2OTE2MTIxNjc3NDc1MTIxODk3MDYyMzc1NjU5NzY0ABgyMDQAkHsiZXZpZG9uX3QiOjE1MDAwfQAYMjUwACAwLjQ0ABgyNTMACHQAIDExMDAACGYAEDc1ALBNQ1BKWEVIVkhKRFNYUE5HVENNVEk3AAg0AFhwcm9zcGVjdGluZwAgMTQ1MAAAABgxMzcAUDE0NjI0MjE1NTMAGDE1NQAIMwAQNzEACDMAEDc4AAgzABgxNjIAEDEyABgxNjQACHQAGDE2MwEAYWNmY2UwNzA0MWJhOGJhYzAwYTMwODVkNzk1OTExZTUAGDcxMgA4MTcyNjY0MAAYNjAwADgxOTY4MzY0ABg2MDYAUHNxcHVnX3Y1XzQAGDYwMQAIdAAYNjAyADgxMTQwMDAwABg2MDUAEHZpABgxMzIACGYAGDEwNAAIMQAQOTQAcEJFTE9XX1RIRV9GT0xEABA5OABQMjk4MDk3Nzk0NQAYMTI5&adroll_subnetwork=r&cpm=VyrIMQAD2EMKaB6PAABJhPNUl4SxxwOh0UjSAw&adroll_network=g&clickurl=https://adclick.g.doubleclick.net/aclk%3Fsa%3DL%26ai%3DCd79BMcgqV8OwD4-9oAOEk4GQD77xhJEF7oarw03AjbcBEAEgAGDBrfoNggEXY2EtcHViLTQ5ODg0MDg4NDgxMjU5OTfIAQmoAwGqBJ4BT9DgJ536G88zFU3twwFY4bZlaHnlXwxqCaAWF-Wt3QTxo5aTUMFZoM7w1jk6S-7yepwQNspFex_JEJq8QIQCBYvKMHTNPANcbpC74eNVFD4CBojxrL5Cmw7BqMMxXyzNQudN-BpClctZQhdZTFf9mIYeDf9oZUpvBWaExvnrhqZ8rP4vAHeeqH9y_Gl2hqSpqFzeYYsK40PorY4dQmeABt3c9q7pqMy-d6AGIagHpr4b2AcA%26num%3D1%26sig%3DAOD64_0Tt78hoWw1FM1NTDpwfdGJJW__6g%26client%3Dca-pub-4988408848125997%26adurl%3D
8/17/2019 Cài đặt Nginx + PHP-FPM + MySQL
16/16