Centos7构建LNMP平台


LNMP架构的部署思路

●安装 Nginx 服务
●安装 MySQL 服务
●安装配置 PHP 解析环境
●部署 Discuz!社区论坛 Web 应用

搭建LNMP

准备环境

环境

[root@yzq data]#cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core) 
[root@yzq data]#uname -r
3.10.0-957.el7.x86_64

关闭防火墙、核心防护

[root@yzq data]#systemctl disable firewalld
[root@yzq data]#systemctl stop firewalld
[root@yzq data]#setenforce 0

源码包

所需要的安装包

[root@yzq mnt]#ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.15.9.tar.gz
mysql-boost-5.7.20.tar.gz  php-7.1.10.tar.bz2

1.编译安装Nginx

1.1 下载安装Nginx所需依赖包

Nginx 的配置及运行需要 pcre、zlib 等软件包的支持,因此应预先安装这些软件的开发
包(devel),以便提供相应的库和头文件,确保 Nginx 的安装顺利完成

[root@yzq mnt]#yum -y install gcc gcc-c++ pcre-devel zlib-devel make

1.2 创建运行用户、组

Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确
地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为 nginx 的用户,不建
立宿主文件夹,也禁止登录到 Shell 环境。

[root@yzq mnt]#useradd -M -s /sbin/nologin nginx
[root@yzq mnt]#tail -1 /etc/passwd
nginx:x:1005:1005::/home/nginx:/sbin/nologin

1.3 编译安装nginx

配置Nginx的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为nginx;启用 http_stub_status_module 模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要来定,配置前可参考“./configure --help”给出的说明。
./configure
–prefix=/usr/local/nginx
–user=nginx
–group=nginx
–with-http_stub_status_module

在这里插入图片描述


make翻译,编译,make install读条

[root@yzq nginx-1.15.9]# make && make install

上面调用函数所生成的makefile文件

在这里插入图片描述

1.4 路径优化

为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员
直接执行“nginx”命令就可以调用 Nginx 的主程序(让系统可以识别)

[root@yzq nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/    #加入环境变量
[root@yzq nginx-1.15.9]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 27 823 18:31 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

1.5 检查配置文件

与 Apache 的主程序 httpd 类似,Nginx 的主程序也提供了“-t”(test)选项用来对配置文件进行
检查,以便找出不当或错误的配置。配置文件 nginx.conf 默认位于安装目录下的 conf/子目
录中。若要检查位于其他位置的配置文件,可使用“-c”选项来指定路径。

[root@yzq nginx-1.15.9]#nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

1.6 启动、停止nginx服务

直接运行 Nginx 即可启动 Nginx 服务器,这种方式将使用默认的配置文件,若要改用
其他配置文件,需添加“-c 配置文件路径”选项来指定路径。需要注意的是,若服务器中已装
有 httpd 等其他 Web 服务软件,应采取措施(修改端口、停用或卸载)避免冲突。

[root@yzq nginx-1.15.9]#nginx
[root@yzq nginx-1.15.9]#netstat -natp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      26662/nginx: master 

主程序 Nginx 支持标准的进程信号,通过 kill 或 killall 命令发送 HUP 信号表示重载配置,
QUIT 信号表示退出进程,KILL 信号表示杀死进程。例如,若使用 killall 命令,重载配置、
停止服务的操作分别如下所示(通过“-s”选项指定信号种类)

[root@yzq ~]# killall -s HUP nginx      ###选项 -s HUP 等同于 -1  重新加载 systemctl reload nginx 
[root@yzq ~]# killall -s QUIT nginx     ###选项 -s QUIT 等同于 -3  停止服务 systemctl stop nginx 

当 Nginx 进程运行时,PID 号默认存放在 logs/目录下的 nginx.pid 文件中,因此若改用
kill 命令,也可以根据 nginx.pid 文件中的 PID 号来进行控制。

1.7添加 Nginx 系统服务

为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写基于 CentOS 7.6 的
Nginx 服务控制文件使用 systemctl 工具来进行管理,CentOS7.6 系统的管理习惯

[root@yzq nginx-1.15.9]#vim /lib/systemd/system/nginx.service
[root@yzq nginx-1.15.9]#cat /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=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

##配置参数解释##
[Unit]
Description=nginx ####描述
After=network.target ####描述服务类别
[Service]
Type=forking ###后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid ###PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx ###启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID ###根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID ###根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target

正常查看状态发现找不到nginx服务

[root@yzq nginx-1.15.9]#chmod 754 /lib/systemd/system/nginx.service
[root@yzq nginx-1.15.9]#netstat -natp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      26662/nginx: master 
[root@yzq nginx-1.15.9]#systemctl status nginx
Unit nginx.service could not be found.

先把nginx给杀死再启动,防止报错

在这里插入图片描述

1.8检查通过systemctl命令能否正常 启动、停止、重启、重载 Nginx 服务

在这里插入图片描述

2.编译安装MySQL

2.1安装Mysql环境依赖包

[root@yzq nginx-1.15.9]#yum -y install ncurses ncurses-devel bison cmake

yum -y install
ncurses \ #字符终端工具包 UTF-8
ncurses-devel \
bison \ #函数库
cmake

2.2 创建运行用户(关键点:千万不要加 -M)

[root@yzq nginx-1.15.9]#useradd -s /sbin/nologin  mysql

2.3 编译安装

[root@yzq ~]# cd /opt/mysql-5.7.20/
[root@yzq 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
[root@yzq mysql-5.7.20]# make && make install

cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径(目录)
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定通信文件,连接数据库,通讯协议的载体⭐⭐⭐
-DSYSCONFDIR=/etc \ #配置文件目录指向/etc
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定pid目录文件
-DDEFAULT_CHARSET=utf8 \ #字符集设定
-DDEFAULT_COLLATION=utf8_general_ci \ #字符集设定
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #以下三行均为存储引擎ENGINE
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DMYSQL_DATADIR=/usr/local/mysql/data \ #指定数据存放位置
-DWITH_BOOST=boost \ #底层C++运营库 独立的表空间结构
-DWITH_SYSTEMD=1 #守护进程id 守护进程
——》跑在后台的一个支持服务正常运行的一个特殊进程

注意:如果在CMAKE的过程中有报错—
当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
------注意:make: *** No targets specified and no makefile found. Stop.解决方法
1、wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
2.、tar zxvf ncurses-5.6.tar.gz
3、 ./configure -prefix=/usr/local -with-shared-without-debug
4、make
5、make install

2.4 递归修改数据库属主和属组

[root@yzq mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql

2.5 修改调整配置文件

删除原有内容,添加以下内容
[client] #client 用户程序
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql] #mysql 软件内容
port = 3306 #端口
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld] #以后对mysql配置时 更多的会针对于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 #PID文件目录
socket = /usr/local/mysql/mysql.sock #通讯文件
server-id = 1 #服务id,在之后的mysql集群中用于标识mysql服务器

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
#模块,默认加载
#PS:跳过数据库权限验证的命令为:skip-grant-tables,忘记密码

[root@yzq mysql-5.7.20]#vim /etc/my.cnf

2.6 配置环境变量

[root@yzq mysql-5.7.20]#echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@yzq mysql-5.7.20]#echo 'export PATH' >> /etc/profile
[root@yzq mysql-5.7.20]#source /etc/profile

2.7 初始化数据库

[root@yzq mysql-5.7.20]#cd /usr/local/mysql/
[root@yzq mysql]#bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
2022-08-23T11:58:31.954413Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-08-23T11:58:32.152840Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-08-23T11:58:32.186766Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-08-23T11:58:32.241041Z 0 [ERROR] unknown option '--chown mysql:mysql /etc/my.cnf'
2022-08-23T11:58:32.241060Z 0 [ERROR] Aborting

[root@yzq mysql]#
[root@yzq mysql]#cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

2.8 数据库开启自启、 关闭、状态

[root@yzq mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system   //mysql自带控制脚本,直接复制到系统服务文件夹中
[root@yzq mysql]# systemctl start mysqld   //开启服务
[root@yzq mysql]# netstat -antp | grep 3306   //查看状态
tcp6       0      0 :::3306                 :::*                    LISTEN      95872/mysqld 

2.9 修改mysql数据库密码

[root@yzq mysql]#mysqladmin -u root -p password
Enter password:  //刚开始没密码是空的直接回车,然后输入密码123456,在此确认123456,这是在root账户下运行的
New password: 
Confirm new password: 
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

2.10登录数据库

mysql -u root -p ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码123456
quit退出

在这里插入图片描述

3.编译安装PHP

3.1 下载安装PHP所需环境依赖包

[root@yzq ~]#yum -y install \
> libjpeg \
> libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 \
> libxml2-devel \
> zlib zlib-devel \
> curl curl-devel \
> openssl openssl-devel

libjpeg \ #jpg图片依赖
libjpeg-devel
libpng libpng-devel \ #png图片依赖
freetype freetype-devel \ #字体
libxml2 \ #支持xml
libxml2-devel
zlib zlib-devel \ #压缩格式
curl curl-devel \ #识别url
openssl openssl-devel
##xml 支持扩展性标记语言,用于承载数据url 网址 openssl 安全性访问/加密访问

3.2 编译安装

[root@yzq opt]#tar xjvf php-7.1.10.tar.bz2
[root@yzq opt]#ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.15.9         php-7.1.10.tar.bz2
mysql-5.7.20               nginx-1.15.9.tar.gz
mysql-boost-5.7.20.tar.gz  php-7.1.10
[root@yzq opt]#cd php-7.1.10
[root@yzq 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
[root@yzq php-7.1.10]#make && make install

./configure
–prefix=/usr/local/php \ #PHP文件路径
–with-mysql-sock=/usr/local/mysql/mysql.sock \ #sock通讯文件(需要与mysql指定的路径一致)
–with-mysqli \ #with(支持各项功能)
–with-zlib
–with-curl
–with-gd
–with-jpeg-dir
–with-png-dir
–with-freetype-dir
–with-openssl
–enable-fpm \ #开启fpm模块
–enable-mbstring \ #开启多字段模块
–enable-xml \ #开启扩展性标记语言模块
–enable-session \ #会话
–enable-ftp \ #文本传输协议
–enable-pdo \ #函数库
–enable-tokenizer \ #令牌解释器
–enable-zip #ZIP压缩格式

3.3 修改配置文件

//php有三个配置文件 php.ini 核心配置文件 php-fpm.conf 进程服务配置文件
www.conf 扩展配置文件

[root@yzq php-7.1.10]#cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@yzq php-7.1.10]#cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@yzq php-7.1.10]#vim /usr/local/php/etc/php-fpm.conf

取消注释,让其可运行

在这里插入图片描述

3.4 修改核心配置文件

–939行–取消注释,修改
date.timezone = Asia/Shanghai
–1170行–修改
mysqli.default_socket = /usr/local/mysql/mysql.sock

[root@yzq php-7.1.10]#cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
[root@yzq php-7.1.10]#vim /usr/local/php/lib/php.ini

3.5 启动PHP

[root@yzq php-7.1.10]#/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini[root@yzq php-7.1.10]#netstat -antp | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      61858/php-fpm: mast 

[root@yzq php-7.1.10]#/usr/local/php/bin/php -m //验证安装的模块

3.6 让Nginx支持PHP

[root@yzq php-7.1.10]#vim /usr/local/nginx/conf/nginx.conf
--45行,添加index.php
适当位置插入
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;
}

在这里插入图片描述


在这里插入图片描述

[root@yzq etc]#vi /usr/local/nginx/html/index.php
[root@yzq etc]#cat /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

3.7 重启nginx,查看服务

[root@yzq php-7.1.10]#systemctl restart nginx

在网页测试“http://192.168.28.10/index.php”

在这里插入图片描述

4、部署Discuz社区论坛

4.1创建一个数据库及授权用户

mysql -u root -p创建数据库

在这里插入图片描述

4.2下载并部署

安装论坛
将下载的Discuz!程序文件解压,复制upload文件夹的内容到LNMP服务器的网站根目录

[root@yzq opt]#unzip Discuz_X3.4_SC_UTF8.zip -d /opt/discuz  解压zip文件,-d指定解压到的位置
[root@yzq opt]#ls
discuz                   mysql-boost-5.7.20.tar.gz  php-7.1.10
Discuz_X3.4_SC_UTF8.zip  nginx-1.15.9               php-7.1.10.tar.bz2
mysql-5.7.20             nginx-1.15.9.tar.gz

[root@yzq dir_SC_UTF8]#ls
readme  upload  utility
[root@yzq dir_SC_UTF8]#cp -r upload/ /usr/local/nginx/html/bbs  #需要将upload复制到网站根目录

4.3更改论坛属主,适当调整权限,允许nginx拥有必要的写入权限

在这里插入图片描述

4.5网页访问http://192.168.28.10/bbs/install/index.php,安装论坛

注意:
论坛安装页面为:192.168.28.10/bbs/install/index.php
网页访问地址为:192.168.28.10/bbs/index.php
点击我同意

在这里插入图片描述


可在此处修改权限

在这里插入图片描述


在这里插入图片描述


默认选项,点击下一步

在这里插入图片描述


根据之前创建论坛设置填写

在这里插入图片描述


安装完成,可自行添加功能,不需要则直接访问

在这里插入图片描述


论坛页面

在这里插入图片描述

4.6测试能否注册新用户

访问论坛页面:
http://192.168.28.10/bbs/index.php
http://192.168.28.10/bbs/admin.php


管理员admin登录成功

在这里插入图片描述


创建用户yzq登录成功

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340