LNMP架構搭建Discuz論壇

LNMP架構是一種用于搭建Web服務器環境的常用架構,由Linux、Nginx、MySQL和PHP組成

組成功能
Linux作為操作系統的基礎,提供穩定的環境
Nginx作為反向代理服務器,處理客戶端的請求并將他們轉發給后端的應用服務器
MySQL作為關系型數據庫管理系統,用于存儲和管理數據
PHP用來編寫服務器端的動態網頁代碼,與數據庫和其他服務進行交互

一、編譯安裝Nginx

1.關閉防火墻和selinux

systemctl stop firewalld

setenforce 0

2.安裝依賴環境

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3.創建用戶(Nginx 服務程序默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限)

useradd -M -s /sbin/nologin nginx

4.編譯安裝Nginx

cd? /opt

tar? zxvf? nginx-1.22.0.tar.gz -C? /opt

5.開始編譯安裝

cd? nginx-1.22.0

#編譯

./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module

6.安裝并建立軟連接讓系統識別nginx操作命令,可以補全

make? -j4? &&? make? install? ? ? ?##安裝

ln -s? /usr/local/nginx/sbin/nginx? ?/usr/local/sbin? ? ? ##讓系統可以識別nginx操作命令,可以補全

7.添加到系統服務(systemd啟動)

##啟動nginx

systemctl? start? nginx

##新建nginx.service

vim /lib/systemd/system/nginx.service

[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 -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

8.更新nginx配置,啟動并檢查nginx

systemctl? daemon-reload? ##刷新nginx配置

systemctl? start? nginx? ##啟動nginx

systemctl? status? nginx? ##檢查nginx狀態

二、編譯安裝MySQL服務

1.yum安裝依賴環境

##安裝Mysql環境依賴包
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

##yum安裝

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-devel

2.添加用戶

useradd -s /sbin/nologin mysql

3.將MySQL源代碼包放在/opt目錄下

cd? /opt

將mysql-boost-5.7.20.tar.gz安裝包拖進來

tar xf mysql-boost-5.7.20.tar.gz

4.去到mysql目錄下編譯安裝

cd 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? -j4 &&? make? install?

?

5.修改配置文件

#將配置文件的內容全部刪掉,然后加入以下內容

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_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

?

6.更改mysql安裝目錄和配置文件的屬主屬組

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

8.設置路徑環境變量

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

source /etc/profile

9.初始化數據庫

cd? /usr/local/mysql/bin

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

10.添加mysqld系統服務

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

11.刷新服務并啟動mysql服務

systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld

12.修改mysql的登錄密碼

mysqladmin -u root -p password "123"

#給root賬號設置密碼為123,提示輸入的是原始密碼(為空)要求輸入的是原密碼直接回車即可

13.測試,授權遠程登錄

mysql -u root -p

#退出

quit

三、編譯安裝PHP軟件

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.在/opt目錄下安裝并解壓軟件包

cd? /opt

tar jxvf php-7.1.10.tar.bz2

3.檢測編譯安裝環境

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

4.編譯安裝

make -j4 && make install

5.創建軟連接,路徑優化

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

6.調整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/Shanghai

#驗證安裝模塊

php? -m

#修改進程服務配置文件

cd /usr/local/php/etc/

cp ?php-fpm.conf.default php-fpm.conf

vim??php-fpm.conf

--17行--去掉";"注釋
pid = run/php-fpm.pid

#調整擴展配置文件:
cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

7.啟動php-fpm

#創建查看

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini


netstat -anpt | grep 9000

#PHP-FPM(FastCGI Process Manager:FastCGI 進程管理器)是一個 PHPFastCGI 管理器, 由于Nginx服務器不能處理動態頁面,需要由 Nginx 把動態請求交給 php-fpm 進程進行解析

cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service

8.配置nginx支持PHP解析

vim /usr/local/nginx/conf/nginx.conf
--65行--取消注釋,修改
location ~ \.php$ {
?? ?root ? ? ? ? ? html;??
?? ?fastcgi_pass ? 127.0.0.1:9000;
?? ?fastcgi_index ?index.php;
?? ?fastcgi_param ?SCRIPT_FILENAME ?/usr/local/nginx/html$fastcgi_script_name;?? ?#將 /scripts 修改為nginx的工作目錄
? ?#fastcgi_param ?SCRIPT_FILENAME $document_root$fastcgi_script_name; ?#$document_root 代表當前請求在root指令中指定的值
?? ?include ? ? ? ?fastcgi_params;
}

9.驗證PHP測試頁

vim /usr/local/nginx/html/index.php


<?php
phpinfo();
?>

10.重啟nginx.service服務并在網頁測試

systemctl restart nginx.service

http://192.168.7.20/index.php

四、部署Discuz論壇

1.在/opt目錄下安裝并解壓Discuz

cd /opt
unzip Discuz_X3.4_SC_UTF8.zip

2.移動到論壇目錄中拷貝論壇目錄

cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/

3.調整論壇目錄的權限

cd /usr/local/nginx/html/bbs/
chown -R nginx ./config/
chown -R nginx ./data/
chown -R nginx ./uc_client/
chown -R nginx ./uc_server/
都要處理
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

4.在虛擬機上訪問論壇頁面

http://192.168.7.20/bbs/install/index.php

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

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

相關文章

7.2 數據結構

作業 #include <stdio.h> #include <string.h> #include <stdlib.h> struct student {char name[32];int age;double score; }s[3];void stu_input(struct student *s,int n) {printf("請輸入%d個學生的信息&#xff08;姓名&#xff0c;年齡&#xff0…

【服裝識別系統】圖像識別+Python+人工智能+深度學習+算法模型+TensorFlow

一、介紹 服裝識別系統&#xff0c;本系統作為圖像識別方面的一個典型應用&#xff0c;使用Python作為主要編程語言&#xff0c;并通過TensorFlow搭建ResNet50卷積神經算法網絡模型&#xff0c;通過對18種不同的服裝&#xff08;‘黑色連衣裙’, ‘黑色襯衫’, ‘黑色鞋子’, …

Python機器學習實戰:利用決策樹算法預測鳶尾花種類

引言 在人工智能領域&#xff0c;機器學習作為一種強大的工具正在改變我們對數據的認知和處理方式。Python因其豐富的機器學習庫和直觀易用的特性&#xff0c;成為了眾多開發者首選的語言。本篇文章將帶領大家深入了解如何運用Python中的scikit-learn庫來構建決策樹模型&#…

關系型數據庫和矢量數據庫分別適用于哪些領域?

關系型數據庫和矢量數據庫分別適用于哪些領域&#xff1f; 李升偉 關系型數據庫適用于以下領域&#xff1a; 1. 金融行業&#xff1a;如銀行的交易處理、賬戶管理等&#xff0c;對數據的一致性和事務處理要求極高。 2. 企業資源規劃&#xff08;ERP&#xff09;&#xff1a…

Meta 發布 Meta 3D Gen 文本生成3D模型

Meta推出了 Meta 3D Gen &#xff08;3DGen&#xff09;&#xff0c;這是一種用于文本到 3D 資產生成的最先進的快速管道。3DGen 可在一分鐘內提供具有高提示保真度和高質量 3D 形狀和紋理的 3D 資產創建。 它支持基于物理的渲染 &#xff08;PBR&#xff09;&#xff0c;這是…

網口串口(Serialport)服務器

文章所用工具http://t.csdnimg.cn/2gIR8http://t.csdnimg.cn/2gIR8 搭建服務器界面 操作配置文件保存方式類 public string FileName { get; set; }public IniHelper(string name) {this.FileName name; //在構造函數中給路徑賦值} 1 先導入c語言進行讀取操作ini文件的方法 …

Python基于you-get下載網頁上的視頻

? 1.python 下載地址 下載 : https://www.python.org/downloads/ 2. 配置環境變量 配置 python_home 地址 配置 python_scripts 地址 在path 中加入對應配置 3. 驗證 ? C:\Users>python --version Python 3.12.4C:\Users>wheel version wheel 0.43.04. 下載 c…

Android SurfaceFlinger——本地窗口連接EGL API(二十四)

通過前面的文章我們屬性了 Surface 和 EGLSurface 的相關內容,這里我們繼續分析讓兩者相關聯的函數 native_window_api_connect()。 一、連接EGL API 1、window.h native_window_api_connect 源碼位置:/frameworks/native/libs/nativewindow/include/system/window.h st…

2024華為OD機試真題-分月餅-(C++/Python)-C卷D卷-200分

2024華為OD機試題庫-(C卷+D卷)-(JAVA、Python、C++) 題目描述 中秋節,公司分月餅,m 個員工,買了 n 個月餅,m ≤ n,每個員工至少分 1 個月餅,但可以分多個,單人分到最多月餅的個數是 Max1 ,單人分到第二多月餅個數是 Max2 ,Max1 - Max2 ≤ 3 ,單人分到第 n - 1…

Python從入門到放棄——浮點型變量

浮點型變量 前言 上一篇文章我們研究了整數類型變量&#xff0c;本次我們來開始研究一下浮點類型變量。 浮點類型 浮點數在計算機編程中扮演著重要的角色。它們是一種特殊的數據類型&#xff0c;用于存儲和處理小數或實數。在Python中&#xff0c;浮點數是由小數點分隔的…

如何在PhpStorm中運行SQL文件?

如何在PhpStorm中運行SQL文件&#xff1f; 提問&#xff1a;如何在PhpStorm中運行SQL文件&#xff1f; 解答&#xff1a;本文將詳細介紹如何在PhpStorm中運行SQL文件的步驟&#xff0c;包括如何配置數據庫連接和執行SQL腳本&#xff0c;并附帶示例SQL代碼。 1. 配置數據庫連…

迎接創新浪潮!RFID國軍標助力數字化裝備場轉型

隨著大數據、物聯網的飛速發展&#xff0c;數字化轉型已成為軍事發展的核心戰略之一。在這一重大歷史進程中&#xff0c;廣州一芯未來的RFID國軍標呈現出獨特而重要的作用。它不僅提升了裝備管理的效率和準確性&#xff0c;還增強了裝備的安全保障和資源配置的合理性。它以高效…

標題:哈爾濱等保測評:技術、管理和人員的協同作戰

在大數據時代&#xff0c;信息安全成為各行業不可忽視的關鍵議題。哈爾濱作為東北地區重要的經濟和科技中心&#xff0c;其等保測評工作更是成為了網絡安全領域的焦點。等保測評&#xff0c;即信息安全等級保護測評&#xff0c;不僅檢驗著技術的先進性&#xff0c;也考驗著管理…

Linux 下實現 MySQL 數據庫每天自動備份定時備份

創建一個備份腳本文件&#xff0c;例如 backup_mysql.sh&#xff0c;并將以下內容添加到該文件中&#xff1a; #!/bin/bash# 設置數據庫連接信息 DB_USER"your_database_user" DB_PASSWORD"your_database_password" DB_NAME"your_database_name"…

SpringMVC基礎詳解

文章目錄 一、SpringMVC簡介1、什么是MVC2、MVC架構模式與三層模型的區別3、什么是SpringMVC 二、HelloWorld程序1、pom文件2、springmvc.xml3、配置web.xml文件4、html文件5、執行Controller 三、RequestMapping注解1、value屬性1.1、基礎使用1.2、Ant風格&#xff08;模糊匹配…

在CenteOs7上安裝mysql8.0(Super詳細版)

在CenteOs7上安裝mysql8.0 為什么用Mysql8.0&#xff1f;如何下載下載地址需要提前準備下載步驟 服務器上安裝如何上傳到服務器&#xff1f;通過wget下載到服務器并解壓 開始安裝非必須安裝如果全部安裝執行順序 安裝完后&#xff0c;啟動mysql使用“systemctl”檢測mysqld服務…

python中unittest框架和pytest框架區別

unittest框架和pytest框架對比 類型unittest框架pytest框架安裝標準庫&#xff0c;無需額外安裝第三方單元測試庫&#xff0c;需要安裝用例編寫測試類必須要繼承 unittest.TestCase測試類命名以"Test"開頭&#xff0c;無需繼承&#xff0c;用例可以是函數&#xff0…

充分利用智慧校園人事系統,提升黨政職務管理

智慧校園人事系統中的黨政職務管理功能&#xff0c;是專為高校及教育機構設計的&#xff0c;旨在高效、精確地處理與黨政職務相關的各類事務&#xff0c;包括職務任命、任期管理、職責分配、考核評估等&#xff0c;以信息化手段促進黨務及行政工作的透明化、規范化。 該模塊首先…

根據服務器流量使用情況推算出網站流量的方法

根據服務器流量使用情況推算網站流量是一個涉及數據監測、分析和計算的過程。以下是一些基本步驟和方法&#xff1a; 1. 收集數據 首先&#xff0c;你需要獲取服務器的流量數據&#xff0c;這些數據通常包括&#xff1a; - 總流量&#xff1a;一定時間周期內服務器發送和接收的…