LNMP(Nginx Mysql Php)搭建+部署Discuz!社区论坛Web应用

Nginx编译安装过程

1、编译安装Nginx 1.15 安装及运行控制
试验环境: CentOS 7.6 Nginx 1.15 关闭防火墙、核心防护

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

[root@localhost ~# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel

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

[root@localhost ~]# useradd -M -s /sbin/nologin nginx 

#有了指定用户之后,就可以在编译安装过程就可以 去指定 user和group 

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

[root@localhost ~]#cd /opt
[root@localhost opt]# tar xzvf nginx-1.15.9.tar.gz
[root@localhost opt]# cd nginx-1.15.9
[root@localhost nginx-1.15.9]#
./configure \               
--prefix=/usr/local/nginx \       
--user=nginx \
--group=nginx \                         
--with-http_stub_status_module              

[root@localhost nginx-1.15.9]# make && make instal

路径优化##
为了使 Nginx 服务器的运行更加方便, 可以为主程序 nginx 创建链接文件, 以便管理员
直接执行 “nginx” 命令就可以调用Nginx的主程序


[root@localhost nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.15.9]# ls -l /usr/local/sbin/nginx
Irwxrwxrwx 1 root root 27 228 05:17 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx

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

[root@localhost ~]# vi /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

[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

###为什么754?给了执行权限就可以执行systemctl enable nginx.service了

#OK了,这时候可以用电脑也访问验证了#

在这里插入图片描述

安装MySQL服务

#安装Mysq环境依赖包
环境包中,cmake一定不能少

[root@localhost ~]#
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

上传mysql-boost-5.7.20.tar.gz到opt目录下

[root@localhost ~]# cd /opt
[root@localhost opt]# ll

总用量 75016
-rw-r--r--. 1 root  root  11875579 97 16:17 Discuz_X3.4_SC_UTF8.zip
-rw-r--r--. 1 root  root  48833145 97 16:16 mysql-boost-5.7.20.tar.gz
drwxr-xr-x. 9 nginx nginx      186 92 19:17 nginx-1.15.9
-rw-r--r--. 1 root  root   1031760 226 2019 nginx-1.15.9.tar.gz
-rw-r--r--. 1 root  root  15069098 97 16:16 php-7.1.10.tar.bz2


[root@localhost opt]# tar xzvf mysql-boost-5.7.20.tar.gz
#等待时间过长

[root@localhost opt]#cd /opt/mysql-5.7.20/
[root@localhost 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                                          

######################上面内容讲解#################
1 DCMAKE_INSTALL_PREFIX 指定安装路径
2 DMYSQL_UNIX_ADDR 指定mysql链接性的文件
3 DSYSCONFDIR=/etc 放的mysql的配置文件
4 DSYSTEMD_PID_DIR pid文件指定目录
5-6 字符集
7-10 支持的4个引擎
11 DMYSQL_DATADIR 数据存放位置
12 DWITH_BOOST=boost 底层要支持c++运行库
13 这个为了后面mysql做主从复制的时候用到当中的一个ID序列号

###############################################################


[root@localhost mysql-5.7.20]#make -j3
[root@localhost mysql-5.7.20]#make install -j3

######编译安装####-j3是你的虚拟机分配的核数-1,等于3个线程同时进行编译

#数据库目录进行权限调整###为了让你安装时不报错,踩坑集!!


chown -R mysql:mysql /usr/local/mysql/

建立调整配置文件

##将原内容全部替换为下面的内容
[root@localhost ~]# vi /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



chown mysql:mysql /etc/my.cnf

设置环境变量
为了让系统能够直接识别 mysql/bin下的命令 和mysql/lib 下的各种库


[root@localhost ~]#echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/bin:$PATH' >> /etc/profile
[root@localhost ~]#echo 'export PATH' >> /etc/profile
[root@localhost ~]# source /etc/profile

###########初始化##########

[root@localhost ~]#  cd  /usr/local/mysql/
bin/mysqld \
--initialize-insecure \                        bin/mysql里的初始化的命令
--user=mysql \                                  指定用户
--basedir=/usr/local/mysql \                   指定工作目录
--datadir=/usr/local/mysql/data               定数据存放位置

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

###为什么cp usr/而不是cp /usr/ ?因为现在是在这个目录底下
###为什么要cp?为了让systemctl进行管理,systemctl管理/usr/lib/systemd/system/下的程序

systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      52125/mysqld        
mysqladmin -u root -p password 
#开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

mysql -u root -p     
#提示要输入密码,这个就是刚才设置的


exit  
#这个是从mysql退出的命令

有了以上三步就说明成功了,接下来我们安装PHP

编译安装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

因为要解压bzip的压缩包,最小安装需要安装


yum -y install bzip2

编译安装

[root@localhost opt]# cd /opt
[root@localhost opt]# ll
总用量 75020
-rw-r--r--.  1 root  root  11875579 97 16:17 Discuz_X3.4_SC_UTF8.zip
drwxr-xr-x. 38  7161 31415     4096 97 16:33 mysql-5.7.20
-rw-r--r--.  1 root  root  48833145 97 16:16 mysql-boost-5.7.20.tar.gz
drwxr-xr-x.  9 nginx nginx      186 92 19:17 nginx-1.15.9
-rw-r--r--.  1 root  root   1031760 226 2019 nginx-1.15.9.tar.gz
-rw-r--r--.  1 root  root  15069098 97 16:16 php-7.1.10.tar.bz2
[root@localhost opt]# tar xjvf php-7.1.10.tar.bz2
[root@localhost opt]#cd php-7.1.10

[root@localhost 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

########以上功能注释######
安装目录
–prefix=/usr/local/php \

你的sock文件要指向/usr/local/mysql/mysql.sock,原来文件就在这里,不然链接不了数据库,因为是后台程序,后台程序要找数据库取其他数据
–with-mysql-sock

客户终端处理,你装的mysql 1客户终端工具可以直接取访问mysql服务器,找它定义存储过程,事务等相对应功能
–with-mysqli \

–with-gd \ 图像化处理
–with-jpeg-dir \ 支持图片

–enable-fpm \ 指进行动态请求
–enable-mbstring \ 多字节字符串进行处理
–enable-xml \ xml格式支持
–enable-session \ 支持session会话
–enable-ftp \ 支持FTP功能
–enable-pdo \ 相当于一个通用接口,不管什么数据库过来全是统一接口
–enable-tokenizer \ 函数库,不用管
–enable-zip zip压缩

#####################################################################

编译安装


[root@localhost php-7.1.10]# make && make install

优化


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

[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
#修改
mysqli.default socket =/usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

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

配置及优化FPM模块

[root@localhost php-7.1.10]# cd /usr/local/php/etc/

[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

[root@localhost etc]# cd /usr/local/php/etc/php-fpm.d/

[root@localhost php-fpm.d]# cp www.conf.default  www.conf

[root@localhost php-fpm.d]# cd /usr/local/php/etc/

[root@localhost etc]# vi php-fpm.conf
pid = run/php-fpm.pid                  去掉;
;user = nginx                          添加
;group = nginx                         添加

[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

[root@localhost etc]# netstat -anpt | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      59189/php-fpm: mast 


[root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@localhost etc]# ps aux | grep -c "php-fpm"
4

下面是让nginx支持PHP功能

#在合适的位置添加
[root@localhost etc]# vi /usr/local/nginx/conf/nginx.conf
        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; 
            include                    fastcgi_params;
        }


#添加测试页
[root@localhost etc]# vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

在网页测试 http://20.0.0.26/index.php
在这里插入图片描述
下面测试数据库工作是否正常

[root@localhost etc]# mysql -u root -p

mysql> CREATE DATABASE bbs;                  ###这条设数据库名字

mysql> GRANT all ON bbs.* TO 'bbsadm'@'%' IDENTIFIED BY 'admin123';    #这条设账户和密码 

mysql> GRANT all ON bbs.* TO 'bbsadm'@'localhost' IDENTIFIED BY 'admin123'; #这条是让本地也能访问

mysql> flush privileges;   #这条是刷新数据库

mysql> exit
Bye


将下面内容整个替换掉再测试一下:没问题就开始搭建论坛

[root@localhost etc]# vi /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('20.0.0.26','bbsadm','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

[root@localhost etc]# systemctl restart nginx

在这里插入图片描述

以上LNMP搭建完毕,下面搭建论坛

部署Discuz!社区论坛Web应用

[root@localhost ~]# yum -y install unzip
[root@localhost ~]# cd /opt
[root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip -d /tmp

[root@localhost opt]# cd /tmp/dir_SC_UTF8/
[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs/
[root@localhost dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/

因为属组root没有权限,你必须是程序用户nginx才能使用,所以要改,不然等会验证一定出错
在这个地方我踩了大坑,修改了很长时间才找到原因

[root@localhost bbs]# chown -R root:nginx ./config/
[root@localhost bbs]# chown -R root:nginx ./data/
[root@localhost bbs]# chown -R root:nginx ./uc_client/
[root@localhost bbs]# chown -R root:nginx ./uc_server/

这里为了方便测试,我将所有权限全部放通

[root@localhost bbs]# chmod -R 777 ./config/
[root@localhost bbs]# chmod -R 777 ./data/
[root@localhost bbs]# chmod -R 777 ./uc_client/
[root@localhost bbs]# chmod -R 777 ./uc_server/

接下来是访问验证步骤:我写在模块里方便查看

http://IP/bbs/install/index.php
http://20.0.0.26/bbs/install/index.php
################填写数据库信息#################
数据库服务器: localhost    ###本地架设就用localhost, 如何不是在在本机上就要填写IP地址和端口号
数据库名字: bbs           ###CREATE DATABASE bbs;这条的时候告诉你名字叫bbs
数据库用户名: bbsadm     #谁来管理这个数据库  
(GRANT all ON bbs.* TO 'bbsadm'@'%' IDENTIFIED BY 'admin123';)你建的

数据库密码: admin123
数据表前缀:pre_
###############填写管理员信息
账号:admin
管理员密码:随便设  比如:admin123
###这时候数据库OK了,你回头到20.0.0.26输 mysql -u root -p然后 use bbs; 然后
show tables;看看  ,全是pre_开头,不看也无所谓


########进入后台方式
http://IP/bbs/admin.php             //管理后台
http://20.0.0.26/bbs/admin.php 
账户: admin               #刚刚你在上面设的
密码: admin123         #刚刚你在上面验证的时候设的

首页出现  ###Please delete install/index.php via FTP###

总结:
############在整个lnmp基础之上装了Discuz论坛,其实就是开发个web网站

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来我们进入后台
在这里插入图片描述
在这里插入图片描述
最后一步,我们优化

[root@localhost bbs]# cd /usr/local/nginx/html/bbs/
[root@localhost bbs]# mv install/ install.lock
[root@localhost bbs]# chmod 600 install.lock/

最后我们再登录一次
http://20.0.0.26/bbs/index.php
发现,我们可以在里面自由翱翔了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48190891/article/details/108449518