CentOS 7 搭建 LNMP 架構詳細過程 + Discuz 論壇安裝 (手工編譯)
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 論壇安裝 (手工編譯)