1. 程式人生 > >LNMP架構結介紹,MySQL和PHP的安裝以及Nginx介紹

LNMP架構結介紹,MySQL和PHP的安裝以及Nginx介紹

LNMP php-fpm Nginx

一、LNMP架構結介紹

LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Nginx中的PHP是以fastcgi的方式結合Nginx的,可以理解為Nginx代理了PHP的fastcgi。

詳細介紹可參考:http://blog.csdn.net/u013592371/article/details/73729892

二、LNMP架構-安裝MySQL

LNMP中MySQL的安裝步驟與LAMP中安裝一樣,這裏簡單寫一下安裝過程:

root@zhulinux-02 ~]# cd /usr/local/src/
[root@zhulinux-02 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[root@zhulinux-02 src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[root@zhulinux-02 src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@zhulinux-02 src]# useradd mysql
[root@zhulinux-02 src]# cd /usr/local/mysql/
[root@zhulinux-02 mysql]# ls 
bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
[root@zhulinux-02 mysql]# mkdir  /data/mysql
[root@zhulinux-02 mysql]# chown -R mysql:mysql /data/mysql/
[root@zhulinux-02 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
//執行過程中可能會報錯,根據提示,安裝相應的包即可

[root@zhulinux-02 mysql]# vim /etc/my.cnf
[root@zhulinux-02 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@zhulinux-02 mysql]# chmod 755 /etc/init.d/mysqld 
[root@zhulinux-02 mysql]# vim /etc/init.d/mysqld 
[root@zhulinux-02 mysql]# chkconfig --add mysqld
[root@zhulinux-02 mysql]# chkconfig mysqld on
[root@zhulinux-02 mysql]# service mysqld start
Starting MySQL.Logging to ‘/data/mysql/zhulinux-02.err‘.
 SUCCESS! 
[root@zhulinux-02 mysql]# ps aux |grep mysqld

安裝過程報錯,可參考前面LAMP安裝MySQL博文。

三、LNMP架構-PHP安裝

LAMP中的PHP與LNMP中的PHP的區別:
LAMP安裝PHP和LNMP安裝PHP有區別,LNMP需要開啟php-fpm服務。
在LAMP中,PHP作為apache的一個模塊,需要指定路徑。 在LNMP中,PHP作為一個獨立的服務,和Nginx沒有直接的關系。

PHP安裝過程如下:

1、下載PHP源碼包

[root@zhulinux-02 mysql]# cd ../src/
[root@zhulinux-02 src]# wget http://cn2.php.net/distributions/php-5.6.30.tar.bz2

2、解壓源碼包,創建賬戶

[root@zhulinux-02 src]# tar jxf php-5.6.30.tar.bz2
[root@zhulinux-02 src]# useradd php-fpm
//此帳號用來運行php-fpm服務。在LNMP環境中,PHP是以一個服務php-fpm的形式出現,獨立存在Linux中,方便管理

3、配置編譯選項

[root@zhulinux-02 php-5.6.30]# ./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

安裝中可能會出現這個錯誤:

configure: error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/

[root@zhulinux-02 php-5.6.30]# yum install -y libcurl-devel     //解決方法

編譯參數和LAMP不同,多了一個--enable-fpm,如果不加該參數,則不會執行php-fpm執行文件生成,更不能啟動php-fpm`服務。在安裝過程中出現錯誤,課參考LAMP中PHP安裝的博文。

4、編譯PHP

[root@zhulinux-02 php-5.6.30]# make
[root@zhulinux-02 php-5.6.30]# echo $?
0

編譯過程有點慢,耐心等待。如出現錯誤,分析問題,搜索解決方案。

5、安裝

[root@zhulinux-02 php-5.6.30]# make install
[root@zhulinux-02 php-5.6.30]# echo $?
0

6、修改配置文件

[root@zhulinux-02 php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini
[root@zhulinux-02 php-fpm]# cd etc/
[root@zhulinux-02 etc]# vim 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:port
#此處格式會影響配置Nginx和PHP結合時Nginx尋址PHP的路徑
listen.mode = 666
#當監聽的為socket文件時該部分才生效,用於指定.sock文件的權限
user = php-fpm
group = php-fpm
#定義php-fpm服務的用戶
pm = dynamic
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
#以上部分為進程相關信息

[root@zhulinux-02 etc]# cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@zhulinux-02 etc]# chmod 755 /etc/init.d/php-fpm 
[root@zhulinux-02 etc]# chkconfig --add php-fpm   //添加系統服務
[root@zhulinux-02 etc]# chkconfig php-fpm on       //開機啟動
[root@zhulinux-02 etc]# service php-fpm start
Starting php-fpm  done
[root@zhulinux-02 etc]# ps aux |grep php-fpm
root       1032  0.0  0.2 123560  4948 ?        Ss   15:39   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    1033  0.0  0.2 123560  4704 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1034  0.0  0.2 123560  4704 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1035  0.0  0.2 123560  4704 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1036  0.0  0.2 123560  4704 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1037  0.0  0.2 123560  4708 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1038  0.0  0.2 123560  4708 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1039  0.0  0.2 123560  4708 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1040  0.0  0.2 123560  4708 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1041  0.0  0.2 123560  4708 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1042  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1043  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1044  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1045  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1046  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1047  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1048  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1049  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1050  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1051  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
php-fpm    1052  0.0  0.2 123560  4712 ?        S    15:39   0:00 php-fpm: pool www
root       1054  0.0  0.0 112680   968 pts/0    R+   15:39   0:00 grep --color=auto php-fpm

四、Nginx介紹

Nginx(“engine x”)是一款輕量級的Web
服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like
協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、新浪、網易、騰訊、
淘寶等。

更多介紹可參考:https://www.cnblogs.com/yeyublog/p/6412606.html
Nginx為什麽比Apache Httpd高效:原理篇:http://www.toxingwang.com/linux-unix/linux-basic/1712.html
apache和nginx工作原理比較:https://www.server110.com/nginx/201402/6543.html
mod_php 和 mod_fastcgi以及php-fpm的比較:https://wenku.baidu.com/view/887de969561252d380eb6e92.html
概念了解:CGI,FastCGI,PHP-CGI與PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319/
https://www.awaimai.com/371.html

LNMP架構結介紹,MySQL和PHP的安裝以及Nginx介紹