1. 程式人生 > >十二周一課 LNMP架構介紹、 MySQL安裝、PHP安裝、 Nginx介紹

十二周一課 LNMP架構介紹、 MySQL安裝、PHP安裝、 Nginx介紹

lnmp php mysql nginx

LNMP。Linux、Nginx、Mysql、PHP的結合。Nginx是一種類似於Apache的web服務軟件,它在靜態頁面處理上更勝Apache一籌,但在動態頁面處理上不如Apache。

mysql安裝
首先我們進入到/usr/local/src目錄下,這樣做是為了統一下載目錄,方便管理。
然後我們開始下載Mysql
[root@linletao-001 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz(這是面編譯的二進制包,下載地址為r.aming.com )
下載完後進行解壓
tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

解壓完後將mysql的目錄移動到/usr/local下,並且更名為mysql,在這裏我們要註意的是,如果目標目錄下有mysql,那麽我們要先將他刪除,因為如果目標目錄下有mysql,系統將會將我們要新移動的mysql放到目標目錄下。
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

然後我們開始初始化,初始化的過程就是將一些mysql啟動所需要的目錄將它生成。這裏出現兩個ok才對。我們也可以echo $?查看結果,正確結果為0
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

然後拷貝配置文件

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

拷貝完後進入編輯模式,查看一下他的一些參數是否配置正確
vim /etc/my.cnf

然後拷貝啟動腳本
cp support-files/mysql.server /etc/init.d/mysqld
然後編輯一下
vi /etc/init.d/mysqld
定義basedir和datadir
vim /etc/init.d/mysqld
找到並編輯

然後啟動mysql
/etc/init.d/mysqld start
Starting MySQL.Logging to ‘/data/mysql/linletao-001.err‘.
. SUCCESS!(啟動成功)

然後我麽將它加入到服務列表中

chkconfig --add mysqld

設置開機啟動
chkconfig mysqld on

這時候我們就可以用service mysqld 來控制mysql了,可以停止stop,可以啟動start。可以重啟restart。

PHP安裝
lnmp中php的安裝和lamp中php的安裝時不一樣的,因為lnmp中的php是以fastcgi的方式給Nginx的,也可以理解為Nginx代理了php的fastcgi,而apache是將php作為自己的模塊去調用的。
首先進入/usr/local/src
然後開始下載php
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
然後解壓php
tar zxf php-5.6.30.tar.gz
然後我們開始編譯針對Nginx的php
./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
這裏和我們編譯apache時有所不同。在這裏多了一個--enable-fpm,如果不加這個參數,則不會有php-fpm執行文件生成,更不能啟動php-fpm服務。

在編譯過程中我們要註意報錯
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
這裏出現報錯,提示缺少cURL,我們可以用yum去安裝。
yum install -y libcurl-devel
安裝完成後我們繼續編譯,編譯完後我們可以發現,php-fpm比php多出了兩個目錄sbin和var
[root@linletao-001 php-5.6.30]# ls /usr/local/php-fpm/
bin etc include lib php sbin var
[root@linletao-001 php-5.6.30]# ls /usr/local/php
bin etc include lib php
其中sbin中包括了我們所需要的php-fpm,而var中包含了log。
我們也可以用-m去查看php-fpm中加載的模塊,-t可以檢查語法是否錯誤。
[root@linletao-001 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
[22-Apr-2018 22:33:17] ERROR: failed to open configuration file ‘/usr/local/php-fpm/etc/php-fpm.conf‘: No such file or directory (2)
[22-Apr-2018 22:33:17] ERROR: failed to load configuration file ‘/usr/local/php-fpm/etc/php-fpm.conf‘
[22-Apr-2018 22:33:17] ERROR: FPM initialization failed
在這裏我們就發現了錯誤,/usr/local/php-fpm/etc/php-fpm.conf‘: No such file or directory,缺少配置文件。
所以我麽要先給他加上配置文件
cp php.ini-production /usr/local/php-fpm/etc/php.ini
然後編輯文件php-fpm.conf
vim php-fpm.conf
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/php-fpm.conf具體內容我們可以參考這個網址,將它的內容復制下來。
編輯完後,保存退出。

然後復制啟動腳本
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
service php-fpm start
Starting php-fpm [22-Apr-2018 22:54:59] ERROR: [pool www] cannot get uid for user ‘php-fpm‘
[22-Apr-2018 22:54:59] ERROR: FPM initialization failed
failed
這時報錯,說有個用戶php-fpm不存在,那麽我們就去建立這個用戶
useradd -s /sbin/nologin php-fpm
然後再次啟動php-fpm
service php-fpm start
Starting php-fpm done
這時啟動已經成功
然後我麽可以查看一下
ps aux|grep php-fpm

Nginx介紹
Nginx官網 nginx.org
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
Nginx著名分支,淘寶基於Nginx開發的Tengine,使用上和Nginx一致,服務名,配置文件名都一樣,和Nginx的最大區別在於Tenging增加了一些定制化模塊,在安全限速方面表現突出,另外它支持對js,css合並
Nginx應用場景:web服務、反向代理、負載均衡。

十二周一課 LNMP架構介紹、 MySQL安裝、PHP安裝、 Nginx介紹