筆記內容:php
筆記日期:2017.10.18html
<br>mysql
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
由於以前安裝了mysql,因此我得先卸載:
還須要刪除庫文件目錄: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
數據庫
下載好後解壓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
若是出現這個錯誤:
就安裝:
yum install -y perl-Module-Install.noarch
若是出現這個錯誤:
而後再安裝:
yum install libaio* -y
<br>
拷貝配置文件:
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf 配置文件爲如下內容:
拷貝啓動腳本:
cp support-files/mysql.server /etc/init.d/mysqld
而後定義basedir和datadir的路徑:
vim /etc/init.d/mysqld 腳本文件爲如下內容:
完成以上操做後啓動mysql服務:
/etc/init.d/mysqld start
啓動成功:
查看一下端口是否正常監聽,mysql默認端口爲3306:
將mysql加入服務列表裏面去,並設置爲開機啓動:
chkconfig --add mysqld
chkconfig mysqld on
而後就能夠用service命令去啓動或關閉mysql了
<br>
由於以前我安裝過php因此得先刪除以前make的文件,沒有編譯過的能夠跳過這一步,忽略:
php5.6下載地址:
http://cn2.php.net/distributions/php-5.6.30.tar.gz
下載好後解壓:
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
我這報錯了,少了curl包:
解決辦法:安裝這個包,從新再執行configure便可:
yum -y install libcurl-devel
這種缺乏包的狀況,少啥裝啥就是了,通常都是php缺乏的包都是後綴爲-devel的包。
<br>
而後編譯安裝:
make && make install
安裝成功:
在sbin目錄下有一個php-fpm文件,這個文件是用來啓動php服務的:
這個文件一樣的能夠使用-m -i -t等選項
使用-t能夠測試配置文件是否正常:
由於尚未拷貝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
拷貝啓動腳本:
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檢測一下配置文件有沒有問題:
沒有問題後就啓動服務:
我這報錯了,沒有php-fpm用戶,多是我剛剛忘記執行添加用戶的命令了吧:
useradd -s /sbin/nologin php-fpm
添加php-fpm用戶後再啓動就成功了:
查看一下進程:
完成以上操做,php-fpm就安裝成功了。
<br>
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>
在官網下載nginx的源碼包,下載地址:
http://nginx.org/en/download.html
下載源碼包,下載命令:
下載好後解壓:
tar -zxvf nginx-1.12.1.tar.gz
進入解壓後的目錄:
cd nginx-1.12.1/
執行configure 檢查編譯環境,參數方面根據本身的需求去配置:
./configure --prefix=/usr/local/nginx
成功:
執行成功後編譯安裝:
make && make install
成功:
安裝成功後,編輯啓動腳本:
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
那麼就檢查一下你的啓動腳本文件裏的這兩行有沒有問題:
通常都是由於這兩行沒有寫,或者寫錯了
設置開機啓動:
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
配置文件內容的一些做用:
檢查配置文件有沒有錯誤:
/usr/local/nginx/sbin/nginx -t
結果如圖就是沒錯誤:
沒有問題就能夠啓動nginx 了:
service nginx start
查看一下進程:
檢查一下有沒有在監聽80端口:
netstat -lntp |grep 80
確認啓動成功後,使用curl測試一下是否能訪問nginx:
結果如圖則是沒問題。
<br>
測試一下nginx是否能解析php:
1.在nginx的html目錄下建立一個php文件:
vim /usr/local/nginx/html/1.php
2.編輯內容以下:
3.使用curl去訪問php文件,如圖則是可以成功解析:
<br>
首先把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
文件內容以下:
而後檢查一下配置文件有沒有錯誤:
/usr/local/nginx/sbin/nginx -t
從新加載配置文件:
/usr/local/nginx/sbin/nginx -s reload
使用curl命令測試一下:
結果如圖,則默認虛擬主機就配置完成了。
至此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