cài đặt nginx + php-fpm + mysql

Upload: tuanfet2005

Post on 06-Jul-2018

261 views

Category:

Documents


0 download

TRANSCRIPT

  • 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