Detailed explanation of the LNMP construction process, verification and establishment of the forum

Detailed explanation of the LNMP construction process, verification and establishment of the forum

One, install Nginx service

Preparations: turn off the firewall and security mechanisms

systemctl stop firewalld
systemctl disable firewalld 
setenforce 0
Insert picture description here

1. Install dependent packages

yum -y install pcre-devel zlib-devel gcc gcc-c++ make
Insert picture description here

2. Create a running user

  • (Nginx service program runs as nobody by default, it is recommended to create a special user account for it to control its access permissions more accurately)
useradd -M -s /sbin/nologin nginx
Insert picture description here

3. Compile and install

cd /opt
#拖入压缩包
tar zxvf nginx-1.12.0.tar.gz -C /opt/


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

make -j4 && make install
Insert picture description here


Insert picture description here
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

4. Optimize the path

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

5. 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

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
Insert picture description here
:wq

6. Test page: Firefox browser

  • Enter the local IP: 192.168.80.77
Insert picture description here

Supplement: start and stop nginx service

nginx -t								#检查配置文件是否配置正确
nginx						#启动		
cat /usr/local/nginx/logs/nginx.pid		#先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>		#停止
killall -3 nginx
killall -s QUIT nginx       
Insert picture description here

Two, install MySQL service

1. Install the Mysql environment dependency package

yum -y install \
gcc \
gcc-c++ \
ncurses \				#字符终端下图形互动功能的动态库
ncurses-devel \			#ncurses开发包
bison \					#语法分析器
cmake					#mysql需要用cmake编译安装

yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
Insert picture description here

2. Create a running user

useradd -M -s /sbin/nologin  mysql
Insert picture description here

3. Compile and install

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
cd /opt/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_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=boost \
-DWITH_SYSTEMD=1

make  -j 4 && make install
Insert picture description here


Insert picture description here


Insert picture description here

4. Modify the mysql configuration file

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 picture description here


Insert picture description here

5. Change the owner group of the mysql installation directory and configuration file

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
Insert picture description here

6. Set the path environment variable

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

7. Initialize data

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
Insert picture description here

8. Add mysqld system service

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

systemctl daemon-reload

systemctl start mysqld.service
systemctl enable mysqld
Insert picture description here

9. Add mysql login password

mysqladmin -u root -p password "abc123" ##给root账号设置密码为abc123,提示输入的是原始密码(为空)
Insert picture description here

10. Authorize remote login

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

show databases;    #查看当前已有的数据库
Insert picture description here


quit exit

Three, install and configure the PHP parsing environment

1. The installation environment depends on the package

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 picture description here

2. Compile and install

cd /opt
tar jxvf php-7.1.10.tar.bz2

cd ./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

make -j4 && make install
Insert picture description here
Insert picture description here


Insert picture description here

3. Path optimization

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
Insert picture description here

4. Adjust the PHP configuration file

  • PHP has three configuration files
  • php.ini (main configuration file)
  • php-fpm.conf (process service configuration file)
  • www.conf (extended configuration file)
    Adjust the main configuration file php.ini:
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
##修改1170行
mysqli.default_socket = /usr/local/mysql/mysql.sock
##939行取消注释,修改
date.timezone = Asia/Shanghai

php -m
Insert picture description here


Insert picture description here
Insert picture description here


Insert picture description here

Adjust the process service configuration file php-fpm.conf:

cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
#17行取消注释“;”
pid = run/php-fpm.pid
Insert picture description here


Insert picture description here

Adjust the extended configuration file www.conf:

cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf
Insert picture description here

5. Start php-fpm

  • PHP-FPM (FastCGI Process Manager: FastCGI Process Manager) is a PHPFastCGI manager. Since the Nginx server cannot handle dynamic pages, the dynamic request needs to be handed over to the php-fpm process for analysis by Nginx.
cd /usr/local/php/sbin/
php-fpm -c /usr/local/php/lib/php.ini
netstat -natp | grep 9000
Insert picture description here

6. Configure Nginx to support PHP parsing

vim /usr/local/nginx/conf/nginx.conf
##65行取消注释修改
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的工作目录修改为/usr/local/nginx/html
	include 		fastcgi_params;
}

systemctl restart nginx.service
Insert picture description here


Insert picture description here

7. Verify the PHP test page

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

Browser access: http://192.168.80.77/index.php

Insert picture description here


Insert picture description here

8. Verify that the database is working properly

mysql -u root -p
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
flush privileges;
show databases;    #查看有哪些数据库


vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.80.77','bbsuser','admin123');
if($link) echo "wangdachu!";
else echo "fail!!"
?>
Insert picture description here


Insert picture description here

Browser access: http://192.168.80.77/index.php

Insert picture description here

4. Deploy Discuz, community forum web application

cd /opt
#拖入压缩包
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
cd /opt/dis/dir_SC_UTF8
cp -r upload /usr/local/nginx/html/bbs
Insert picture description here


Insert picture description here

Adjust the permissions of the forum 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/
或
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/
Insert picture description here

Forum page visit: http:192.168.80.77/bbs/install/index.php

数据库服务器:localhost
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123
Insert picture description here


Insert picture description here


Insert picture description here


Insert picture description here


Insert picture description here


Insert picture description here
#论坛内部页面
http://192.168.80.77/bbs/index.php
#论坛后台管理员页面
http://192.168.80.77/bbs/admin.php
Insert picture description here
Insert picture description here