Nginx系列教程(六)| 手把手教你搭建 LNMP 架構並部署天空網絡電影系統

作者:JackTian
微信公衆號:傑哥的IT之旅(ID:Jake_Internet)

LAMP 系列導讀

01. LAMP 系列教程(一)| 詳解 Linux 環境下部署 HTTPD 服務
02. LAMP 系列教程(二)| 如何在 Linux 環境下部署 AWStats 分析系統來監控 Web 站點?
03. LAMP 系列教程(三)| 一文讀懂 HTTPD 服務的訪問控制
04. LAMP 系列教程(四)| MySQL 數據庫系統(一)
05. LAMP 系列教程(五)| MySQL 數據庫系統(二)- SQL語句的基本操作
06. LAMP 系列教程(六)| MySQL 數據庫系統(三)- 數據庫的用戶授權
07. LAMP 系列教程(七)| MySQL 數據庫系統(四)- 數據庫的備份與恢復
08. LAMP 系列教程(八)| 帶你輕鬆玩轉 LAMP 網站架構平臺(一)
09. LAMP 系列教程(九)| LAMP 架構應用案例 - 部署 PHPMyAdmin 系統(二)

LNMP 系列導讀

01. Nginx 系列教程(一)| 手把手教你在 Linux 環境下搭建 Nginx 服務
02. Nginx 系列教程(二)| 一文帶你讀懂 Nginx 的正向與反向代理
03. Nginx 系列教程(三)| 一文帶你讀懂 Nginx 的負載均衡
04. Nginx 系列教程(四)| 一文帶你讀懂 Nginx 的動靜分離
04. Nginx 系列教程(五)| 利用 Nginx+Keepalived 實現高可用技術

在前面的LNMP 系列導讀中,介紹了在 Linux 環境下搭建 Nginx 服務正向代理與反向代理負載均衡與動靜分離Nginx+Keepalived 高可用,今天手把手帶大家搭建 LNMP 架構以及通過 LNMP 平臺中部署天空網絡電影 Web 應用系統

1、安裝 Nginx

首先,需準備一臺Linux 服務器,然後安裝Nginx 服務,這裏就不過多的寫安裝Nginx步驟了,具體可以看這篇文章《手把手教你在 Linux 環境下搭建 Nginx 服務》若安裝過程中,有遇到什麼問題,歡迎大家與我交流。

2、安裝 MySQL 數據庫

準備工作,先檢查系統中是否已經安裝了MySQL數據庫,如已安裝,先卸載,以免發生端口或是程序衝突。

# rpm -q mysql-server mysql

注意:MySQL 5.5 以上的版本都需要 cmake 編譯。而不是 ./configure

# tar xf  cmake-2.8.6.tar.gz
# cd cmake-2.8.6
# ./configure
# gmake && gmake install

或者

# yum -y install cmake 

創建 MySQL 用戶

# groupadd mysql
# useradd -M  -s /sbin/nologin -g mysql mysql 

解壓、編譯、安裝

# tar xf mysql-5.5.22.tar.gz 
# cd mysql-5.5.22
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
# make && make install

上述參數含義:

-DCMAKE_INSTALL_PREFIX: 指定數據庫安裝目錄

-DSYSCONFDIR=/etc :指定配置文件目錄

-DDEFAULT_CHARSET:指定默認使用的字符集編碼。如utf8

-DDEFAULT_COLLATION=utf8_general_ci:設定默認排序規則(utf8_general_ci快速/utf8_unicode_ci準確)

-DEXTRA_CHARSETS=all:啓用額外的字符集類型(默認爲all)

如下圖表示編譯完成

權限調整

# chown -R mysql:mysql /usr/local/mysql

建立配置文件

# rm -rf /etc/my.cnf
# cd mysql-5.5.22
# cp support-files/my-medium.cnf /etc/my.cnf

初始化數據庫

# cd /usr/local/mysql
# scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

初始化數據庫成功

設置軟連接

爲了在任何目錄下都能使用 MySQL 命令,可以創建軟連接。

# ln -s /usr/local/mysql/bin/* /usr/local/bin/

將 MySQL 添加爲系統服務

# cd mysql-5.5.22/support-files
# cp mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld

啓動 MySQL 服務

# service mysqld start
# Starting  MySQL..          [  OK  ]
# netstat -anpt | grep mysqld
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2849/mysqld 

登陸驗證,查看 MySQL 數據庫是否搭建完成

3、安裝 PHP

FPM(FastCGI Process Manager,FastCGI 進程管理器)模塊,用來對 PHP 解析實例進行管理,優化解析效率。單臺服務器的 LNMP 架構通常使用該方式,因此在配置 PHP 編譯選項時需添加--enable-fpm以啓用此模塊。

解壓

# tar xf php-5.3.28.tar.gz
# cd php-5.3.28
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --with-mysql=/usr/local/mysql/bin/mysql_config  --enable-xml  --with-config-file-path=/etc
# make && make install

php編譯如果報以下錯誤

configure: error: Cannot find libmysqlclient under /usr.

解決辦法:

# ln -s /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so

配置 Nginx 支持 PHP 環境,啓用 php-fpm 配置文件

Nginx 能夠解析 PHP 網頁,有兩種方法:

  • 當中介:將訪問 PHP 頁面的 Web 請求轉發給其他服務器處理;
  • 通過使用 PHP 的 FPM 模塊來調用本機的 PHP 環境;

如果選用 FPM 方式,需先啓動 php-fpm 進程,便於監聽 PHP 解析請求,在 php-fpm.conf 配置文件中,pid 配置行指出了 PID 信息的存放位置,可根據實際情況進行修改。

# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf
# useradd -M -s /sbin/nologin php
# vi php-fpm.conf
25 pid = run/php-fpm.pid          // 確認 PID 文件位置
140 user = nobody                 // 運行用戶
141 group = nobody                // 運行組
188 pm.max_children = 50          // 最大空閒進程數
190 pm.start_servers = 20         // 啓動時開啓的進程數
191 pm.min_spare_servers = 5      // 最少空閒進程數
195 pm.max_spare_servers = 35

啓動 fpm

# cd /usr/local/php/sbin/
# ./php-fpm

啓動成功

# netstat -antp | grep php-fpm
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      3007/php-fpm        
tcp        1      0 192.168.1.11:40560          192.168.1.11:3306           CLOSE_WAIT  3008/php-fpm        
tcp        1      0 192.168.1.11:40562          192.168.1.11:3306           CLOSE_WAIT  3009/php-fpm  

結合 PHP 與 Nginx,並修改配置文件

無論是將 PHP 頁面交給 LNMP 服務器去解析,都是會調用本機的 php-fpm 進程進行解析,需在server { }配置段中添加localtion配置,指定當訪問.php網頁時採取任何操作,在 conf/ 目錄下的 fastcgi.conf 文件中已經包含必須的宏配置,可通過include語句添加。

vim /usr/local/nginx/conf/nginx.conf
 35     server {
 36         listen       80;
 37         server_name  www.jacktian.com;
 38 
 39         #charset koi8-r;
 40 
 41         #access_log  logs/host.access.log  main;
 42 
 43         location / {
 44             root   html;                              // php 網頁文檔根目錄
 45             index  index.html index.htm index.php;
 46             location ~ \.php$ {                       // 訪問.php網頁的配置段
 47             fastcgi_pass   127.0.0.1:9000;            // php-fpm 的監聽地址
 48             fastcgi_index  index.php;                 // PHP 首頁文件
 49             fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
 50             include        fastcgi_params;            // 包括 fastcgi.conf 樣本配置
 51          }
 52 
 53         }

創建 PHP 文件

以調用 php-fpm 解析爲例,在 PHP 文檔根目錄下創建一個測試網頁文件。

# cd /usr/local/nginx/html/
v# im index.php
<?php
phpinfo();
?>

重啓 Nginx 服務

# ./nginx -s stop
# ./nginx

驗證

在本地瀏覽器地址欄中輸入http://192.168.1.11/index.php進行測試,到此 PHP和 Nginx結合成功。

4、在 LNMP 平臺上部署 Web 應用系統

LNMP 與 LAMP 平臺是非常相似的,主要在於所用的 Web 服務軟件的不同,而這與使用 PHP 開發的 Web 應用程序並無太大關係,PHP 應用的部署方法也類似,以部署SKYUC 天空網絡電影系統爲例。

SKYUC 是一套 PHP 視頻點播系統,支持各種 P2P 流媒體軟件,適合電影門戶站、多媒體中心、網吧、酒店、教育等多種行業使用。

下載並部署程序代碼

將下載的SKYUC程序文件解壓,找到其中的wwwroot文件夾並將其放置到LNMP服務器的網站根目錄下,然後調整權限,允許Nginxphp-fpm程序擁有必要的寫入權限。

# yum -y install unzip
# unzip SKYUC.v3.4.2.SOURCE.zip 
# cd SKYUC.v3.4.2.SOURCE
# mv wwwroot /usr/local/nginx/html/skyuc
# chmod -R 777 skyuc

創建數據庫

爲降低 Web 應用程序對數據庫的風險,可設置專用的數據庫及授權用戶。

mysql> create database skyucdb;
mysql> grant all on skyucdb.* to 'runskyuc'@'%' identified by '123.com';

登錄驗證

安裝 Web 應用

本地訪問http://192.168.1.11/skyuc/install/index.php,將會打開SKYUC的安裝程序,根據頁面提示要求,只需三步即可安裝成功。

確保系統環境、目錄權限、緩存可寫性等檢測通過,否則將無法繼續安裝。

下一步的配置系統中,除了應正確配置數據庫連接,還有一點需要跟大家強調的,類型要選:MySQL,還應設置好管理賬號、密碼等信息,完成安裝後,可刪除install目錄,降低安全風險。


配置完SKYuc系統頁面後,可返回到Web應用系統站點首頁或管理後臺,這時恰巧,系統顯示了Nginx 403 forbidden (13: Permission denied)報錯,如下是我的解決方法:

第一步:nginx.confuser改爲和啓動用戶一致

# vim /usr/local/nginx/conf/nginx.conf
  2 user  root;
  3 worker_processes  1;

第二步: 缺少index.htmlindex.php文件,就是配置文件中第45行 index index.html index.htm 中缺少指定的index.php文件。

 43         location / {
 44             root   html;
 45             index  index.html index.htm index.php;
 46             location ~ \.php$ {
 47             fastcgi_pass   127.0.0.1:9000;
 48             fastcgi_index  index.php;
 49             fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
 50             include        fastcgi_params;
 51          }

第三步: SELinux 設置爲開啓狀態(enabled)的原因,需將enabled改爲disabled

# vi /etc/selinux/config
  7 SELINUX=disabled

第四步: 重啓Nginx服務。

# cd /usr/local/nginx/sbin/
# ./nginx -s stop
# ./nginx

訪問 Web 應用系統

通過本地訪問http://192.168.1.11/skyuc/,可以看到天空網絡電影系統網站首頁。

通過本地訪問http://192.168.1.11/skyuc/admincp/,輸入剛纔所配置的管理員賬號密碼即可登錄至後臺管理界面。


今天的推薦不知道大家喜歡嗎?如果你喜歡,請在文章底部留言和點贊,以表示對我的支持,你們的留言點贊是我持續更新的動力哦,感謝大家!

1、點個贊,讓更多的人看到這篇文章,順便激勵下我,嘻嘻。

2、關注我的原創微信公衆號「傑哥的IT之旅」專注於IT技術乾貨文章,以及不定期的分享學習資料,實用工具,面試經驗等,當然了還有內推機會哦,期待你的關注!

歡迎關注我的微信公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章