LNMP&论坛搭建
环境准备(Centos8)
关闭防火墙和SElinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
配置yum源rpel源
cd /etc/yum.repos.d/
rm -rf *
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
yum clean all
下载nginx
wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar -xf nginx-1.22.1.tar.gz //解压
创建系统用户nginx
useradd -r -s /sbin/nologin -M nginx //创建nginx用户
安装依赖包
yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
创建日志存放目录
mkdir -p /var/log/nginx
chown nginx.nginx /var/log/nginx //修改所有者和所属组
编译安装
cd nginx-1.22.1/
cd nginx-1.22.1/
./configure
--prefix=/usr/local/nginx //指定安装路径
--user=nginx //指定用户
--group=nginx //指定用户主
--with-debug //启用调试日志。
--with-http_ssl_module //启用 HTTPS 协议支持,需要 OpenSSL 库。默认情况下未构建此模块。
--with-http_realip_module //启用 ngx_http_realip_module 模块的功能,该模块将客户端地址更改为在指定的 "header " 字段中发送的地址。默认情况下未构建此模块。
--with-http_image_filter_module //启用 ngx_http_image_filter_module 模块,该模块可以转换 JPEG,GIF,PNG 和 WebP 格式的图像。构建和运行此模块需要 libgd 库。默认情况下未构建此模块
--with-http_gunzip_module //对于不支持 “gzip” 的客户端,启用 ngx_http_gunzip_module 模块,使用 “Content-Encoding: gzip” 解压缩响应。默认情况下未构建此模块。
--with-http_gzip_static_module //启用 ngx_http_gzip_static_module 模块,该模块支持发送扩展名为 “.gz” 的预压缩文件,而不是常规文件。默认情况下未构建此模块
--with-http_stub_status_module //启用 ngx_http_stub_status_module 模块,该模块提供对基本状态信息的访问。默认情况下未构建此模块
--http-log-path=/var/log/nginx/access.log //HTTP 服务器的主请求日志文件的名称。默认值:<prefix>/logs/access.log。安装后,可以使用 nginx.conf 中的 access_log 指令更改。
--error-log-path=/var/log/nginx/error.log //错误日志文件的名称。默认值:<prefix>/logs/error.log。安装后,可以使用 nginx.conf 中的 error_log 指令更改
make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install
配置环境变量
echo 'export PATH=/usr/local/nginx/sbin:$PATH' >/etc/profile.d/nginx.sh
source /etc/profile.d/nginx.sh
启动服务
nginx
ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
安装Mysql
安装依赖项
yum -y install gcc gcc-c++ pcre-devel openssl openssl-devel zlib-devel ncurses cmake make bison ncurses*
下载二进制包
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
创建用户和组
groupadd -r mysql
useradd -M -s /sbin/nologin -g mysql mysql
解压
tar -xf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz
创建软连接
mv mysql-5.7.43-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
ln -s mysql-5.7.43-linux-glibc2.12-x86_64/ /usr/local/mysql
修改权限
chown -R mysql.mysql /usr/local/mysql
配置环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
建立数据存放目录
mkdir /opt/data
chown -R mysql.mysql /opt/data/
初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/ //会生成一个临时密码
创建配置文件
vim /etc/my.cnf
[ysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
配置服务启动脚本
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld
启动mysql
/etc/init.d/mysqld start
修改密码
/usr/local/mysql/bin/mysql -uroot -p
set password = password ('555555');
安装PHP
安装依赖项
yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel libcurl-devel.x86_64
安装8.0版本时依赖项版本级别可能不够,可能需要安装一下几项
sqlite* libxml* bzip* readline-devel
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -zxf oniguruma-6.9.4.tar.gz
./autogen.sh && ./configure --prefix=/usr
make && make install
下载并且编译安装
wget https://www.php.net/distributions/php-8.2.11.tar.gz
tar -xf php-8.2.11.tar.gz
./configure --prefix=/usr/local/php7 --with-config-file-path=/etc --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --with-gettext --enable-json --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix
make -j $(cat /proc/cpuinfo |grep processor|wc -l)
make install
配置环境变量
echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh
source /etc/profile.d/php7.sh
配置php-fpm
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
编辑php-fpm的配置文件(/usr/local/php7/etc/php-fpm.conf):
pm.max_children = 50 ;最多同时提供50个进程提供50个并发服务
pm.start_servers = 5 ;启动时启动5个进程
pm.min_spare_servers = 2 ;最小空闲进程数
pm.max_spare_servers = 8 ;最大空闲进程数
修改php配置文件
user=nginx
group=nginx
修改nginx配置文件;使nginx支持php
vim /etc/nginx/conf.d/default.conf
//第10行;添加php格式的主页
index index.html index.htm index.php;
//30~36行;配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的
location ~ .php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
d
o
c
u
m
e
n
t
r
o
o
t
document_root
documentrootfastcgi_script_name;
include fastcgi_params;
}
修改root根目录路径
把fastcgi_param中的/scripts改成$document_root(引用刚才设置的根目录路径)
配置php
vim /etc/php.ini
#修改PHP配置文件
//359行;修改;隐藏php版本
expose_php = Off
//202行;修改;支持php短标签
short_open_tag = On
//以下为zabbix配置要求,数值可以大于但不能小于,不然后面验证不通过
//368行;修改;执行时间
max_execution_time = 300
//378行;修改;接收数据等待时间
max_input_time = 300
//389;每个脚本占用内存
memory_limit = 128M
//656;修改;Post数据大小
post_max_size = 16M
//799;下载文件大小
upload_max_filesize = 2M
//800;添加;可以用$HTTP_RAW_POST_DATA 接受post raw data
always_populate_raw_post_data= -1
/877;取消注释,添加;指定时区
date.timezone = Asia/Shanghai
测试php首页
vim /usr/local/nginx/html/info.php
<?php
phpinfo();
?>
启动php-fpm
service php-fpm start
数据库授权
create database bbs;
grant all on bbs.* to 'bbsuser'@'%' identified by '555555'
flush privileges;
安装论坛
cd /use/local/nginx/html
wgethttps://foruda.gitee.com/attach_file/1696180979264216471/discuz_x3.5_sc_utf8_20231001.zip?token=e440b981136ce9f16e05347f62ae4eee&ts=1697700563&attname=Discuz_X3.5_SC_UTF8_20231001.zip
unzip Discuz_X3.5_SC_UTF8_20231001.zip
cd upload
chmod -R a+w config/ data/ uc_server/ uc_client/ //授权
登录web窗口