• 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    关闭防火墙、核心防护

    [root@yzq data]#systemctl disable firewalld
    [root@yzq data]#systemctl stop firewalld
    [root@yzq data]#setenforce 0
    
    
    • 1
    • 2
    • 3
    • 4

    源码包

    所需要的安装包

    [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
    • 2
    • 3
    • 4

    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

    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
    • 2
    • 3
    • 4

    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
    
    
    • 1
    • 2

    上面调用函数所生成的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
    • 2
    • 3
    • 4

    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
    • 2
    • 3
    • 4

    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 
    
    
    • 1
    • 2
    • 3
    • 4

    主程序 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 
    
    • 1
    • 2

    当 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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    ##配置参数解释##
    [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.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    先把nginx给杀死再启动,防止报错
    在这里插入图片描述

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

    在这里插入图片描述

    2.编译安装MySQL

    2.1安装Mysql环境依赖包

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

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

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

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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
    
    
    • 1
    • 2

    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
    
    
    • 1
    • 2
    • 3
    • 4

    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/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    ./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
    
    
    • 1
    • 2
    • 3
    • 4

    取消注释,让其可运行在这里插入图片描述

    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
    
    
    • 1
    • 2
    • 3

    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 
    
    
    • 1
    • 2
    • 3

    [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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    在这里插入图片描述

    [root@yzq etc]#vi /usr/local/nginx/html/index.php
    [root@yzq etc]#cat /usr/local/nginx/html/index.php
    <?php
    phpinfo();
    ?>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.7 重启nginx,查看服务

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

    在网页测试“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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    [root@yzq dir_SC_UTF8]#ls
    readme  upload  utility
    [root@yzq dir_SC_UTF8]#cp -r upload/ /usr/local/nginx/html/bbs  #需要将upload复制到网站根目录
    
    
    • 1
    • 2
    • 3
    • 4

    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
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    管理员admin登录成功
    在这里插入图片描述
    创建用户yzq登录成功
    在这里插入图片描述

  • 相关阅读:
    unity学习(五):Excel表格读取和数据类生成
    redis的配置文件
    leetcode:254. 因子的组合【经典递归 + 新型递归 + 所有可能的因数分解】
    月度总结 | 2022年08月 | 第一段实习经历总结 | 技术栈学习总结
    MATLAB提取不规则txt文件中的数值数据(简单且实用)
    Docker 使用 IDEA 内置插件构建上传镜像 与 SSH、FTP 功能使用
    Eureka简介与使用浅析
    基于NVIDIA的deepstream进行串行多任务模型开发,DeepStream 多模型组合检测(精)
    cf #823 Div.2(A~C)
    eslint识别不了别名解决方法
  • 原文地址:https://blog.csdn.net/weixin_71429790/article/details/126488107