LNMP架構(一)

一 LNMP架構介紹

在LNMP中,Nginx會將用戶的動態請求交給php-fpm這個服務去處理,在處理靜態文件方面Nginx比Apache性能快不少,緣由是他們的底層設計的架構不同,Nginx用戶併發支持很大,能夠上好幾萬,但Apache作不到php

二 Mysql安裝

    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能開機啓動

二 PHP安裝

在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是俄國人開發的,官網是nginx.org,最開始apache特別流行,後來發現Nginx處理靜態文件的能力特別快,所以Nginx開始逐漸流行起來,市場佔有率雖然尚未apache高,但apache已經在走下坡路了,包括如今國內不少企業去建網站,通常都會選擇使用Nginx,好比java開發的網站,可能會選擇tomcat,用了tomcat後發現tomcat處理靜態文件的能力很差,所以還須要加一層,這時就會選擇Nginx;這塊軟件很是小巧,但功能很是強大,主要是擴展第三方模塊的功能,在選擇版本時儘可能選擇Nginx的穩定版,即stable版

相關文章
相關標籤/搜索