1. 程式人生 > >CentOS 7 搭建 LNMP 架構詳細過程 + Discuz 論壇安裝 (手工編譯)

CentOS 7 搭建 LNMP 架構詳細過程 + Discuz 論壇安裝 (手工編譯)

rep 生效 ecs pac extra database add var reat

簡介

1·LNMP 介紹
2·Ningx 安裝 (1.12版本)
3·MySQL 安裝 (5.5版本)
4·PHP 安裝 (5.6版本)
5·安裝 Discuz 論壇
6·總結


LNMP 介紹

1· 很多人都知道 LAMP 架構,它是由 Linux + Apache + MySQL + PHP 所架構的,但是隨著 Nginx 在企業中用得越來越多,LNMP 架構也受到人們得喜愛。其實這兩個架構變化不大,只是提供 WEB 服務的變成了 Nginx 。那麽他們之間一定會由差異。在 LNMP 中 Nginx 可以配置網頁的動靜分離、解析PHP,可以使用 PHP的FPM模塊。現在比較新的PHP 版本中已經自帶了FPM模塊(進程管理器)。這樣的話,就可以讓 Nginx 來處理靜態請求,並且它會把動態請求轉發給 PHP中的FPM 模塊,也可以把說成是一個php-fpm服務。但是在 LAMP 中php 只是作為一個模塊存在!

2·而且Nginx 它能承受的並發連接數高達50000左右,甩 Apache 幾條街。還有它的穩定性和系統資源的占用都是非常的小。所以非常受人們喜歡。


技術分享圖片


安裝前準備源碼包,我放在百度網盤上點擊免費下載:LNMP+論壇源碼包密碼:jx5k


Nginx 安裝

1·安裝 Nginx 之前需要安裝依賴包

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make


2·給 Nginx 創建專門的用戶,以便準確的控制權限,降低安全風險

[root@localhost ~]# useradd -M -s /sbin/nologin nginx


3·解壓、編譯安裝 nginx ,一般編譯安裝都放在 /usr/local 目錄下面

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz -C /opt
[root@localhost ~]# cd /opt/nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module (支持統計狀態)
[root@localhost nginx-1.12.0]# make && make install (編譯安裝)


4·為了使 nginx 方便管理員運行和管理,為nginx 創建連接文件

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/ /usr/local/sbin/


5·為了使 Nginx 的啟動 停止更加方便,為他寫一個啟動腳本,這樣更方便。

[root@localhost nginx-1.12.0]# vim /etc/init.d/ngixn
#!/bin/bash
#chkconfig: - 99 20
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx" (這裏是:主程序路徑)
PIDF="/usr/local/nginx/logs/nginx.pid" (這裏是PID存放路徑)
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF) (根據 PID 終止 nginx 進程,kill進程)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF) (根據進程重新加載配置)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}" (如果輸入其他則提示輸入語法)
exit 1
esac
exit 0


6·給這個腳本賦予執行權限、並把 Nginx 添加為系統服務。

[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx


7·啟動 Nginx 服務 、查看狀態。

[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl status nginx
● nginx.service - SYSV: Nginx Service Control Script
Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
Active: active (running) since 二 2018-08-28 14:14:00 CST; 7s ago
Docs: man:systemd-sysv-generator(8)
Process: 5323 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nginx.service
├─5325 nginx: master process /usr/local/nginx/sbin/nginx
└─5326 nginx: worker process


MySQL 安裝 (5.5版本哦)

1·這裏還是需要先安裝依賴包,MySQL 這裏需要註意的是不再用 ./configure 安裝模塊了,而是用 Cmake ,所以這裏需要安裝 Cmake以及其他的包

[root@localhost ~]# yum -y install ncurses-devel bion libaio-devel cmake


2·給 MySQL 創建專門的用戶,以便準確的控制權限,降低安全風險

[root@localhost ~]# useradd -s /sbin/nologin mysql


3·解壓、編譯安裝 MySQL ,一般編譯安裝都放在 /usr/local 目錄下面

[root@localhost ~]# tar zxvf mysql-5.5.24.tar.gz -C /opt
[root@localhost ~]# cd /opt/mysql-5.5.24
[root@localhost mysql-5.5.24]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DWITH_SSL=bundled

[root@localhost mysql-5.5.24]# make && make install


4·根據一些日常的習慣,對MySQL做一些調整優化。

[root@localhost mysql-5.5.24]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.5.24]# chmod +x /etc/init.d/mysqld


5·加入系統管理、設置開機啟動

[root@localhost mysql-5.5.24]# chkconfig --add mysqld
[root@localhost mysql-5.5.24]# chkconfig --level 35 mysqld on


6·添加變量到 /etc/profile 文件中,並且使文件再次生效。

[root@localhost mysql-5.5.24]# echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
[root@localhost ~]# . /etc/profile (這裏需要註意 . 中間有空格)
[root@localhost ~]# chown -R mysql.mysql /usr/local/mysql


7·初始化數據庫

[root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql


技術分享圖片


8·在啟動配置文件中指定家目錄和安裝路徑

[root@localhost ~]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql


技術分享圖片


9·到這裏我本來就可以啟動服務了,可是這裏報錯,如下圖報錯信息,是在關閉防火墻,setenforce 0 之後啟動。

[root@localhost ~]# systemctl start mysqld.service
技術分享圖片

它說讓你用它提示的語句去查看狀態,其實我們用另一種方法啟動,可以看到報錯信息不一樣。如下圖
[root@localhost ~]# /etc/init.d/mysqld start
技術分享圖片
意思是:啟動時不跟新PID文件。沒有PID 就啟動不了。
解決辦法:
[root@localhost ~]# mv /etc/my.cnf /etc/my.cnf.bak
相當於刪除了這個文件而已就可以啟動成功

或者把 /etc/my.cnf 中的兩句話註釋掉或者自己創建 mkdir -p /var/run/mariadb
mkdir -p /log/run/mariadb
技術分享圖片


安裝 PHP

1·安裝依賴包和GD庫等相關聯的程序

[root@localhost ~]# yum -y install \
gd \
libxml2-devel \
libjpeg-devel \
libpng-devel \
zlib-devel \
fontconfig-devel \
openssl-devel \
bzip2-devel


2·解壓、編譯安裝 PHP ,一般編譯安裝都放在 /usr/local 目錄下面

[root@localhost ~]# tar jxvf php-5.6.11.tar.bz2 -C /opt/
[root@localhost php-5.6.11]# ./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring \
--with-jpeg-dir=/usr/lib \
--with-openssl \
--disable-ipv6 \
--enable-fpm

[root@localhost php-5.6.11]# make && make install


3·對 PHP 進行一些優化

[root@localhost php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini
[root@localhost php-5.6.11]# ln -s /usr/local/php5/bin/ /usr/local/bin/
[root@localhost php-5.6.11]# ln -s /usr/local/php5/sbin/
/usr/local/sbin/


4·為PHP安裝加速器

[root@localhost ~]# tar zxvf zend-loader-php5.5-linux-x86_64_update1.tar.gz -C /opt
[root@localhost ~]# cd /opt/zend-loader-php5.5-linux-x86_64/
[root@localhost zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php


5·配置PHP識別加速器

[root@localhost ~]# vim /usr/local/php5/php.ini
在文件末尾插入:
[Zend Guard Loader]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1


技術分享圖片


6·開啟nginx的PHP支持

[root@localhost ~]# cd /usr/local/php5/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# useradd -M -s /sbin/nologin php (差點忘記了)


7·修改php-fpm配置文件

[root@localhost etc]# vim php-fpm.conf -----(這裏是修改文件)
pid = run/php-fpm.pid
user = php
group = php
pm.max_children=50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

[root@localhost etc]# /usr/local/sbin/php-fpm -------------(使文件生效)
[root@localhost etc]# netstat -tnal | grep 9000 -------------(查看一下端口)


8·讓nginx支持PHP功能

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf ----(就是修改Nginx配置文件)

location ~ .php$ {
root /var/www/benet;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

在server 裏面加入以上參數,如下圖:

技術分享圖片


9·檢查 nginx 配置文件,並重啟nginx 服務、查看狀態

[root@localhost conf]# nginx -t
[root@localhost conf]# systemctl restart nginx
[root@localhost conf]# systemctl status nginx


10·測試 PHP 頁面
[root@localhost conf]# mkdir -p /var/www/benet
[root@localhost conf]# vim /var/www/benet/index.php
<?php
phpinfo();
?>


技術分享圖片


11·開始測試,訪問
技術分享圖片


安裝 Discuz 論壇

1·我們在 LNMP 搭建好了之後,就可以基於此基礎 安裝軟件了,這裏以 Discuz 論壇 為列
2·要安裝 Discuz 論壇需要給此論壇創建一個數據庫,並且創建一個用戶管理它
3·進入 MySQL 數據庫 創建一個新的數據庫名字叫 bbs

[root@localhost ~]# mysql -u root -p -----(輸入密碼進入)
mysql> create databases bbs; ------(創建一個庫 名字叫 bbs 以分號結尾)
mysql> grant all on bbs.* to ‘bbsuser‘@‘%‘ identified by ‘admin123‘;

給bbsuser 這個用戶在任意一臺服務器上登陸,登陸密碼是 ‘admin123’ ,對bbs這個庫,這個庫裏面的所有表擁有所有權限。
mysql> flush privileges; ----(刷新數據庫,立即生效)


·測試數據庫,以下是測試代碼:
vim /var/www/benet/index.php

<?php
$link=mysql_connect(‘主機IP‘,‘bbsuser‘,‘admin123‘);
if($link) echo "Success!!";
else echo "Fail!!";
mysql_close();
?>


解壓 Discuz 軟件包、優化內容
[root@localhost ~]# unzip Discuz_X3.3_SC_UTF8.zip -d /opt/dis
[root@localhost ~]# cd /opt/dis
[root@localhost dis]# cp -r upload/ /var/www/benet/bbs
[root@localhost dis]# cd /var/www/benet/bbs
[root@localhost bbs]# chown -R php ./config
[root@localhost bbs]# chown -R php ./data
[root@localhost bbs]# chown -R php ./uc_client
[root@localhost bbs]# chown -R php ./uc_server/data


開始安裝
安裝是在 windows 7 上安裝,訪問地址是:如下圖
技術分享圖片


技術分享圖片


技術分享圖片


技術分享圖片


Discuz 安裝完成,我們可以訪問管理後臺。
技術分享圖片


技術分享圖片


總結:

1·關於 一些 Nginx 其他配置可以看看Nginx 優化


2·在整個 LNMP 的安裝過程中,說不一定就會報一些錯,只是沒有遇到,報錯就上百度多查查。


3·需要知道 Nginx 的優點在哪裏,它的高並發連接,和動靜態的分離,還有資源占用極少等等。


4·在LNMP 中的php是用php-fpm模塊來做動態工作工作的。但是在LAMP中PHP只是一個模塊而已。

CentOS 7 搭建 LNMP 架構詳細過程 + Discuz 論壇安裝 (手工編譯)