LNMP分離式部署搭建
一、前期準備
1、準備三臺虛擬機器,分別為:
Nginx Web:192.168.200.142
PHP:192.168.200.128
Mysql:192.168.200.143
二、服務搭建
一、Nginx Web搭建
yum install -y pcre-devel openssl-devel #用本地yum倉庫安裝依賴包
wget -q http://nginx.org/download/nginx-1.10.2.tar.gz #下載軟體原始碼包
useradd -s /sbin/nologin -M www #建立程式使用者
tar xf nginx-1.10.2.tar.gz -C /usr/src/ #解壓縮
cd /usr/src/nginx-1.10.2
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module #預配置
make && make install #編譯和安裝
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #給命令做軟連線,以便PATH能找到
/usr/local/nginx/sbin/nginx #啟動nginx
特別提示: /usr/local/nginx/sbin/nginx -s reload nginx平滑重啟命令
/usr/local/nginx/sbin/nginx -s stop nginx停止服務命令
(2)、加工Nginx配置檔案
cd /usr/local/nginx/conf
egrep -v "#|^$" nginx.conf.default > nginx.conf
2、安裝二進位制MySQL資料庫
(1)、建立mysql使用者的賬號
groupadd mysql
useradd -s /sbin/nologin -g mysql -M mysql
(2)、獲取MySQL二進位制軟體包
百度雲盤:http://pan.baidu.com/s/1hrBCzsC 提取碼:4yjf
(3)、採用二進位制方式安裝MySQL
tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv mysql-5.5.32-linux2.6-x86_64 mysql-5.5.32
ln -s mysql-5.5.32 mysql
(4)、初始化MySQL配置檔案my.cnf
cd /usr/local/mysql
ls -l support-files/*.cnf
/bin/cp support-files/my-small.cnf /etc/my.cnf
(5)、初始化MySQL資料庫檔案
mkdir -p /usr/local/mysql/data #建立MySQL資料檔案目錄
chown -R mysql.mysql /usr/local/mysql #授權mysql使用者管理MySQL的安裝目錄
yum -y install libaio #光碟源安裝依賴包,否則下一步的編譯會報錯
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
#初始化MySQL資料庫檔案,會有很多資訊提示,如果沒有ERROR級別的錯誤,會有兩個OK的字樣,表示初始化成功,否則就要解決初始化的問題
以上的命令主要作用是生成如下資料庫檔案
這些MySQL資料檔案是MySQL正確執行所必需的基本資料庫檔案,其功能是對MySQL許可權,狀態等進行管理。
(6)、配置並啟動MySQL資料庫
啟動MySQL資料庫
設定MySQL開機自啟動
(7)配置mysql命令的全域性使用路徑
(8)登陸MySQL測試
(9)、MySQL安全配置、為MySQL的root使用者設定密碼
mysqladmin -u root password '123123' #設定root使用者密碼
mysql -uroot -p123123 #用root使用者登入資料庫
二、安裝Nginx
1、安裝解壓
yum install -y pcre-devel openssl-devel #用本地yum倉庫安裝依賴包
#wget -q http://nginx.org/download/nginx-1.10.2.tar.gz #下載軟體原始碼包
tar xf nginx-1.10.2.tar.gz -C /usr/src/ #解壓縮
cd /usr/src/nginx-1.10.2
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module #預配置,命令說明:--with-http_stub_status_module 要運用的模組名,--with指定模組
make && make install #編譯和安裝
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ #給命令做軟連線,以便PATH能找到
2、建立一個程式使用者
useradd -M -s /sbin/nologin nginx #建立程式使用者
/usr/local/nginx/sbin/nginx #啟動nginx
特別提示: /usr/local/nginx/sbin/nginx -s reload nginx平滑重啟命令
/usr/local/nginx/sbin/nginx -s stop nginx停止服務命令
web排錯三部曲下面介紹客戶端排查的思路
第一步,在客戶端上ping伺服器端IP,命令如下:
ping 10.0.0.8排除物理線路問題影響
第二步,在客戶端上telnet伺服器端IP,埠,命令如下:
telnet 10.0.0.8 80排除防火牆等得影響
第三步,在客戶端使用wget命令檢測,如下:
wget 10.0.0.8(curl -I 10.0.0.8)模擬使用者訪問,排除http服務自身問題,根據輸出在排錯
3、安裝完成後進入配置檔案目錄加工下配置檔案
Nginx主配置檔案nginx.conf,路徑:/usr/local/nginx/conf/nginx.conf
egrep -v "#|^$" nginx.conf.default > nginx.conf #去掉包含#號和空行的內容
4、配置Nginx支援PHP程式請求訪問
(1)檢視nginx當前的配置
[[email protected] conf]# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
include extra/mail.conf;
include extra/blog.conf;
}
(2)PHP解析,這裡以blog為例講解,內容如下:
[[email protected] extra]# cat blog.conf
server {
listen 80;
server_name blog.shidu.com;
location / {
root html/blog;
index index.html index.htm;
}
}
最終blog虛擬機器的完整配置如下:
[[email protected] extra]# cat blog.conf
server {
listen 80;
server_name blog.shidu.com;
location / {
root html/blog;
index index.html index.htm;
}
location ~ .*\.(php|php5)?$ {
root html/blog;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
5、檢查並啟動Nginx
三、PHP安裝
1 檢查Nginx及MySQL的安裝情況
(1)檢查確認Nginx及MySQL的安裝路徑
[[email protected] ~]# ls -ld /usr/local/nginx
drwxr-xr-x. 11 root root 4096 Nov 9 00:42 /usr/local/nginx
[[email protected] ~]# ls -ld /usr/local/mysql
lrwxrwxrwx. 1 mysql mysql 12 Nov 9 01:00 /usr/local/mysql -> mysql-5.5.32
(2)檢查埠及啟動情況
(3)測試訪問Nginx及MySQL是否OK
2 安裝相關的lib軟體包
yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd libcurl-devel libxslt-devel
安裝後的結果如下:
從上圖結果看出,僅有libiconv-devel這個包沒有安裝,因為預設的yum源沒有此包,後面會編譯安裝。
3、安裝yum無法安裝的libiconv庫
./configure --prefix=/usr/local/libiconv && make && make install #開始編譯安裝
4、安裝libmcrypt庫\mhash加密擴充套件庫\mcrvpt加密擴充套件庫
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #推薦使用簡單的線上yum的方式安裝
cd /etc/yum.repos.d/
yum -y install libmcrypt-devel #安裝libmcrypt庫
yum -y install mhash #安裝mhash加密擴充套件庫
yum -y install mcrypt #mcrvpt加密擴充套件庫
5、開始安裝PHP(FastCGI方式)服務
獲取PHP軟體包
連結:https://pan.baidu.com/s/1RXk-DcujpOWkbe6f9ql1ng
提取碼:c970
6、解壓配置PHP
tar xf php-5.3.28.tar.gz -C /usr/src/
cd /usr/src/php-5.3.28/
./configure \
> --prefix=/usr/local/php5.3.28 \
> --with-mysql=mysqlnd \
> --with-iconv-dir=/usr/local/libiconv \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --enable-xml \
> --disable-rpath \
> --enable-safe-mode \
> --enable-bcmath \
> --enable-shmop \
> --enable-sysvsem \
> --enable-inline-optimization \
> --with-curl \
> --with-curlwrappers \
> --enable-mbregex \
> --enable-fpm \
> --enable-mbstring \
> --with-mcrypt \
> --with-gd \
> --enable-gd-native-ttf \
> --with-openssl \
> --with-mhash \
> --enable-pcntl \
> --enable-sockets \
> --with-xmlrpc \
> --enable-zip \
> --enable-soap \
> --enable-short-tags \
> --enable-zend-multibyte \
> --enable-static \
> --with-xsl \
> --with-fpm-user=www \
> --with-fpm-group=www \
> --enable-ftp
7、編譯安裝:make && make install
8、 配置PHP引擎配置檔案php.ini
(1)設定軟連結以方便訪問
[[email protected] ~]# ln -s /usr/local/php5.3.28/ /usr/local/php
[[email protected] ~]# ls -l /usr/local/php
lrwxrwxrwx. 1 root root 21 Nov 9 05:30 /usr/local/php -> /usr/local/php5.3.28/
(2)檢視PHP配置預設模版檔案
[[email protected] ~]# cd /usr/src/php-5.3.28/
[[email protected] php-5.3.28]# ls php.ini*
php.ini-development php.ini-production
請注意以上兩檔案的異同之處,可通過diff或vimdiff命令比較,如下圖所示
(3)拷貝PHP配置檔案到PHP預設目錄,並更改檔名稱為php.ini
cp php.ini-production /usr/local/php/lib/php.ini
10、配置PHP(FastCGI方式)的配置檔案php-fpm.conf
[[email protected] etc]# ls
pear.conf php-fpm.conf.default
[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
[[email protected] etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default
11、啟動PHP服務(FastCGI方式)
(1)啟動PHP服務php-fpm
/usr/local/php/sbin/php-fpm
(2)檢查PHP服務php-fpm的程序及啟動埠的情況
ps -ef | grep php-fpm
lsof -i:9000 #預設9000埠提供服務
三、測試
1、測試LNMP環境生效情況
(1)進入指定的預設站點目錄後,編輯index.php,新增如下內容:
[[email protected] blog]# pwd
/usr/local/nginx/html/blog
[[email protected] blog]# echo "<?php phpinfo(); ?>" >test_info.php
[[email protected] blog]# cat test_info.php
<?php phpinfo(); ?>
以上程式碼為顯示PHP配置資訊的簡單PHP檔案程式碼
(2)調整Windows下的host解析
192.168.200.128 www.shidu.com blog.shidu.com mail.shidu.com
(3) 開啟瀏覽器輸入 http://blog.shidu.com/test_info.php 即可進入下圖介面
出現此介面,表示Nginx配合PHP解析已經正常。