LNMP架构的源码编译环境下部署Discuz!社区论坛与Wordpress博客

一.编译安装Nginx

1.关闭防火墙

复制代码
systemctl stop firewalld
systemctl disable 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.解压软件包并编译安装

复制代码
#切换至/opt
cd /opt
 
#解压nginx文件
tar zxvf nginx-1.12.0.tar.gz 
 
#切换目录
cd nginx-1.12.0/
​
#检测环境并安装功能
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
​
#安装
make  -j4 && make install

5.软连接使nginx可以补全

复制代码
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

6.添加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
​
 
##磁盘上的ngin服务更改,运行'systemctl daemon-reload'重新加载单元。
systemctl daemon-reload 
systemctl start nginx

二.编译安装mysql服务

1.安装依赖环境

复制代码
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

2.创建运行用户

复制代码
 useradd -s /sbin/nologin  mysql

3.解压软件包并安装编译

复制代码
#切换至/opt
cd /opt/
 
#解压下载好的压缩包
tar -zxf mysql-boost-5.7.20.tar.gz 
 
#切换至解压后的目录
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_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
 
 
 
#############################注释#############################
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件

4.数据库目录进行权限调整

复制代码
chown -R mysql:mysql /usr/local/mysql/

5.修改配置文件

复制代码
#进入配置文件,把内容全删掉,然后加入以下内容
vim /etc/my.cnf
​
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
​
[mysql]
port = 3306
default-character-set=utf8
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
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.设置环境变量

复制代码
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
 
echo 'export PATH' >> /etc/profile

7.初始化数据库

复制代码
#切换至指定目录
cd /usr/local/mysql/
​
#初始化数据库
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
​
#拷贝文件
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

8.检测数据库开启自启、关闭状态

9.设置mysql密码

复制代码
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
#找不到mysqladmin该命令时做一个软链接
 
mysqladmin -uroot -p password "abc123"
# 命令   -u 用户   -p 旧密码(默认为空)   password 新密码

此处可能出现输入命令mysql或mysqladmin会发现提示命令不存在

这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

首先得知道mysql命令或mysqladmin命令的完整路径,

比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

ln -s /usr/local/mysql/bin/mysql /usr/bin

比如mysqladmin的路径是:/usr/local/mysql/bin/mysqladmin,我们则可以这样执行命令:

ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

10.登录数据库

复制代码
mysql -u root -p 
#登入数据库验证是否成功
quit
#退出数据库

三.安装PHP

1.安装环境依赖包

复制代码
yum -y install \
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 -jxf 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 -j4 && make install

3.修改PHP配置文件

PHP三个配置文件:

php.ini 核心配置文件

php-fpm.conf 进程服务配置文件

www.conf 扩展配置文件

(1)修改php.ini 核心配置文件
复制代码
#复制
cp php.ini-development /usr/local/php/lib/php.ini
 
#进入核心配置文件  
vim /usr/local/php/lib/php.ini
 
#注意格式(空格)修改第1170行和939行(去掉注释
1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
939 date.timezone = Asia/Shanghai
​
#验证安装的模块
/usr/local/php/bin/php -m
(2)修改php-fpm.conf 进程服务配置文件
复制代码
#配置及优化FPM模块
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
​
#进入目录
cd /usr/local/php/etc/
#进入进程服务配置文件 
vim php-fpm.conf
pid = run/php-fpm.pid  #将这一行注释去掉(第17行
​
#创建
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
​
#查看结果
ps aux | grep -c "php-fpm" 

4.配置nginx支持PHP功能

复制代码
#进入nginx主配置文件
vim /usr/local/nginx/conf/nginx.conf 
​
#65到71行 取消注释,修改
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的工作目录
    include        fastcgi_params;
}
​

5.创建并验证PHP测试页

复制代码
#创建网页文件
vim /usr/local/nginx/html/index.php
​
<?php
phpinfo();
?>
​
#重启nginx服务
systemctl restart nginx
​
#在网页测试
http://192.168.227.101/index.php

四.部署Discuz!论坛

1.测试数据库工作

复制代码
#登入数据库
mysql -u root -p 
​
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
​
quit
 
#修改原测试页内容
vim /usr/local/nginx/html/index.php
 
<?php
$link=mysqli_connect('192.168.91.100','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
 
#重启服务
systemctl restart nginx
​

2.部署完整过程

复制代码
#切换至/opt解压论坛压缩包
cd /opt
unzip Discuz_X3.4_SC_UTF8.zip  
​
#切换至解压后的文件
cd dir_SC_UTF8/
​
#拷贝文件至数据
cp -r upload/ /usr/local/nginx/html/bbs/
​
#切换至数据库文件
cd /usr/local/nginx/html/bbs/
​
#授权
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
​
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

3.网页测试

复制代码
http://192.168.227.101/bbs/install/index.php
#安装
 
http://192.168.227.101/bbs/index.php
#可以直接去论坛首页
 
 
#####################数据库信息#########################
 
数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123

五.安装wordpress博客

复制代码
#创建数据库
mysql -u root -p
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
flush privileges;
quit
 
#解压软件包
cd /opt
unzip wordpress-4.9.4-zh_CN.zip
 
#授权
mkdir /usr/local/nginx/html/wordpress
cp -r wordpress/*  /usr/local/nginx/html/wordpress
chown -R nginx:nginx   /usr/local/nginx/html/wordpress/
chmod 777 wordpress/
 
#网页访问
192.168.79.210/wordpress/wp-admin/setup-config.php
 
http://192.168.79.210/wordpress/wp-admin/index.php

六.yum安装LNMP架构(简要过程参考)

复制代码
//准备工作
systemctl stop firewalld
setenfore 0
 
//安装 nginx
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
 
 
yum install nginx -y 
nginx -v
 
systemctl start nginx
systemctl enable nginx
 
 
//安装 mysql 5.7 (mariadb)
yum remove mariadb* -y
 
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/' mysql-community.repo
yum -y install mysql-community-server
或
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
sed -i 's/gpgcheck=1/gpgcheck=0/' mysql-community.repo
yum -y install mysql-server
 
systemctl start mysqld.service
systemctl enable mysqld.service
 
grep "password" /var/log/mysqld.log			#在日志文件中找出root用户的初始密码
2021-07-31T07:55:00.366359Z 1 [Note] A temporary password is generated for root@localhost: ga7%<d<0*jD&
 
grep "password" /var/log/mysqld.log | awk '{print $NF}'
 
//登录 mysql
mysql -uroot -p
Enter password: 		#输入初始密码 ga7%<d<0*jD&
 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';     
#密码设置要求有 大小写字母、数字和符号 组合
 
grant all privileges on *.* to root@"%" identified by "Admin@123" with grant option;
flush privileges;
 
yum -y remove mysql57-community-release-el7-10.noarch     
#为了防止每次yum操作都会自动更新,卸载这个软件
 
 
//安装 php7.2
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
 
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-redis
 
 
systemctl start php-fpm
systemctl enable php-fpm
php -v
 
 
//配置 nginx 支持 PHP 解析
cd /etc/nginx/conf.d
vim default.conf
......
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;  #将 /scripts 修改为nginx的工作目录
        include        fastcgi_params;
    }
 
systemctl restart nginx
 
cd /usr/share/nginx/html
vim index.php
<?php
phpinfo();
?>
 
浏览器访问:http://192.168.79.210/index.php
 
 
//测试mysql是否能连接成功
vim /usr/share/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.79.210','root','Admin@123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
 
浏览器访问:http://192.168.79.210/index.php
相关推荐
安全系统学习2 小时前
网络安全之RCE分析与利用详情
服务器·网络·安全·web安全·系统安全
longze_72 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs3 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue113 小时前
ubuntu 操作记录
linux
风吹落叶花飘荡5 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript
AmosTian5 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
YC运维6 小时前
RIP实验以及核心原理
运维·网络·智能路由器
阿蒙Amon6 小时前
C#随机数生成全面详解:从基础到高级应用
服务器·网络·c#
leo__5207 小时前
自动化运维:使用Ansible简化日常任务
运维·自动化·ansible