LNMP architecture build Discuz Forum (real!)

What is LNMP architecture

LNMP platform is Linux, Ngnix, MySQL, PHP combination of architecture, you need a Linux server, MySQL database, PHP parsing environment

MySQL installation configuration

In keeping with Nginx, PHP environment, compile the source code using the Select mounted components MySQL

MySQL deployment method

  • Compile and install MySQL
  • Optimal adjustment
  • Initialize the database
  • Start mysq | services and set the root password for the database account

PHP parsing environment installation

Configuring static and dynamic separation pages, parse PHP, there are two ways to choose

  • Use of FPM PHP module
  • PHP will visit a Web page request to the Apache server to handle

A newer version of PHP has built FPM module, used to manage PHP parsing instance, to optimize resolution efficiency

  • FastCGI will Http Server and dynamic scripting languages ​​separated
  • Nginx deal specifically request static, dynamic forwards the request
  • PHP_FPM specialized] parse PHP dynamic requests

LNMP single server architecture is generally used to parse manner FPM PHP, this process also uses dynamic module FPM request.

PHP compiler installation steps

  • Compile and install PHP
  • Add "--enable-fpm" compile option to enable this module
  • Adjusted after installation, the main path is established with the corresponding command tool profile optimization
  • Installation ZendGuardloader (PHP parsing improve efficiency), and load the configuration

Experimental preparation

1. The toolkit shared out on the host

LNMP architecture build Discuz Forum (real!)

2. Samba service kit to mount the Linux system

[root@localhost ~]# mkdir /mnt/tools
[root@localhost ~]# smbclient -L //192.168.100.50/
Enter SAMBA\root's password: 
OS=[Windows 10 Enterprise LTSC 2019 17763] Server=[Windows 10 Enterprise LTSC 2019 6.3]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       远程 IPC
    share           Disk      
    tools           Disk      
    Users           Disk      
Connection to 192.168.100.50 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
NetBIOS over TCP disabled -- no workgroup available
[root@localhost ~]# mount.cifs //192.168.100.50/tools /mnt/tools/
Password for root@//192.168.100.50/tools:  
[root@localhost ~]# 

Compile and install Nginx Service

1. The service nginx source package to extract the "/ opt /" directory

[root@localhost ~]# cd /mnt/tools/
[root@localhost tools]# ls
awstats-7.6.tar.gz                extundelete-0.2.4.tar.bz2  forbid.png                 jdk-8u191-windows-x64.zip  LAMP-C7  picture.jpg
cronolog-1.6.2-14.el7.x86_64.rpm  fiddler.exe                intellijideahahau2018.rar  john-1.8.0.tar.gz          LNMP
[root@localhost tools]# cd LNMP/
[root@localhost LNMP]# ls
Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.10.tar.bz2  php-7.1.20.tar.gz
[root@localhost LNMP]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
...............//省略解压过程
[root@localhost LNMP]#

2. Compile the required installation kit

[root@localhost ~]# yum install gcc gcc-c++ pcre-devel zlib-devel -y
...........//省略安装过程
[root@localhost ~]#

3. Switch to nginx source package directory service, create a user nginx

[root@localhost LNMP]# cd /opt/
[root@localhost opt]# ls
nginx-1.12.2  rh
[root@localhost opt]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@localhost nginx-1.12.2]# 
[root@localhost nginx-1.12.2]# useradd -M -s /sbin/nologin nginx    //-M 不创建家目录
[root@localhost nginx-1.12.2]# id nginx
uid=1001(nginx) gid=1001(nginx) 组=1001(nginx)
[root@localhost nginx-1.12.2]# 

4. Configure nginx Service

[root@localhost nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \      //安装路径
> --user=nginx \    //属主
> --group=nginx \   //属组
> --with-http_stub_status_module   //启用统计模块

5. compile and install nginx Service

[root@localhost nginx-1.12.2]# make && make install
..........//省略过程
[root@localhost nginx-1.12.2]#

6. Under the system easy to identify the directory service command to establish nginx soft link

[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/   //建立软链接
[root@localhost nginx-1.12.2]# 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
[root@localhost nginx-1.12.2]# 

7. Production nginx service management script (you can choose one)

Script one: "systemctl" Command Management

[root@localhost nginx-1.12.2]# cd /lib/systemd/system
[root@localhost system]# vim 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

[root@localhost system]# chmod 754 nginx.service     //添加执行权限
[root@localhost system]# systemctl start nginx.service   //开启服务
[root@localhost system]# netstat -ntap | grep 80   //查看tcp80端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      52924/nginx: master 
[root@localhost system]# 
[root@localhost system]# systemctl stop firewalld.service   //关闭防火墙
[root@localhost system]# setenforce 0
[root@localhost system]# 

Script II: by "service" command Management

[root@nginx nginx-1.12.2]# vim /etc/init.d/nginx

#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
  start)
    $PROG
    ;;
  stop)
    kill -s QUIT $(cat $PIDF)
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  reload)
    kill -s HUP $(cat $PIDF)
    ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0
[root@nginx nginx-1.12.2]#
[root@nginx nginx-1.12.2]# chmod +x /etc/init.d/nginx   //添加执行权限
[root@nginx nginx-1.12.2]# chkconfig --add nginx    //添加让service能识别nginx服务
[root@nginx nginx-1.12.2]# 
[root@nginx nginx-1.12.2]# service nginx start    //开启服务
[root@nginx nginx-1.12.2]# netstat -ntap | grep 80   //查看tcp80端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      58696/nginx: master 
[root@nginx nginx-1.12.2]#
[root@nginx nginx-1.12.2]# systemctl stop firewalld.service    //关闭防火墙
[root@nginx nginx-1.12.2]# setenforce 0
[root@nginx nginx-1.12.2]# 

8. Use the host browser to access the service nginx

LNMP architecture build Discuz Forum (real!)

Compile and install MySQL

1. Install the required environment compilation package mysql

[root@localhost system]# yum install ncurses ncurses-devel bison cmake -y
.........//省略安装过程
[root@localhost system]# 

2. Add a mysql user

[root@localhost system]# useradd -s /sbin/nologin mysql
[root@localhost system]#

3. mysql extract the source package to "/ opt /" directory

[root@localhost system]# cd /mnt/tools/LNMP/
[root@localhost LNMP]# ls
Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.10.tar.bz2  php-7.1.20.tar.gz
[root@localhost LNMP]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt/
............//省略解压过程
[root@localhost LNMP]#

4. Configure mysql service

[root@localhost LNMP]#cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# ls
boost                cmd-line-utils           Docs                 libevent         mysys      source_downloads  VERSION
BUILD                config.h.cmake           Doxyfile-perfschema  libmysql         mysys_ssl  sql               VERSION.dep
client               configure.cmake          extra                libmysqld        packaging  sql-common        vio
cmake                COPYING                  include              libservices      plugin     storage           win
CMakeCache.txt       CPackConfig.cmake        info_macros.cmake    make_dist.cmake  rapid      strings           zlib
CMakeFiles           CPackSourceConfig.cmake  INSTALL              Makefile         README     support-files
cmake_install.cmake  CTestTestfile.cmake      libbinlogevents      man              regex      testclients
CMakeLists.txt       dbug                     libbinlogstandalone  mysql-test       scripts    unittest
[root@localhost mysql-5.7.20]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \     //安装路径
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \    //定义sock文件连接数据库文件
> -DSYSCONFDIR=/etc \    //配置文件目录
> -DSYSTEMD_PID_DIR=/usr/local/mysql \   //PID文件目录
> -DDEFAULT_CHARSET=utf8 \    //指定字符集,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      //主从参数

5. compile and install MySQL Service

[root@localhost mysql-5.7.20]# make && make install
...........//省略编译过程
[root@localhost mysql-5.7.20]#

6. Change the database catalog owner, is a group

[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost mysql-5.7.20]# 

7. Modify Profile

[root@localhost mysql-5.7.20]# vim /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      //设置mysql的安装目录
datadir = /usr/local/mysql/data    //设置mysql数据库的数据的存放目录
port = 3306                    //设置3306端口
character_set_server=utf8           //中文字符集
pid-file = /usr/local/mysql/mysqld.pid     //pid文件路径
socket = /usr/local/mysql/mysql.sock     //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
//支持模块

8. Add the local environment configuration related commands mysql

[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
//将MySQL写到本地环境配置中
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile   //设置全局环境配置
[root@localhost mysql-5.7.20]# source /etc/profile    //重新加载配置文件
[root@localhost mysql-5.7.20]#

9. initialize the database

[root@localhost mysql-5.7.20]# cd /usr/local/mysql/
[root@localhost mysql]# ls
bin  COPYING  COPYING-test  docs  include  lib  man  mysql-test  README  README-test  share  support-files  usr

[root@localhost mysql]# bin/mysqld \
> --initialize-insecure \    //初始化
> --user=mysql \   //用户
> --basedir=/usr/local/mysql \    //安装目录
> --datadir=/usr/local/mysql/data   //数据库数据文件目录

10. systemctl management easy to use to copy the configuration file to a MySQL server / usr / lib / systemd / system / lower

[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/
//复制
[root@localhost mysql]# systemctl start mysqld.service   //启动服务
[root@localhost mysql]# netstat -ntap | grep 3306    //查看tcp3306端口
tcp6       0      0 :::3306                 :::*                    LISTEN      78684/mysqld        
[root@localhost mysql]# 

11. Configure MySQL password

[root@localhost mysql]# mysqladmin -u root -p password
Enter password: 
New password: 
Confirm new password: 
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@localhost mysql]#

12. attempt to land MySQL database

[root@localhost mysql]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit    //退出数据库
Bye
[root@localhost mysql]# 

Compile and install PHP

1. install the build environment package

[root@localhost mysql]# yum -y install \
> libjpeg libjpeg-devel \   //jpeg图片格式和开发包
> libpng libpng-devel \     //png图片和开发包
> freetype freetype-devel \    //字体库
> libxml2 libxml2-devel \    xml文件库
> zlib zlib-devel \   //压缩库
> curl curl-devel \   //支持数据文件下载工具
> openssl openssl-devel    //安全访问连接

2. Extract the source package

[root@localhost mysql]# cd /mnt/tools/LNMP/
[root@localhost LNMP]# ls
Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.10.tar.bz2  php-7.1.20.tar.gz
[root@localhost LNMP]# tar jxvf php-7.1.10.tar.bz2 -C /opt/
..........//省略过程
[root@localhost LNMP]#

3. Configure PHP Service

[root@localhost LNMP]# cd /opt/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                                          //gd图像支持图片处理库
--with-jpeg-dir                                  //jpeg
--with-png-dir                                   //png
--with-freetype-dir                            //字体
--with-openssl                                  //安全访问连接
--enable-fpm                                    //fpm支持动态请求模块
--enable-mbstring                            //支持多字节的字符串
--enable-xml                                    //xml文件
--enable-session                             //session支持会话
--enable-ftp                                     //ftp服务
--enable-pdo                                   //驱动连接管理
--enable-tokenizer                          //PHP自带函数
--enable-zip                                    //zip压缩包

4. compile and install

[root@localhost php-7.1.10]# make && make install
..........//省略过程
[root@localhost php-7.1.10]#

5. Configure the core configuration file (php.ini core configuration file, php-fpm.conf process service profile, www.conf extended configuration file)

[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini   //复制到安装目录lib库中
[root@localhost php-7.1.10]# vim /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
[PHP Modules]
Core
ctype
curl
date
...........//省略部分内容
zip
zlib

[Zend Modules]

[root@localhost php-7.1.10]# 

6. The configuration and optimization module FPM

[root@localhost php-7.1.10]# cd /usr/local/php/etc/
[root@localhost etc]# ls
pear.conf  php-fpm.conf.default  php-fpm.d
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf   //优化复制默认进程服务配置文件
[root@localhost etc]# vim php-fpm.conf

pid = run/php-fpm.pid    //开启fpm.pid进程

[root@localhost etc]#
[root@localhost etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php-fpm.d
[root@localhost etc]# cd php-fpm.d/
[root@localhost php-fpm.d]# ls
www.conf.default
[root@localhost php-fpm.d]# cp www.conf.default www.conf    //优化复制扩展配置文件
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini 
[root@localhost php-fpm.d]# netstat -ntap | grep 9000   //查看端口信息
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      87363/php-fpm: mast 
[root@localhost php-fpm.d]# ln -s /usr/local/php/bin/* /usr/local/bin/   //查看端口信息
[root@localhost php-fpm.d]# 

7. Let Nginx support PHP function

[root@localhost php-fpm.d]# vim /usr/local/nginx/conf/nginx.conf    //配置nginx配置文件

        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 php-fpm.d]# systemctl stop nginx.service    //关闭服务
[root@localhost php-fpm.d]# systemctl start nginx.service   //开启服务
[root@localhost php-fpm.d]# 

8. Create PHP test page

[root@localhost php-fpm.d]# cd /usr/local/nginx/html/
[root@localhost html]# ls
50x.html  index.html
[root@localhost html]# mv index.html index.php   //修改名称
[root@localhost html]# ls
50x.html  index.php
[root@localhost html]# vim index.php 

<?php
phpinfo();
?>
[root@localhost html]# 

9. The access web pages with host

LNMP architecture build Discuz Forum (real!)

10. Enter the MySQL database to create database bbs

[root@localhost html]# mysql -u root -p
Enter password:     //进入数据库,密码为之前设定的
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database bbs;   //创建bbs数据库
Query OK, 1 row affected (0.01 sec)

mysql> grant all on bbs.* to 'bbsuser'@'%' identified by 'admin123';
//给bbs数据库中的所有表格提升权限,同时创建管理数据库的用户"bbsuser",设置密码。
"%"表示可以从所有终端访问
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> grant all on bbs.* to 'bbsuser'@'localhost' identified by 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;   //刷新数据库
Query OK, 0 rows affected (0.01 sec)

mysql> quit   //退出
Bye
[root@localhost html]#

Installation Discuz forum

1. discuz archive into "/ opt /" directory

[root@localhost html]# cd /mnt/tools/LNMP/
[root@localhost LNMP]# ls
Discuz_X3.4_SC_UTF8.zip  mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.10.tar.bz2  php-7.1.20.tar.gz
[root@localhost LNMP]# unzip Discuz_X3.4_SC_UTF8.zip -d /opt/     //解压
............//省略过程
[root@localhost LNMP]#

2. Under the upload directory to unzip html site, named bbs

[root@localhost LNMP]# cd /opt/dir_SC_UTF8/
[root@localhost dir_SC_UTF8]# ls
readme  upload  utility
[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs
[root@localhost dir_SC_UTF8]#

3. Go bbs site directory, modify the file to the relevant directory is a group and put right

[root@localhost dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/
[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/

4. Access 192.168.52.133/bbs site, installation Discuz forum

LNMP architecture build Discuz Forum (real!)

LNMP architecture build Discuz Forum (real!)

5. Set the operating environment for a new installation

LNMP architecture build Discuz Forum (real!)

6. Install Database

LNMP architecture build Discuz Forum (real!)

7. successfully built forum

LNMP architecture build Discuz Forum (real!)

8. Access Forum

LNMP architecture build Discuz Forum (real!)

Guess you like

Origin blog.51cto.com/14449541/2450498