在LNMP中,Nginx會將用戶的動態請求交給php-fpm這個服務去處理,在處理靜態文件方面Nginx比Apache性能快不少,緣由是他們的底層設計的架構不同,Nginx用戶併發支持很大,能夠上好幾萬,但Apache作不到php
LNMP中mysql安裝跟LAMPmysql安裝是同樣的,php安裝會有一點區別,Nginx安裝比Apache更簡單一點java
在這裏,由於以前LAMP安裝了MySQL,所以須要先將MySQL刪除掉,再從新安裝mysql
一、關閉MySQL服務linux
首先查詢mysql服務是否開啓nginx
# ps aux |grep mysqlgit
查詢到mysql服務還沒有開啓,能夠直接進入下一步sql
二、刪除MySQLapache
首先刪除MySQL的安裝後的文件夾vim
# rm -rf /usr/local/mysqlapi
而後刪除MySQL的啓動腳本
# rm -rf /etc/init.d/mysqld
另外/etc/my.cnf能夠暫時保留,由於系統原本自帶就有這個文件
三、切換到下載目錄下
# cd /usr/local/src/
四、下載
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
五、解壓
# tar xzvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
六、移動解壓後的文件夾並修改文件名
# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
操做前應確保/usr/local/目錄下沒有mysql的文件夾,不然執行此命令後就不是修改文件名而是將解壓後的文件放到/usr/local/mysql/目錄下了,執行此命令後能夠查看到/usr/local/mysql/目錄下的子目錄和子文件以下:
七、切換到mysql文件夾下
# cd /usr/local/mysql
八、建立mysql用戶和數據存放目錄
由於以前安裝過一次,因此須要先將舊的目錄文件刪除
# rm -rf /data/mysql
# useradd mysql //已有,能夠不用建立
# mkdir /data/ //已有,能夠不用建立
九、mysql 初始化
目的是將mysql啓動所須要的一些目錄給生成
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
出現兩個OK就成功了,
十、拷貝並編輯配置文件
# cp support-files/my-default.cnf /etc/my.cnf
# vim /etc/my.cnf //下圖框中內容爲修改後的路徑
十一、拷貝並編輯啓動腳本
# cp support-files/mysql.server /etc/init.d/mysqld
# vim /etc/init.d/mysql //下圖爲啓動腳本中修改過的地方
十二、啓動MySQL服務
# /etc/init.d/mysqld start
1三、查看MySQL服務是否啓動成功
# ps aux |grep mysql //下圖代表mysql成功啓動
1四、將mysqld加入服務列表,並開機啓動
# chkconfig add mysqld //將mysqld加入服務列表,加入後可使用# service mysqld start 啓動服務
# chkconfig mysqld on //使mysqld能開機啓動
在LNMP中,php做爲一個獨立的模塊,不須要像LAMP同樣依賴Nginx,但php安裝須要依賴mysql,下面的操做基礎是創建在已經在LAMP時安裝過php的基礎上的,切換目錄、下載、解壓步驟省略
一、切換到解壓後的php源碼包下
# cd /usr/local/src/php-5.6.30
二、清除編譯
# make clean //因與LAMP有區別,所以先清除之前的編譯後生成的文件刪除
三、編譯
# ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl
以上編譯參數跟LAMP編譯參數大部分同樣,其中
--prefix=/usr/local/php-fpm 指定路徑
--with-config-file-path=/usr/local/php-fpm/etc 指定配置文件所在路徑
--enable-fpm 這個參數必須加上,不然就不能啓動php-fpm服務
--with-fpm-user=php-fpm 指定用戶
--with-fpm-group=php-fpm 指定組
--with-mysql=/usr/local/mysql 指定mysql路徑
--with-mysqli=/usr/local/mysql/bin/mysql_config 指定mysqli路徑
--with-pdo-mysql=/usr/local/mysql 指定pdo路徑
下圖是出現的錯誤及解決方法:
四、 make && make install
# make && make install
安裝完成後能夠看到相比原來LAMP安裝的php,這裏多了兩個子目錄sbin 和var
而 /usr/local/php-fpm/sbin/目錄下的php-fpm文件就是啓動php-fpm服務的文件
/usr/local/php-fpm/var/目錄下的log子目錄是存放日誌文件的,run子目錄是存放進程的pid的
同時/usr/local/php-fpm/sbin/php-fpm 的選項-m -i -t均有效
也能夠用/usr/local/php-fpm/bin/php 查看相關東西
五、編輯配置文件
咱們來運行如下命令
# /usr/local/php-fpm/sbin/php-fpm -t //用於測試php配置文件語法
提示沒有/usr/local/php-fpm/etc/php-fpm.conf這個文件,這是由於咱們尚未拷貝編輯這個文件
咱們先來拷貝php.ini到編譯時指定的路徑中去
# cp /usr/local/src/php-5.6.30/php.ini-production /usr/local/php-fpm/etc/php.ini
php.ini分爲production和development兩個版本,development用於開發環境, production用於生產環境,他們區別在於錯誤日誌這一塊
再來編輯php-fpm的配置文件php-fpm.conf
# vim /usr/local/php-fpm/etc/php-fpm.conf
在此文件中加入如下內容(參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf)
[global] //定義一些全局的參數
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www] //這是一個模塊的名字,啓動時就能夠看到
listen = /tmp/php-fcgi.sock //監聽地址,也能夠寫成listen=127.0.0.1:9000,通常都寫這個IP,由於php-fpm通常是針對服務器內部使用的,也就是說Nginx和php一般都在一臺機器上,他們之間通訊使用內部網絡就能夠了,port默認是9000;此處寫法不一樣,後續配置Nginx時,也就是告訴nginx去哪裏找php時也是不一樣的
listen.mode = 666 //當上面一條語句監聽的是socket時,這條語句纔會生效,用於定義socket文件的權限是666
user = php-fpm //用於定義php服務是由誰啓動的
group = php-fpm
pm = dynamic //本行及後面以pm開頭的行是關於進程的信息
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
六、拷貝啓動腳本
# cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
七、修改啓動腳本權限
# chmod 755 /etc/init.d/php-fpm
八、增長php-fpm用戶
# useradd php-fpm
九、加入服務列表
# chkconfig --add php-fpm
加入後就可使用# service php-fpm start 命令來啓動php-fpm服務了
咱們再來查看下php-fpm服務是否啓動成功
# ps aux |grep php-fpm
再查看下socket文件的權限
nginx是俄國人開發的,官網是nginx.org,最開始apache特別流行,後來發現Nginx處理靜態文件的能力特別快,所以Nginx開始逐漸流行起來,市場佔有率雖然尚未apache高,但apache已經在走下坡路了,包括如今國內不少企業去建網站,通常都會選擇使用Nginx,好比java開發的網站,可能會選擇tomcat,用了tomcat後發現tomcat處理靜態文件的能力很差,所以還須要加一層,這時就會選擇Nginx;這塊軟件很是小巧,但功能很是強大,主要是擴展第三方模塊的功能,在選擇版本時儘可能選擇Nginx的穩定版,即stable版