搭建LNMP環境并搭建論壇和博客

目錄

一、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 nginx

3.下載官方源碼包,也可以直接登錄官網選擇版本,下載好后,復制到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.target

8.#將/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.gz

cd /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=1

make ?-j `lscpu|sed -n '4p'|awk '{print $2}'`
make install

4.修改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 = 1

sql_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.cn

6.設置路徑環境變量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile?? ?
source /etc/profile

7.初始化數據庫

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

8.添加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-devel

2.編譯安裝

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 install

3.路徑優化

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.pid

www.conf ? ? ? ?

5.擴展配置文件
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

6.配置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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712923.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Node.js_基礎知識(http模塊)

網絡基礎 URL的組成結構&#xff1a;協議名: // 主機名 [:端口號] [/路徑] [?查詢字符串]協議默認端口&#xff1a; http&#xff1a;80&#xff0c;開發常用端口有 3000、8080、8090、9000https: 443 如果端口被其他程序占用&#xff0c;可以使用 資源監視器 找到占用端口的…

Python:練習:編寫一個程序,錄入一個美元數量(int),然后顯示出增加%5稅率后的相應金額。

案例&#xff1a; 編寫一個程序&#xff0c;錄入一個美元數量&#xff08;int&#xff09;&#xff0c;然后顯示出增加%5稅率后的相應金額。格式如下所示&#xff1a; Enter an amount:100 With tax added:$105.0 思考&#xff1a; 1、錄入一個美元數量&#xff0c;錄入&am…

解決GitHub無法訪問的問題:手動修改hosts文件與使用SwitchHosts工具

?? 歡迎大家來訪Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭?&#xff5e;?? &#x1f31f;&#x1f31f; 歡迎各位親愛的讀者&#xff0c;感謝你們抽出寶貴的時間來閱讀我的文章。 我是Srlua&#xff0c;在這里我會分享我的知識和經驗。&#x…

【C++】一個求數組中最大元素的函數模板

題目 設計一個分數類 F r a c t i o n Fraction Fraction&#xff0c;再設計一個名為 M a x e l e m e n t Max_element Maxe?lement 的函數模板&#xff0c;能夠求數組中最大的元素&#xff0c;并用該模板求一個 F r a c t i o n Fraction Fraction 數組中的最大元素。 C…

SpringBoot原理-配置優先級(黑馬學習筆記)

配置優先級 在我們前面的課程當中&#xff0c;我們已經講解了SpringBoot項目當中支持的三類配置文件&#xff1a; ● application.properties ● application.yml ● application.yaml 在SpringBoot項目當中&#xff0c;我們要想配置一個屬性&#xff0c;可以通過這三種方…

Liunx前后端項目部署(小白也可安裝)

文章目錄 一、CentOS服務器的安裝二、jdk安裝三、Tomcat安裝四、MySQL安裝、五、nginX安裝六、多個項目負載均衡&#xff0c;部署后端項目七、前端項目部署 一、CentOS服務器的安裝 選擇liunx&#xff0c;下面選擇CentOS 7 ![在這里插入圖片描述](https://img-blog.csdnimg.cn…

oracle安裝RAC手動配置互信

cd $ORACLE_HOME/sshsetup grid的話是GI_HOME(一個節點上跑即可) ./sshUserSetup.sh -user oracle -hosts "vma vmb" -advanced -noPromptPassphrase集群&#xff08;oracle,grid都要做&#xff09; node1: [oracle node1~]$ ssh-keygen -t rsa //…

一文講透:可視化大屏中3D元素的融入和使用方法

在可視化大屏中&#xff0c;3D元素融入的越來越多&#xff0c;貝格前端工場經常接到這類項目&#xff0c;很多老鐵認為加個3D效果很easy&#xff0c;其實不然&#xff0c;工序非常復雜&#xff0c;總結如下。 一、什么是3D技術 三維展示&#xff08;3D展示&#xff09;是指使用…

[BUUCTF]-Reverse:reverse3解析

查看ida 從下圖的/3和*4可以推斷得出來是base64加密。 ida里大致意思就是我們輸入的字符串經過base64加密&#xff0c;循環遞減&#xff0c;最后等于str2&#xff0c;那我們輸入的字符串就是flag。 完整exp&#xff1a; import base64 liste3nifIH9b_CndH print(len(list))fl…

循環簡介和基本運算符

根據C Primer Plus第五章進行學習 文章目錄 循環簡介基本運算符 1.賦值運算符&#xff1a;2.加法運算符&#xff1a;3.減法運算符&#xff1a;-2.乘法運算符&#xff1a;*總結 1.循環簡介 如下代碼可以體現不使用循環的局限性&#xff1a; #include<stdio.h> #define AD…

什么是端口,為什么要有端口

一.端口概念 在網絡技術中&#xff0c;端口&#xff08;Port&#xff09;大致有兩種意思&#xff1a;一是物理意義上的端口&#xff0c;比如&#xff0c;ADSL Modem、集線器、交換機、路由器用于連接其他網絡設備的接口&#xff0c;如RJ-45端口、SC端口等等。二是邏輯意義上的端…

【leetcode熱題】楊輝三角 II

難度&#xff1a; 簡單通過率&#xff1a; 41.1%題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 題目描述 給定一個非負索引 k&#xff0c;其中 k ≤ 33&#xff0c;返回楊輝三角的第 k 行。 在楊輝三角中&#xff0c;每個數是它左上方和右上方的數的和。 示…

Doris實戰——金融壹賬通指標中臺的應用實踐

目錄 前言 一、業務痛點 二、早期架構挑戰 三、架構升級 四、一體化指標數據平臺 4.1 構建指標體系 4.2 構建指標平臺功能 五、Doris指標應用實踐 六、未來規劃 原文大佬的這篇指標中臺的應用實踐有借鑒意義&#xff0c;這里摘抄下來用作學習和知識沉淀。 前言 在搭建…

linux學習-C語言流程控制

目錄 順序結構 分支結構 關系預算符 邏輯運算符 if分支 簡單分支 階梯分支 嵌套分支&#xff1a; switch分支 基本形式 switch嵌套 順序結構 括號>單目運算符>雙目運算符>三目運算符>賦值運算符>逗號運算符> 雙目運算符&#xff1a;算數運算…

獵冰超前點播--大結局

第18集 鏈接&#xff1a;https://pan.baidu.com/s/1cHPiioQsQluWQQtP5CC_aA?pwdyyds 提取碼&#xff1a;yyds --來自百度網盤超級會員V3的分享 第17集 鏈接&#xff1a;https://pan.baidu.com/s/1QQD5xX7U9t6W4-xcjVkQFg?pwdyyds 提取碼&#xff1a;yyds --來自百度網…

知識積累(三):深度學習相關概念(查看檢索時看到)

文章目錄 1. 知識蒸餾2. 可微搜索索引&#xff08;DSI&#xff09;參考資料 在找論文時&#xff0c;發現的相關概念。 1. 知識蒸餾 知識蒸餾&#xff08;knowledge distillation&#xff09;是模型壓縮的一種常用的方法&#xff0c;不同于模型壓縮中的剪枝和量化&#xff0c;知…

藍禾,三七互娛,順豐,康冠科技,金證科技24春招內推

藍禾&#xff0c;三七互娛&#xff0c;順豐&#xff0c;康冠科技&#xff0c;金證科技24春招內推 ①藍禾 【崗位】運營類、設計類、研發類&#xff0c;供應鏈類&#xff0c;職能等 【一鍵內推】https://lanhevip.jobs.feishu.cn/index/m/?external_referral_codeT1KYX4B 【校園…

MySQL之索引詳解

華子目錄 索引概述優缺點 索引的原理索引的設計原則索引結構B-tree&#xff08;多路平衡查找樹&#xff09;BtreeHash 為什么InnoDB存儲引擎選擇Btree&#xff1f;索引分類聚集索引選取規則 單列索引和多列索引前綴索引創建索引1.創建表時創建索引2.在已經存在的表上創建索引3.…

微店商品詳情 API 的調用頻率有限制嗎?

微店&#xff08;Weidian&#xff09;的商品詳情 API的調用頻率限制可能會因具體的 API 版本和商家的設置而有所不同。為了確保 API 的穩定性和公平使用&#xff0c;大多數 API 都會設置調用頻率限制&#xff0c;通常這些限制是以每秒查詢率&#xff08;QPS&#xff09;或每日請…

逆變器專題(16)-構網型逆變器與跟網型逆變器

相應仿真原件請移步資源下載 現如今&#xff0c;常規的逆變器控制方法主要分為跟網型以及構網型逆變器 跟網型逆變器即常規意義上的并網逆變器&#xff0c;即輸出電流直接接入大電網&#xff0c;通常為電流源型逆變器&#xff0c;其輸出電流的相位與頻率時隨著電網電壓而隨時進…