LNMP架構介紹與搭建

筆記內容:php

  • 12.1 LNMP架構介紹
  • 12.2 MySQL安裝
  • 12.3/12.4 PHP安裝
  • 12.5 Nginx介紹

筆記日期:2017.10.18html


<br>mysql

12.1 LNMP架構介紹


LNMP架構介紹與搭建
  LNMP架構和LAMP架構挺像的,只不過一個用的Apache一個用的Nginx。LNMP就是Linux+Nginx+MySQL+PHP,Nginx和Apache同樣都是web服務器。linux

  還有一點不一樣的是在LNMP結構裏php會啓動一個服務:php-fpm,而LANP中php只是做爲Apache的一個模塊存在。Nginx會把用戶的動態請求交給php服務去處理,這個php服務就會去和數據庫進行交互。用戶的靜態請求Nginx會直接處理,Nginx處理靜態請求的速度要比apache快不少性能上要好,因此apache和Nginx在動態請求處理上區別不大,但若是是靜態請求處理的話就會明顯發現Nginx要快於apache,並且Nginx能承受的併發量要比apache大,能夠承受好幾萬的併發量,因此大一些的網站都會使用Nginx做爲web服務器。nginx

<br>git

12.2 MySQL安裝


LNMP架構介紹與搭建
  由於以前安裝了mysql,因此我得先卸載:
LNMP架構介紹與搭建
還須要刪除庫文件目錄:web

rm -rf /data/mysql/*sql

<br>
卸載完後下載mysql的二進制包:
http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
LNMP架構介紹與搭建數據庫

下載好後解壓apache

tar -zxfv mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

解壓後將目錄移動到/usr/local/下,並從新命名爲mysql:

mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

進入到mysql目錄下:

cd /usr/local/mysql

若是你的系統沒有/data/目錄須要先建立:

mkdir /data/

若是你的系統沒有myysql用戶也須要先建立:

useradd mysql

執行初始化腳本:

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

若是出現這個錯誤:
LNMP架構介紹與搭建
就安裝:

yum install -y perl-Module-Install.noarch

若是出現這個錯誤:
LNMP架構介紹與搭建
而後再安裝:

yum install libaio* -y

<br>
拷貝配置文件:

cp support-files/my-default.cnf /etc/my.cnf

vim /etc/my.cnf 配置文件爲如下內容:
LNMP架構介紹與搭建

拷貝啓動腳本:

cp support-files/mysql.server /etc/init.d/mysqld

而後定義basedir和datadir的路徑:
vim /etc/init.d/mysqld 腳本文件爲如下內容:
LNMP架構介紹與搭建

完成以上操做後啓動mysql服務:

/etc/init.d/mysqld start

啓動成功:
LNMP架構介紹與搭建

查看一下端口是否正常監聽,mysql默認端口爲3306:
LNMP架構介紹與搭建

將mysql加入服務列表裏面去,並設置爲開機啓動:

chkconfig --add mysqld
chkconfig mysqld on

而後就能夠用service命令去啓動或關閉mysql了

<br>

12.3/12.4 PHP安裝


LNMP架構介紹與搭建
 由於以前我安裝過php因此得先刪除以前make的文件,沒有編譯過的能夠跳過這一步,忽略:
LNMP架構介紹與搭建

php5.6下載地址:
http://cn2.php.net/distributions/php-5.6.30.tar.gz
LNMP架構介紹與搭建

下載好後解壓:

tar -zxvf php-5.6.30.tar.gz

建立php-fpm用戶:

useradd -s /sbin/nologin php-fpm

進入解壓後的目錄:

cd php-5.6.30

執行configure命令檢查編譯環境,並配置一些參數:

./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

LNMP架構介紹與搭建

我這報錯了,少了curl包:
LNMP架構介紹與搭建
解決辦法:安裝這個包,從新再執行configure便可:

yum -y install libcurl-devel

這種缺乏包的狀況,少啥裝啥就是了,通常都是php缺乏的包都是後綴爲-devel的包。

<br>

LNMP架構介紹與搭建
而後編譯安裝:

make && make install

安裝成功:
LNMP架構介紹與搭建
在sbin目錄下有一個php-fpm文件,這個文件是用來啓動php服務的:
LNMP架構介紹與搭建
這個文件一樣的能夠使用-m -i -t等選項
使用-t能夠測試配置文件是否正常:
LNMP架構介紹與搭建
由於尚未拷貝php的配置文件因此會報錯

拷貝php的配置文件:

cp php.ini-production /usr/local/php-fpm/etc/php.ini

建立一個php-fpm.conf文件:

vim /usr/local/php-fpm/etc/php-fpm.conf

編輯以下內容:

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid  //pid存放路徑
error_log = /usr/local/php-fpm/var/log/php-fpm.log  //日誌存放路徑
[www]  //這是一個模塊
listen = /tmp/php-fcgi.sock  //監聽ip和端口,端口默認爲9000
listen.mode = 666  //用來定義php-fcgi.sock文件的權限
user = php-fpm  //定義服務的所屬用戶
group = 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

LNMP架構介紹與搭建

拷貝啓動腳本:

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

使用php-fpm -t檢測一下配置文件有沒有問題:
LNMP架構介紹與搭建

沒有問題後就啓動服務:
LNMP架構介紹與搭建

我這報錯了,沒有php-fpm用戶,多是我剛剛忘記執行添加用戶的命令了吧:

useradd -s /sbin/nologin php-fpm

添加php-fpm用戶後再啓動就成功了:
LNMP架構介紹與搭建

查看一下進程:
LNMP架構介紹與搭建
完成以上操做,php-fpm就安裝成功了。

<br>

12.5 Nginx介紹


LNMP架構介紹與搭建
  Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。
其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。
  Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
  Nginx 能夠在大多數 UnixLinux OS 上編譯運行,並有 Windows 移植版。 Nginx 的1.4.0穩定版已經於2013年4月24日發佈,通常狀況下,對於新建站點,建議使用最新穩定版做爲生產版本,已有站點的升級急迫性不高。Nginx 的源代碼使用 2-clause BSD-like license。

<br>

12.6 Nginx安裝


LNMP架構介紹與搭建
LNMP架構介紹與搭建
LNMP架構介紹與搭建
在官網下載nginx的源碼包,下載地址:
http://nginx.org/en/download.html

下載源碼包,下載命令:

wget http://nginx.org/download/nginx-1.12.1.tar.gz

下載好後解壓:

tar -zxvf nginx-1.12.1.tar.gz

進入解壓後的目錄:

cd nginx-1.12.1/

LNMP架構介紹與搭建

執行configure 檢查編譯環境,參數方面根據本身的需求去配置:
./configure --prefix=/usr/local/nginx
成功:
LNMP架構介紹與搭建
執行成功後編譯安裝:

make && make install

成功:
LNMP架構介紹與搭建
LNMP架構介紹與搭建

安裝成功後,編輯啓動腳本:

vim /etc/init.d/nginx

而後將這網址裏的文件內容複製進去:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx

編輯完成後,給這個啓動腳本文件設置755權限:

chmod 755 /etc/init.d/nginx

把nginx服務添加到服務列表,並設置開機啓動:

chkconfig --add nginx

若是添加到服務列表出現這個錯誤:

service nginx does not support chkconfig

那麼就檢查一下你的啓動腳本文件裏的這兩行有沒有問題:
LNMP架構介紹與搭建
通常都是由於這兩行沒有寫,或者寫錯了

設置開機啓動:

chkconfig nginx on

進入nginx的conf目錄:

cd /usr/local/nginx/conf

而後重命名一下配置文件:

mv nginx.conf nginx.conf.bak

由於不使用nginx自帶的配置文件,因此須要編輯一個配置文件:

vim nginx.conf

將這網址裏的文件內容複製進去:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf
配置文件內容的一些做用:
LNMP架構介紹與搭建
LNMP架構介紹與搭建

檢查配置文件有沒有錯誤:

/usr/local/nginx/sbin/nginx -t

結果如圖就是沒錯誤:
LNMP架構介紹與搭建

沒有問題就能夠啓動nginx 了:

service nginx start

LNMP架構介紹與搭建

查看一下進程:
LNMP架構介紹與搭建

檢查一下有沒有在監聽80端口:

netstat -lntp |grep 80

LNMP架構介紹與搭建

確認啓動成功後,使用curl測試一下是否能訪問nginx:
LNMP架構介紹與搭建

結果如圖則是沒問題。

<br>
測試一下nginx是否能解析php:

1.在nginx的html目錄下建立一個php文件:
vim /usr/local/nginx/html/1.php
2.編輯內容以下:
LNMP架構介紹與搭建

3.使用curl去訪問php文件,如圖則是可以成功解析:
LNMP架構介紹與搭建

<br>

12.7 默認虛擬主機


LNMP架構介紹與搭建
首先把nginx配置文件裏定義的虛擬主機刪除:

vim /usr/local/nginx/conf/nginx.conf

刪除後加上這一行,這是用來引用虛擬主機配置文件的:

include vhost/*.conf;

建立vhost目錄:

mkdir /usr/local/nginx/conf/vhost

進入到vhost目錄下,建立一個default.conf文件:

cd vhost/
vim default.conf

添加如下內容:

server
{
    listen 80 default_server;  // 有這個標記的就是默認虛擬主機
    server_name aaa.com;  //定義這個虛擬主機的域名
    index index.html index.htm index.php;  //定義索引頁
    root /data/wwwroot/default;  //定義網站目錄
}

建立default目錄:

mkdir -p /data/wwwroot/default/

進入default目錄,建立一個html文件:

cd /data/wwwroot/default/
vim index.html

文件內容以下:
LNMP架構介紹與搭建

而後檢查一下配置文件有沒有錯誤:

/usr/local/nginx/sbin/nginx -t

LNMP架構介紹與搭建

從新加載配置文件:

/usr/local/nginx/sbin/nginx -s reload

使用curl命令測試一下:
LNMP架構介紹與搭建
結果如圖,則默認虛擬主機就配置完成了。

至此LNMP環境搭建就完成了,因爲大部分都是編譯安裝,因此看起來會比較複雜

<br>

擴展

Nginx爲何比Apache Httpd高效:原理篇
http://www.toxingwang.com/linux-unix/linux-basic/1712.html

apache和nginx工做原理比較:
http://www.server110.com/nginx/201402/6543.html

mod_php 和 mod_fastcgi以及php-fpm的比較:
http://dwz.cn/1lwMSd

概念瞭解:CGI,FastCGI,PHP-CGI與PHP-FPM
http://www.nowamagic.net/librarys/veda/detail/1319/
https://www.awaimai.com/371.html

相關文章
相關標籤/搜索