Web Service------Installation of LNMP Architecture (Detailed Installation of Nginx, Mysql, PHP, Discus Forum)

table of Contents

Installation preparation

Baidu cloud installation package address: https://pan.baidu.com/s/1scZip7_eJydmC7-kOqYgnQ
extraction code: 1122
transfer the installation package to the opt directory

systemctl disable firewalld			关闭防火墙
setenforce 0						关闭selinux

1. Installation of Nginx service

1. Install dependent packages

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

2. Create a running user

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 \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make && make install
Insert picture description here


Insert picture description here

4. Optimize the path

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
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
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

chmod 754 /lib/systemd/system/nginx.service
Insert picture description here

6. Start the service

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

2. MySQL service installation

1. Install the Mysql environment dependency package

yum -y install \
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
Insert picture description here
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
Insert picture description here
make && make install
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

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 the database

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. Modify the mysql login password

mysqladmin -u root -p password "666"
Insert picture description here

10. Authorize remote login

mysql -u root -p
Insert picture description here

3. 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
Insert picture description here
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
Insert picture description here
make && make install
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
#调整主配置文件:
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
#调整进程服务配置文件:
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
#调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
Insert picture description here

5. Start php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
Insert picture description here
#PHP-FPM (FastCGI Process Manager: FastCGI Process Manager) is a PHPFastCGI manager. Since the Nginx server cannot handle dynamic pages, Nginx needs to pass dynamic requests to the php-fpm process for analysis.
cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
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的工作目录
	include        fastcgi_params;
}
Insert picture description here
systemctl restart nginx.service
Insert picture description here

7. Verify the PHP test page

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
Insert picture description here
浏览器访问
http://192.168.121.33/index.php
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 '666';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY '666';
flush privileges;
Insert picture description here
vim /usr/local/nginx/html/index.php      		#替换原来的测试页内容
<?php
$link=mysqli_connect('192.168.121.33','bbsuser','666');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
Insert picture description here

9. Browser access

http://192.168.80.10/index.php
Insert picture description here

4. Deploy Discuz Forum

1. Unzip Discuz Forum

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

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

3. Forum page access

http://192.168.121.33/bbs/install/index.php
Insert picture description here


Insert picture description here


Insert picture description here
Database server: localhost ###Use localhost for local setup. How to fill in the IP address and port number instead of on this machine
Database name: bbs
database username: bbsuser
database password: 666
administrator account: admin
administrator password: 666
Insert picture description here

4. Visit the forum page again

http://192.168.121.33/bbs/index.php
http://192.168.121.33/bbs/admin.php
Insert picture description here


Insert picture description here