Linux--源码搭建LNMP架构及部署Discuz论坛
一:安装nginx
1.1:安装nginx环境所需的软件包
[root@192 ~]# yum install pcre-devel zlib-devel gcc gcc-c++ make -y
1.2:创建运行用户、组
[root@192 ~]# useradd -M -s /sbin/nologin nginx
1.3:解压压缩包,编译安装
[root@192 ~]# cd /opt
[root@192 opt]# rz -E
rz waiting to receive.
[root@192 opt]# ls
nginx-1.12.2.tar.gz rh
[root@192 opt]# tar xzvf nginx-1.12.2.tar.gz
[root@192 opt]# cd nginx-1.12.2/
[root@192 nginx-1.12.2]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@192 nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module
[root@192 nginx-1.12.2]# make && make install
1.4:编写nginx的系统管理脚本
[root@192 ~]# vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Server]
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@192 ~]# chmod 754 /lib/systemd/system/nginx.servic
1.5:优化执行路径
[root@192 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
1.5:启动服务
[root@192 nginx-1.12.2]# iptables -F
[root@192 nginx-1.12.2]# setenforce 0
[root@192 nginx-1.12.2]# systemctl start nginx.server
[root@192 nginx-1.12.2]# netstat -antp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11684/nginx: master
二:安装MySQL
2.1:安装MySQL环境所需的软件包
[root@192 ~]# yum install ncurses ncurses-devel bison cmake -y
2.2:创建运行用户
[root@192 ~]# useradd -s /sbin/nologin mysql
2.3:解压压缩包、编译安装
[root@192 ~]# cd /opt
[root@192 opt]# rz -E
rz waiting to receive.
[root@192 opt]# ls
mysql-boost-5.7.20.tar.gz nginx-1.12.2 nginx-1.12.2.tar.gz rh
[root@192 opt]# tar xzvf mysql-boost-5.7.20.tar.gz
[root@192 opt]# cd mysql-5.7.20/
[root@192 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
[root@192 mysql-5.7.20]# make && make install
2.4:对数据库目录进行权限调整
[root@192 mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/
2.5:修改配置文件
[root@192 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
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
2.6:设置环境变量
[root@192 mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@192 mysql-5.7.20]# echo 'export PATH' >> /etc/profile
[root@192 mysql-5.7.20]# source /etc/profile
2.7:初始化数据库
[root@192 mysql-5.7.20]# cd /usr/local/mysql/
[root@192 mysql]# ls
bin COPYING COPYING-test docs include lib man mysql-test README README-test share support-files usr
[root@192 mysql]# bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data
#把服务交给systemd管理
[root@192 mysql]# cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/
2.8:开启数据库服务
[root@192 mysql]# systemctl start mysqld.service
[root@192 mysql]# netstat -antp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 83279/mysqld
2.9:设置mysql密码
[root@192 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.
2.10:登录数据库
[root@192 mysql]# 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>
三:安装PHP
3.1:安装PHP环境的依赖包
[root@192 mysql]# cd
[root@192 ~]# yum -y install \
> libjpeg libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 libxml2-devel \
> zlib zlib-devel \
> curl curl-devel \
> openssl openssl-devel
3.2:解压压缩包、编译安装
[root@192 ~]# cd /opt
[root@192 opt]# rz -E
rz waiting to receive.
[root@192 opt]# ls
mysql-5.7.20 mysql-boost-5.7.20.tar.gz nginx-1.12.2 nginx-1.12.2.tar.gz php-7.1.10.tar.bz2 rh
[root@192 opt]# tar xjvf php-7.1.10.tar.bz2
[root@192 opt]# cd php-7.1.10/
[root@192 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
[root@192 php-7.1.10]# make && make install
3.3:优化执行路径
[root@192 php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@192 php-7.1.10]# ln -s /usr/local/php/bin/* /usr/local/bin/
3.4:修改配置文件
[root@192 php-7.1.10]# vim /usr/local/php/lib/php.ini
...
mysqli.default_socket =/usr/local/mysql/mysql.sock
date.timezone =Asia/Shanghai
...
3.5:配置及优化FPM模块
[root@192 php-7.1.10]# cd /usr/local/php/etc/
[root@192 etc]# ls
pear.conf php-fpm.conf.default php-fpm.d
[root@192 etc]# cp php-fpm.conf.default php-fpm.conf
[root@192 etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php-fpm.d
[root@192 etc]# vim php-fpm.conf
...
pid = run/php-fpm.pid #取消此行注释
...
[root@192 etc]# cd /usr/local/php/etc/php-fpm.d/
[root@192 php-fpm.d]# ls
www.conf.default
[root@192 php-fpm.d]# cp www.conf.default www.conf
3.6:启动服务
[root@192 php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@192 php-fpm.d]# netstat -antp | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 93354/php-fpm: mast
3.7:让nginx支持PHP功能
[root@192 php-fpm.d]# vim /usr/local/nginx/conf/nginx.conf
...
# 去掉65-71行的注释,修改69行的文件路径
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
70 include fastcgi_params;
71 }
...
3.8:编写PHP的首页站点
[root@192 php-fpm.d]# cd /usr/local/nginx/html/
[root@192 html]# ls
50x.html index.html
[root@192 html]# mv index.html index.php
[root@192 html]# vim index.php
<?php
phpinfo();
?>
3.9:重启nginx服务,用宿主机访问验证
至此,整个LNMP架构搭建完成!
四:基于LNMP架构部署Discuz论坛
4.1:创建论坛数据库
mysql> CREATE DATABASE bbs;
Query OK, 1 row affected (0.03 sec)
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4.2:安装论坛
[root@192 ~]# cd /opt
[root@192 opt]# rz -E
rz waiting to receive.
[root@192 opt]# 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
mysql-5.7.20 nginx-1.12.2 php-7.1.10 rh
[root@192 opt]# unzip Discuz_X3.4_SC_UTF8.zip
[root@192 opt]# cd dir_SC_UTF8/
[root@192 dir_SC_UTF8]# ls
readme upload utility
[root@192 dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs
[root@192 dir_SC_UTF8]# cd /usr/local/nginx/html/bbs
# 更改权限
[root@192 upload]# chown -R root:nginx ./config/
[root@192 upload]# chown -R root:nginx ./data/
[root@192 upload]# chown -R root:nginx ./uc_client/
[root@192 upload]# chown -R root:nginx ./uc_server/
[root@192 upload]# chmod -R 777 ./config/
[root@192 upload]# chmod -R 777 ./data/
[root@192 upload]# chmod -R 777 ./uc_client/
[root@192 upload]# chmod -R 777 ./uc_server/
访问网址:http://192.168.209.134/bbs/install/index.php 安装论坛
安装好之后,访问http://192.168.209.134/bbs/index.php
论坛部署成功!