作者: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
服務器的網站根目錄下,然後調整權限,允許Nginx
、php-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.conf
的user
改爲和啓動用戶一致
# vim /usr/local/nginx/conf/nginx.conf
2 user root;
3 worker_processes 1;
第二步: 缺少index.html
或index.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技術乾貨文章,以及不定期的分享學習資料,實用工具,面試經驗
等,當然了還有內推機會
哦,期待你的關注!