目錄
一、 LNMP架構(gòu)介紹
二对嚼、 MySQL安裝
三夹抗、 PHP安裝
四、 Nginx介紹
一纵竖、 LNMP架構(gòu)介紹
LNMP和LAMP唯一不同的是漠烧,LNMP中的N指的是Nginx(類似于Apache的一種Web服務(wù)軟件)。在靜態(tài)頁面的處理上靡砌,Nginx較Apache更勝一籌已脓;但在動(dòng)態(tài)頁面的處理上,Nginx并不比Apache有優(yōu)勢通殃。在LNMP架構(gòu)中度液,PHP會(huì)作為一個(gè)獨(dú)立的服務(wù)存在,這個(gè)服務(wù)叫php-fpm,nginx會(huì)將用戶請(qǐng)求的php交個(gè)php-fpm處理恨诱。Nginx可以支持較大的用戶并發(fā)數(shù)媳瞪。
二、 MySQL安裝
將原先的Mysql刪除再重新安裝一遍(簡單描述):
[root@minglinux-01 ~] ps aux|grep mysql
root 898 0.0 0.0 115640 1828 ? S 00:51 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/minglinux-01.pid
mysql 1282 0.0 24.5 1302740 457260 ? Sl 00:51 1:05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=minglinux-01.err --pid-file=/data/mysql/minglinux-01.pid --socket=/tmp/mysql.sock --port=3306
root 10063 0.0 0.0 112724 984 pts/0 S+ 22:42 0:00 grep --color=auto mysql
[root@minglinux-01 ~] systemctl stop mysql //停止mysqld服務(wù)再刪除
[root@minglinux-01 ~] ps aux|grep mysql
root 10093 0.0 0.0 112720 984 pts/0 S+ 22:43 0:00 grep --color=auto mysql
[root@minglinux-01 ~] rm -rf /usr/local/mysql
[root@minglinux-01 ~] rm -rf /etc/init.d/mysqld
[root@minglinux-01 ~] cd /usr/local/src/
[root@minglinux-01 /usr/local/src] wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
[root@minglinux-01 /usr/local/src] tar zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
[root@minglinux-01 /usr/local/src] mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
[root@minglinux-01 /usr/local/src] ls /usr/local/mysql/
bin docs man scripts support-files
COPYING include mysql-test share
data lib README sql-bench
[root@minglinux-01 /usr/local/src] cd /usr/local/mysql
[root@minglinux-01 /usr/local/mysql] rm -rf /data/mysql/*
[root@minglinux-01 /usr/local/mysql] id mysql
uid=1011(mysql) gid=1011(mysql) 組=1011(mysql)
[root@minglinux-01 /usr/local/mysql] ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化
[root@minglinux-01 /usr/local/mysql] echo $?
0 //判斷初始化是否成功
[root@minglinux-01 /usr/local/mysql] vim /etc/my.cnf //etc目錄已經(jīng)存在my.cnf照宝,不必再復(fù)制
[root@minglinux-01 /usr/local/mysql] cp support-files/mysql.server /etc/init.d/mysqld //復(fù)制啟動(dòng)腳本
[root@minglinux-01 /usr/local/mysql] vim !$
vim /etc/init.d/mysqld //編輯啟動(dòng)腳本修改以下內(nèi)容
···
basedir=/usr/local/mysql
datadir=/data/mysql
···
[root@minglinux-01 /usr/local/mysql] /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/minglinux-01.err'.
. SUCCESS!
[root@minglinux-01 /usr/local/mysql] ps aux|grep mysqld
root 10276 0.1 0.0 113304 1620 pts/0 S 23:09 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/minglinux-01.pid
mysql 10513 3.0 24.1 1302728 450044 pts/0 Sl 23:09 0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=minglinux-01.err --pid-file=/data/mysql/minglinux-01.pid --socket=/tmp/mysql.sock --port=3306
root 10544 0.0 0.0 112720 984 pts/0 S+ 23:10 0:00 grep --color=auto mysqld
[root@minglinux-01 /usr/local/mysql] chkconfig --add mysqld //將mysqld加入服務(wù)列表
[root@minglinux-01 /usr/local/mysql] chkconfig mysqld on //設(shè)置開機(jī)啟動(dòng)
[root@minglinux-01 /usr/local/mysql] service mysqld stop
Shutting down MySQL.. SUCCESS!
[root@minglinux-01 /usr/local/mysql] service mysqld start
Starting MySQL. SUCCESS!
三蛇受、 PHP安裝
Nginx的PHP安裝和上一章的PHP安裝是有區(qū)別的。因?yàn)镹ginx中的PHP
是以fastcgi的方式結(jié)合Nginx的厕鹃,可以理解為Nginx代理了PHP的fastcgi兢仰,而httpd是把PHP作為自己的模塊來調(diào)用的,在lnmp里面php作為一個(gè)獨(dú)立的服務(wù)存在剂碴,與nginx無直接關(guān)系把将。
- 刪除安裝LAMP時(shí)編譯的文件
[root@minglinux-01 /usr/local/src/php-5.6.30] pwd
/usr/local/src/php-5.6.30
[root@minglinux-01 /usr/local/src/php-5.6.30] make clean
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp5.la sapi/cli/php sapi/cgi/php-cgi libphp5.la modules/* libs/*
執(zhí)行完上述命令后php-5.6.30目錄就是剛解壓時(shí)狀態(tài)。
- 生成可編譯文件
[root@minglinux-01 /usr/local/src/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
報(bào)錯(cuò):
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
解決:yum install -y libcurl-devel
[root@minglinux-01 /usr/local/src/php-5.6.30] yum install -y libcurl-devel
[root@minglinux-01 /usr/local/src/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
//再次執(zhí)行
- 編譯安裝
[root@minglinux-01 /usr/local/src/php-5.6.30] make
[root@minglinux-01 /usr/local/src/php-5.6.30] make install
- 查看文件目錄
[root@minglinux-01 /usr/local/src/php-5.6.30] ls /usr/local/php-fpm
bin etc include lib php sbin var
[root@minglinux-01 /usr/local/src/php-5.6.30] ls /usr/local/php
bin etc include lib php
[root@minglinux-01 /usr/local/src/php-5.6.30] ls /usr/local/php-fpm/sbin
php-fpm
[root@minglinux-01 /usr/local/src/php-5.6.30] ls /usr/local/php-fpm/var/
log run
php-fpm中比php多的兩個(gè)目錄sbin和var
sbin目錄下的php-fpm文件用于啟動(dòng)php-fpm服務(wù)
var目錄下log目錄用于存放日志忆矛,run目錄用于存放pid察蹲,日志和pid的存放路徑都可以單獨(dú)指定。
- 查看php-fpm包含的模塊
[root@minglinux-01 /usr/local/src/php-5.6.30] /usr/local/php-fpm/sbin/php-fpm -m
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
- 查看php-fpm配置文件語法
[root@minglinux-01 /usr/local/src/php-5.6.30] /usr/local/php-fpm/sbin/php-fpm -t
[24-Nov-2018 00:00:35] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[24-Nov-2018 00:00:35] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[24-Nov-2018 00:00:35] ERROR: FPM initialization failed
/usr/local/php-fpm/etc/php-fpm.conf配置文件不存在
- 配置php-fpm服務(wù)
[root@minglinux-01 /usr/local/src/php-5.6.30] cp php.ini-production /usr/local/php-fpm/etc/php.ini //拷貝php的模板配置文件到php-fpm配置文件路徑下
模板配置文件:
php.ini-development:開發(fā)環(huán)境下使用
php.ini-production:生產(chǎn)環(huán)境下使用催训,在錯(cuò)誤日志處與php.ini-development不同
[root@minglinux-01 /usr/local/php-fpm/etc] vim php-fpm.conf //新建php-fpm的配置文件并寫入以下內(nèi)容
[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid //pid文件路徑
error_log = /usr/local/php-fpm/var/log/php-fpm.log //錯(cuò)誤日志路徑
[www] //模塊名
listen = /tmp/php-fcgi.sock //sock 監(jiān)聽的socket地址
#listen = 127.0.0.1:9000 //php-fpm默認(rèn)監(jiān)聽的端口為9000
listen.mode = 666 //當(dāng)監(jiān)聽的是socket地址時(shí)生效洽议,用于定義socket文件的權(quán)限
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
[root@minglinux-01 /usr/local/php-fpm/etc] cd /usr/local/src/php-5.6.30
[root@minglinux-01 /usr/local/src/php-5.6.30] cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm //拷貝php-fpm啟動(dòng)腳本
[root@minglinux-01 /usr/local/src/php-5.6.30] chmod 755 /etc/init.d/php-fpm //修改啟動(dòng)腳本權(quán)限
[root@minglinux-01 /usr/local/src/php-5.6.30] chkconfig --add php-fpm //將php-fpm服務(wù)加入服務(wù)列表
[root@minglinux-01 /usr/local/src/php-5.6.30] chkconfig php-fpm on //將php-fpm設(shè)為開機(jī)啟動(dòng)
[root@minglinux-01 /usr/local/src/php-5.6.30] /usr/local/php-fpm/sbin/php-fpm -t
[24-Nov-2018 00:21:59] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
//檢測配置是否正確
[root@minglinux-01 /usr/local/src/php-5.6.30] service php-fpm start
Starting php-fpm [24-Nov-2018 00:23:32] ERROR: [pool www] cannot get uid for user 'php-fpm' //報(bào)錯(cuò)php-fpm用戶不存在
[24-Nov-2018 00:23:32] ERROR: FPM initialization failed
failed
[root@minglinux-01 /usr/local/src/php-5.6.30] useradd php-fpm //創(chuàng)建用戶
[root@minglinux-01 /usr/local/src/php-5.6.30] service php-fpm startStarting php-fpm done
[root@minglinux-01 /usr/local/src/php-5.6.30] ps aux|grep php-fpm
root 126762 0.0 0.2 123692 4944 ? Ss 00:23 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm 126763 0.0 0.2 123692 4700 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126764 0.0 0.2 123692 4700 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126765 0.0 0.2 123692 4700 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126766 0.0 0.2 123692 4700 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126767 0.0 0.2 123692 4704 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126768 0.0 0.2 123692 4704 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126769 0.0 0.2 123692 4704 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126770 0.0 0.2 123692 4704 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126771 0.0 0.2 123692 4704 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126772 0.0 0.2 123692 4704 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126773 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126774 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126775 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126776 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126777 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126778 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126779 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126780 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126781 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
php-fpm 126782 0.0 0.2 123692 4708 ? S 00:23 0:00 php-fpm: pool www
root 126784 0.0 0.0 112720 984 pts/0 S+ 00:26 0:00 grep --color=auto php-fpm
[root@minglinux-01 /usr/local/src/php-5.6.30] ls -l /tmp/php-fcgi.sock
srw-rw-rw- 1 root root 0 11月 24 00:23 /tmp/php-fcgi.sock
四、 Nginx介紹
- Nginx官網(wǎng) nginx.org漫拭,最新版1.13亚兄,最新穩(wěn)定版1.12
- Nginx的靜態(tài)文件處理能力比apache強(qiáng)很多,Nginx支持?jǐn)U展第三方模塊(如支持https等)
- Nginx應(yīng)用場景:web服務(wù)采驻、反向代理审胚、負(fù)載均衡
- Nginx著名分支,淘寶基于Nginx開發(fā)的Tengine礼旅,使用上和Nginx一致膳叨,服務(wù)名,配置文件名都一樣各淀,和Nginx的最大區(qū)別在于Tenging增加了一些定制化模塊懒鉴,在安全限速方面表現(xiàn)突出,另外它支持對(duì)js碎浇,css合并
- Nginx核心+lua相關(guān)的組件和模塊組成了一個(gè)支持lua的高性能web容器openresty临谱,參考http://jinnianshilongnian.iteye.com/blog/2280928
擴(kuò)展
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,F(xiàn)astCGI奴璃,PHP-CGI與PHP-FPM http://www.nowamagic.net/librarys/veda/detail/1319/ https://www.awaimai.com/371.html