目錄
一、LNMP架構原理
二、編譯安裝Nginx
三、編譯安裝MySQL
四、編譯安裝PHP
五、配置Nginx支持PHP解析
六、安裝論壇
七、安裝博客
一、LNMP架構原理
LNMP架構,是指在Linux平臺下,由運行Nginx的web服務器,運行PHP的動態頁面解析程序和運行MySQL的數據庫組成的網站架構,也是當前常用的系統架構之一。
在LNMP架構中,Nginx本身只負責靜態頁面的處理,當需要處理動態頁面時,則需要Nginx將相關.php頁面轉交給php-fpm來進行處理,php-fpm會將PHP頁面解析成html文件,然后交給Nginx進行處理。
與LAMP架構相比,LNMP的主要區別在于對PHP的處理上,LAMP對于PHP動態資源的處理是通過Apache的libphp5.so模塊進行的,該模塊內嵌如Apache中,而Nginx對PHP動態資源的處理則是通過php-fpm進行的,php-fpm是一個獨立的模塊,因此,在搭建LNMP架構時,Nginx和php-fpm都需要進行開啟。LNMP架構如下所示:
二、編譯安裝Nginx
1.首先安裝依賴包
? ?yum -y install pcre-devel zlib-devel gcc gcc-c++ make
2.創建運行用戶、組
(Nginx 服務程序默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限)
?useradd -M -s /sbin/nologin nginx3.下載官方源碼包,也可以直接登錄官網選擇版本,下載好后,復制到Linux系統中
cd? ? /opt
wget http://nginx.org/download/nginx-1.12.0.tar.gz
4.解壓源碼包
tar xf ? nginx-1.12.0.tar.gz
5.編譯安裝模塊
./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module#翻譯軟件 -j 表示需要調用核CPU,`lscpu|sed -n '4p'|awk '{print $2}'`:查看有幾個CPU
make -j `lscpu|sed -n '4p'|awk '{print $2}'`make install
6.做軟鏈接到PATH環境,可以補全命令ln -s /usr/local/nginx/sbin/nginx? ? ?/usr/local/sbin/
7.在/usr/lib/systemd/system/nginx.service 添加systemd管理文件
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -1 $MAINPID
ExecStop=/bin/kill -3 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target8.#將/usr/local/nginx目錄下所有文件的屬主與屬組改為ngixn用戶
chown -R nginx.nginx /usr/local/nginx
9.重新加載systemd管理信息并設置nginx服務開機自啟
systemctl ?daemon-reload
systemctl ?enable --now nginx
三、編譯安裝MySQL
進入/opt目錄下并將壓縮包放進
1.安裝Mysql環境依賴包
? yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ? ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-
2.創建運行用戶
useradd -M -s /sbin/nologin ?mysql
3.編譯安裝
cd /opt? ? ? ?
tar zxvf mysql-boost-5.7.20.tar.gzcd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 ?\
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1make ?-j `lscpu|sed -n '4p'|awk '{print $2}'`
make install4.修改Mysql配置文件
vim /etc/my.cnf 將所有文件內容替換成以下內容
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL
ES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_Z
ERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZE
RO,PIPES_AS_CONCAT,ANSI_QUOTES
5.更改mysql安裝目錄和配置文件的屬主屬組
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cn6.設置路徑環境變量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile?? ?
source /etc/profile7.初始化數據庫
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data8.添加mysqld系統服務
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
四、編譯安裝PHP
依舊進入/opt目錄下并把壓縮包放進
1.安裝編譯環境
yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel2.編譯安裝
cd /opt
tar jxvf php-7.1.10.tar.bz2
cd php-7.1.10
./configure --prefix=/usr/local/php ?--with-mysql-sock=/usr/local/mysql/mysql.sock?
--with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-fpm --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer --enable-zip
make -j `lscpu|sed -n '4p'|awk '{print $2}'`
make install3.路徑優化
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/4.調整PHP配置文件
php有三個配置文件:?
php.ini?? ??? ??? ?主配置文件 ?
php-fpm.conf?? ?進程服務配置文件?
www.conf?? ??? ?擴展配置文件修改主配置文件
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注釋,修改
date.timezone = Asia/Shanghaicd /usr/local/php/etc/#修改進程服務配置文件?
cp ?php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
--17行--去掉";"注釋
pid = run/php-fpm.pidwww.conf ? ? ? ?
5.擴展配置文件
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf6.配置systemd啟動文件
cp /opt/php-7.1.10/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
五、配置Nginx支持PHP解析
vim /usr/local/nginx/conf/nginx.conf
在45行添加默認文件 index.php
index ?index.html index.htm index.php;
大約在65-71行取消注釋,修改
location ~ \.php$ {
? ? root ? ? ? ? ? html; ? $document_root
? ? fastcgi_pass ? 127.0.0.1:9000;
? ? fastcgi_index ?index.php;
? ? fastcgi_param ?SCRIPT_FILENAME ?/usr/local/nginx/html$fastcgi_script_name; ? ?將 /scripts 修改為nginx的工作目錄
? ? include ? ? ? ?fastcgi_params;
}重啟Nginx服務
systemctl restart nginx.service
使用瀏覽器訪問nginx服務器下的/index.php文件,查看測試頁
為了數據的安全,首先重置Mysql數據庫root用戶密碼
mysqladmin -u root -p password "abc123" ?? ?
給root賬號設置密碼為abc123,提示輸入的是原始密碼(為空)要求輸入的是原密碼直接回車即可
登錄數據庫創建用戶
CREATE DATABASE bbs;
#這條命令用于創建一個新的數據庫,名稱為 bbs。GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#這是一個授權語句,它賦予了用戶名為 bbsuser 的用戶在任何主機(% 表示所有IP地址)
#上對 bbs 數據庫的所有表 (bbs.*) 擁有所有權限(all 包括SELECT, INSERT, UPDATE,
#DELETE, CREATE等所有操作)。同時,這個用戶的密碼被設定為 'admin123'。GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
#這個授權語句與上一條類似,但針對的是從本地主機(localhost)連接到數據庫的 bbsuser 用戶。
#這樣做通常是為了確保即使全局權限出現問題時,用戶仍然可以從本地主機訪問數據庫。flush privileges;
#這個命令用于刷新MySQL服務器的權限緩存,使上述權限更改立即生效。按ctrl+d 退出數據庫
vim /usr/local/nginx/html/index.php ? ? ? ? ? ? ?#替換原來的測試頁內容
<?php
$link=mysqli_connect('192.168.233.21','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
#如果正確,則輸出Success
else echo "Fail!!";
#如果不正確。則輸出Fail!!
?>
訪問服務器下的/index.php文件
六、安裝論壇
依舊進入/opt目錄下準備好論壇文件
1.解源包碼
cd /opt
unzip Discuz_X3.4_SC_UTF8.zip ?
cd /opt/dis/dir_SC_UTF8/
cp -r upload/? ? /usr/local/nginx/html/bbs/2.調整論壇目錄的權限
cd /usr/local/nginx/html/bbs/
chown -R nginx.nginx ./config/
chown -R nginx.nginx ./data/
chown -R nginx.nginx ./uc_client/
chown -R nginx.nginx ./uc_server/
#都要處理
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
接下來訪問http://192.168.21.10/bbs/install/index.php
安裝完成后進入論壇
可以用test普通用戶登錄
也可以用admin以管理員身份登錄
七、安裝博客
依舊進入/opt目錄下準備好博客文件
cd? ? ? /opt
unzip?Discuz_X3.4_SC_UTF8.zip
cp -r wordpress ?/usr/local/nginx/html/
安裝頁面在 ?wp-admin ? 下chmod 777 wordpress/ -R
訪問:
http://sever_ip/wordpress/wp-admin/install.php
因為上面論壇用的是bbs且放在同一目錄下,這邊我們換成blog
mysql -u root -p
CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
wordpress/wp-admin
最后輸入http://192.168.21.10/wordpress/wp-admin/install.php