LNMP architecture and forum construction and one-click deployment

Article directory

data flow

insert image description here

1. Nginx service installation

1. Turn off the firewall

[root@king ~]# systemctl stop firewalld
[root@king ~]# systemctl disable firewalld
[root@king ~]# setenforce 0

insert image description here

2. Drag the required software package into the /opt directory

insert image description here

3. Install dependent packages

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

insert image description here

4. Create a running user and group

useradd -M -s /sbin/nologin nginx

insert image description here

5. Configure software modules

cd /opt
tar zxvf nginx-1.20.2.tar.gz
 
cd nginx-1.20.2/
./configure \    
--prefix=/usr/local/nginx \               #指定nginx的安装路径
--user=nginx \                            #指定用户名
--group=nginx \                           #指定组名
--with-http_stub_status_module            #启用 http_stub_status_module 模块以支持状态统计

insert image description here

6. Compile and install Nginx

make -j2 && make install

insert image description here

7. Optimize the configuration file path to facilitate the system to identify Nginx operation commands

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/    #让系统识别nginx的操作命令

insert image description here

8. Add Nginx system 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
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

insert image description here

9. Empower, restart the service and set the boot to start automatically

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

insert image description here

10. Verification service

insert image description here

2. Compile and install MySQL service

1. Drag the required software package into the /opt directory

insert image description here

2. Install environment dependent packages

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

insert image description here

3. Configure software modules

tar zxf boost_1_59_0.tar.gz
tar zxf mysql-5.7.17.tar.gz
mv boost_1_59_0 /usr/local/boost
cd /opt/mysql-5.7.17/

insert image description here

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_EXTRA_CHARSETS=all \
-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=/usr/local/boost \
-DWITH_SYSTEMD=1

insert image description here

4. Compile and install

make -j2 && make install

insert image description here

5. Create mysql user

useradd -M -s /sbin/nologin mysql

insert image description here

6. Modify the mysql configuration file

[root@king mysql-5.7.17]# vim /etc/my.cnf

[client]
port = 3306
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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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

insert image description here

7. Modify the owner and group of the mysql installation directory and configuration files

chown -R mysql:mysql /usr/local/mysql
chown mysql:mysql /etc/my.cnf

insert image description here

8. Set the path environment variable

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile

insert image description here

9. Initialize the database

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

insert image description here

10. Add mysqld system service

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/		#用于systemctl服务管理
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

insert image description here

11. Modify the login password of mysql

mysqladmin -u root -p password "123456"

insert image description here

12. Authorize remote login, then quit to exit

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by '123456';
#授予root用户可以在所有终端远程登录,使用的密码是123456,并对所有数据库和所有表有操作权限
 
show databases;			#查看当前已有的数据库

insert image description here

3. Compile and install php service

1. Drag the required software package into the /opt directory

insert image description here

2. Install the GD library and GD library associated programs to process and generate pictures

yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

insert image description here

3. Configure software modules

tar zxf php-7.1.24.tar.gz
cd /opt/php-7.1.24/
./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

insert image description here

4. Compile and install

make -j2 && make install

insert image description here

5. Copy the template file as the main configuration file of PHP and modify it

cp /opt/php-7.1.24/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini

insert image description here

--939行--取消注释,修改时区
date.timezone = Asia/Shanghai

insert image description here

--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock

insert image description here

6. Optimize the PHP executable program file into the path environment variable directory for system identification

ln -s /usr/local/php/bin/* /usr/local/bin/
php -m 			#查看PHP 加载了哪些模块

insert image description here

7. Process service configuration file php-fpm.conf

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf

vim /usr/local/php/etc/php-fpm.conf

17行取消注释 pid = run/php-fpm.pid

insert image description here
insert image description here

8. Extended configuration file www.conf

cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

insert image description here

9. Start php-fpm

ln -s /usr/local/php/sbin/* /usr/local/sbin
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000

insert image description here

10. Modify the configuration file of the nginx service to allow nginx to support PHP

vim /usr/local/nginx/conf/nginx.conf
--45行,添加index.php
location / {
              root   html;
              index  index.html index.htm index.php;
          }
--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的工作目录
   #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  #$document_root 代表当前请求在root指令中指定的值
	include        fastcgi_params;
}

systemctl restart nginx.service

insert image description here
insert image description here
insert image description here

11. Verify PHP test page

[root@king php-fpm.d]# vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

insert image description here
insert image description here
insert image description here

4. Deploy the Discuz community forum

1. Create a database

mysql -u root -p
mysql> CREATE DATABASE bbs;
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '123456';
#刷新数据库
mysql>flush privileges;

insert image description here

2. Drag the software package required by the forum into the /opt directory and decompress it

unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis

insert image description here

3. Upload the site update package

cd dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs

insert image description here

4. Change the owner of the wheeled directory

调整论坛目录的权限:
cd /usr/local/nginx/html/bbs/
chown -R nginx ./config/
chown -R nginx ./data/
chown -R nginx ./uc_client/
chown -R nginx ./uc_server/

insert image description here

chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

insert image description here

5. Visit the forum page and install the Discuz forum

论坛页面访问
http://192.168.109.12/bbs/install/index.php

数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:123456
管理员账号:admin
管理员密码:123456

insert image description here
insert image description here
insert image description here
insert image description here
insert image description here

6. Test whether new users can be registered

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

insert image description here
insert image description here

5. One-click deployment of LNMP scripts

#!/bin/bash
#关闭系统防火墙和安全机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

cat <<EOF
欢迎使用LNMP架构服务搭建
请将安装包放入/opt目录下
1.安装nginx服务
2.安装mysql
3.安装php
4.一键安装LNMP架构
EOF
read -p "请输入你的选择:" choice

#======编译安装nginx服务======
#1、安装所需开发包和编译环境、编译器
Nginx () {
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#2、创建程序用户,便于准确控制访问
useradd -M -s /sbin/nologin nginx

#3、解压安装包
cd /opt
tar zxf nginx-1.20.2.tar.gz -C /opt/

#4、指定安装路径、指定用户名、组名、启用模块以支持统计状态
cd nginx-1.20.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module


#5、编译及安装
make -j2 && make install

#6、优化配置文件路径,便于系统识别nginx操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

#7、添加nginx系统服务
echo '[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target' > /lib/systemd/system/nginx.service

#8、赋权及开启服务、开启开机自启
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

if [ $? -eq 0 ];then
    echo "nginx服务安装完成"
  else
    echo "服务安装失败,请检查"
  fi

}
#=======编译安装mysql服务=======
#1、安装Mysql环境依赖包
Mysql () {
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

#2、创建程序用户,便于准确控制访问用户
useradd -M -s /sbin/nologin  mysql

#3、配置软件模块
cd /opt
tar zxf boost_1_59_0.tar.gz
tar zxf mysql-5.7.17.tar.gz
mv boost_1_59_0 /usr/local/boost
cd /opt/mysql-5.7.17/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-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=/usr/local/boost \
-DWITH_SYSTEMD=1

#4、编译及安装
make -j2 && make install

#5、修改mysql 配置文件
echo '[client]
port = 3306
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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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' > /etc/my.cnf

#6、更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

#7、设置路径环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile


#8、初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

#9、添加mysqld系统服务
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#用于systemctl服务管理

systemctl daemon-reload    #刷新识别
systemctl start mysqld.service  #开启服务
systemctl enable mysqld   #开机自启动

echo -e "\033[31m mysql安装完成!\033[0m"
if [ $? -eq 0 ];then
    echo "MYSQL安装完成"
  else
    echo "服务安装异常,请检查"
  fi
}

#=====PHP=======
#1、安装环境依赖包
Php () {
yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

#2、配置软件模块
cd /opt
tar xzf php-7.1.24.tar.gz

cd php-7.1.24
./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 \

#3、编译安装
make -j3 && make install


#4、主配置文件:php.ini
cp /opt/php-7.1.24/php.ini-development /usr/local/php/lib/php.ini
sed -i '1170c mysqli.default_socket = /usr/local/mysql/mysql.sock' /usr/local/php/lib/php.ini

sed -i '939c date.timezone = Asia/Shanghai' /usr/local/php/lib/php.ini

#5、优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
php -m
#6、进程服务配置文件:php-fpm.conf
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf

sed -i '17c pid = run/php-fpm.pid' /usr/local/php/etc/php-fpm.conf

#7、扩展配置文件:www.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

#8、启动php-fpm
ln -s /usr/local/php/sbin/* /usr/local/sbin
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
if [ $? -eq 0 ];then
   echo "服务安装成功"
  else
   echo "服务安装失败,请检查"
  fi
}

#9、配置 Nginx 支持php解析
#--65行--取消注释,修改
conf(){
cd /usr/local/nginx/conf/

sed -i '65,71s/#/ /g' nginx.conf

sed -i '69s/\/scripts/\/usr\/local\/nginx\/html/g' nginx.conf
echo '<?php
phpinfo();
?>' > /usr/local/nginx/html/index.php
systemctl restart httpd
}

################调用函数###################################
case $choice in
1)
Nginx
;;
2)
Mysql
;;
3)
Php
;;
4)
nginx
sleep 2
mysql
sleep 2
php
sleep 2
conf
;;
*)
echo "请输入正确选项"
esac

insert image description here

Guess you like

Origin blog.csdn.net/qq_45088125/article/details/124921845