1. 程式人生 > >十二周一次課

十二周一次課

lnmp mysql php-fpm nginx

12.1 LNMP架構介紹

簡介

  • LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。
  • Linux是一類Unix計算機操作系統的統稱,是目前最流行的免費操作系統。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
  • Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。
  • Mysql是一個小型關系型數據庫管理系統。
  • PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。
  • 這四種軟件均為免費開源軟件,組合到一起,成為一個免費、高效、擴展性強的網站服務系統。

    特點

  • Nginx是一個小巧而高效的Linux下的Web服務器軟件,是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler 站點開發的,已經在一些俄羅斯的大型網站上運行多年,相當的穩定。
  • Nginx性能穩定、功能豐富、運維簡單、處理靜態文件速度快且消耗系統資源極少。

    優點

  • 作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的並發連接,體現更高的效率。
  • 作為負載均衡服務器:Nginx 既可以在內部直接支持Rails和PHP,也可以支持作為 HTTP代理服務器對外進行服務。Nginx 用C編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好的多。
  • 作為郵件代理服務器:Nginx同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last/fm 描述了成功並且美妙的使用經驗。
  • Nginx 安裝非常的簡單,配置文件非常簡潔(還能夠支持perl語法)。Nginx支持平滑加載新的配置,還能夠在不間斷服務的情況下進行軟件版本的升級。

    安裝包

軟件
Nginx、MySQL、PHP、PHPMyAdmin、Apache(可選)、Zend Optimizer(可選)、eAccelerator(可選)、ionCube(可選)、PureFTPd(可選)、VsFTPd(可選)
技術分享圖片

  • 和LAMP不同的是,提供web服務的是Nginx
  • 並且php是作為一個獨立服務存在的,這個服務叫做php-fpm
  • Nginx直接處理靜態請求,動態請求會轉發給php-fpm

    12.2 MySQL安裝

    cd /usr/local/src

    wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //下載二進制包
    tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  //解壓
    mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql  //移動到目標目錄
    cd /usr/local/mysql
    useradd mysql //添加mysql用戶
    mkdir /data/   //創建數據目錄
    ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  //初始化數據庫
    cp support-files/my-default.cnf  /etc/my.cnf  //拷貝mysql配置文件
    
 cp support-files/mysql.server /etc/init.d/mysqld  //拷貝啟動腳本
 vim /etc/init.d/mysqld
定義basedir和datadir
 /etc/init.d/mysqld start

添加到自啟動

 chmod 755 /etc/init.d/mysqld
 chkconfig --add mysqld
 chkconfig mysqld on 

12.3/12.4 PHP安裝

下載

axel http://mirrors.sohu.com/php/php-7.1.10.tar.bz2 //下載源碼包

解壓縮

[root@localhost ~]# tar xjvf php-7.1.10.tar.bz2 //解壓php安裝包

編譯與安裝

[root@localhost ~]# cd php-7.1.10
[root@localhost php-7.1.10]# ./configure \ //個性化配置
--prefix=/usr/local/php --with-mysql-sock=/usr/local/mysql/mysql.sock --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer --enable-zip \ //支持壓縮功能
--enable-fpm //支持動態頁面fpm功能

(註意:由於內容較多,一定要檢查最後是否漏掉,特別是最後一項)

[root@localhost php-7.1.10]# make //編譯
[root@localhost php-7.1.10]# make install //安裝

編輯配置文件

[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini //創建php配置文件
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini //編譯php配置文件
修改以下內容:
mysqli.default_socket = /usr/local/mysql/mysql.sock //將php與Mysql關聯
date.timezone = Asia/Shanghai //設置時區
保存退出
[root@localhost php-7.1.10]# /usr/local/php/bin/php –m //驗證安裝的模塊

配置及優化FPM模塊

[root@localhost php-7.1.10]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf //復制php的fpm模塊的配置文件模板為配置文件。php只識別php-fpm.conf為配置文件
[root@localhost etc]# cd php-fpm.d?
[root@localhost php-fpm.d]# cp www.conf.default www.conf //復制fpm的www配置文件模板為配置文件,fpm只識別www.conf的配置文件
[root@localhost php-fpm.d]# cd .. //返回上一層目錄
[root@localhost etc]# vi php-fpm.conf //配置fpm模塊
修改以下內容:
pid = run/php-fpm.pid //分號去掉
;user = nginx //添加兩行
;group = nginx

技術分享圖片
?

啟動fpm模塊

[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini //啟動fpm模塊?
[root@localhost etc]# netstat -anpt | grep 9000 //查看9000端口運行狀態(php-fpm運行在9000端口)

[root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin/ //將php的可執行程序放到系統可識別環境中便於執行
[root@localhost etc]# ps aux | grep -c "php-fpm" //統計進程數

更新啟動腳本

讓fpm模塊也可進行系統啟動管理

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
 chmod 755 /etc/init.d/php-fpm
 chkconfig --add php-fpm
 chkconfig php-fpm on
 service php-fpm start
 ps aux |grep php-fpm

12.5 Nginx介紹

Nginx官網 nginx.org,最新版1.13,最新穩定版1.12
Nginx應用場景:web服務、反向代理、負載均衡
Nginx著名分支,淘寶基於Nginx開發的Tengine,使用上和Nginx一致,服務名,配置文件名都一樣,和Nginx的最大區別在於Tenging增加了一些定制化模塊,在安全限速方面表現突出,另外它支持對js,css合並
Nginx核心+lua相關的組件和模塊組成了一個支持lua的高性能web容器openresty,參考http://jinnianshilongnian.iteye.com/blog/2280928

十二周一次課