目录
LNMP 指的是一个基于 CentOS/Debian 编写的 Nginx、Linux、MySQL、PHP,可以在独立主 机上轻松的安装 LNMP 生产环境。本案例主要介绍 LNMP 框架安装方法以及部署 Discuz!社 区论坛应用。
1、安装Nginx服务
2、安装MySQL服务
3、安装配置PHP解析环境
4、部署Discuz!社区论坛Web应用
虚拟机容量尽量大点(40g以上)
在安装前需要安装pcre、zlib等软件,因为nginx等软件的配置和允许需要
yum install -y gcc gcc-c++ make pcre pcre-devel expat-devel perl zlib zlib-devel

在安装前需要创建nginx的用户,以便更准确的控制其访问权限,增加灵活性,降低安全风险
useradd -M -s /sbin/nologin nginx

![]()
也可以去官网下载:http://nginx.org/
tar -zxvf nginx-1.15.9.tar.gz #对其进行解压
![]()
cd nginx-1.15.9/
./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module
prefix代表工作目录,决定软件在哪个工作目录
user 管理软件的用户
group 管理软件的组
--with 开启或集成 -http_stub_status_module 集成http协议请求的一些状态统计模块

这样就编译完成了
make && make install #解释安装

这样就成功了
我们进入到/usr/local下看一下
先不要启动,为了便于日后更好的允许,我们需要为其创建软连接,或者复制到/usr/local/sbin
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx

![]()

到此nginx就安装成功了。
vim /lib/systemd/system/nginx.service
- [Unit]
- Description=nginx ####描述
- After=network.target ####描述服务类别
- [Service]
- Type=forking ###后台运行形式
- PIDFile=/usr/local/nginx/logs/nginx.pid ###PID文件位置
- ExecStart=/usr/local/nginx/sbin/nginx ###启动服务
- ExecReload=/usr/bin/kill -s HUP $MAINPID ###根据PID重载配置
- ExecStop=/usr/bin/kill -s QUIT $MAINPID ###根据PID终止进程
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
然后我们测试一下
但是在开启以前一定要前(nginx -s stop)
systemctl start nginx

就OK了
yum -y install \ ncurses \ #字符终端工具包 UTF-8 ncurses-devel \ bison \ #函数库 cmake
yum -y install ncurses ncurses-devel bison cmake

useradd -s /sbin/nologin mysql



cd 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
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径(目录)
- -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定通信文件,连接数据库,通讯协议的载体⭐⭐⭐
- -DSYSCONFDIR=/etc \ #配置文件目录指向/etc
- -DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定pid目录文件
- -DDEFAULT_CHARSET=utf8 \ #字符集设定
- -DDEFAULT_COLLATION=utf8_general_ci \ #字符集设定
- -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #以下三行均为存储引擎ENGINE
- -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
- -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
- -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
- -DMYSQL_DATADIR=/usr/local/mysql/data \ #指定数据存放位置
- -DWITH_BOOST=boost \ #底层C++运营库 独立的表空间结构
- -DWITH_SYSTEMD=1 #守护进程id 守护进程
- ——》跑在后台的一个支持服务正常运行的一个特殊进程

make && make install
整个过程会挺慢的,需要耐心等待


chown -R mysql:mysql /usr/local/mysql

vi /etc/my.cnf
将原有内容删除,替换下面内容
- #删除原有内容,添加以下内容
- [client] #client 用户程序
- port = 3306
- default-character-set=utf8
- socket = /usr/local/mysql/mysql.sock
-
- [mysql] #mysql 软件内容
- port = 3306 #端口
- default-character-set=utf8
- socket = /usr/local/mysql/mysql.sock
-
- [mysqld] #以后对mysql配置时 更多的会针对于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 #PID文件目录
- socket = /usr/local/mysql/mysql.sock #通讯文件
- server-id = 1 #服务id,在之后的mysql集群中用于标识mysql服务器
-
- 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
#更改一下文件属性
chown mysql:mysql /etc/my.cnf
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
cd /usr/local/mysql
#进入目录
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#将mysql称为系统服务,这样就能使用systemctl去启动了

mysqladmin -u root -p password

登陆数据库查看一下

这样数据库就装完了

tar -jxvf php-7.1.10.tar.bz2

yum -y install \
libjpeg \ libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
- #各个依赖功能
- libjpeg \ #jpg图片依赖
- libjpeg-devel \
- libpng libpng-devel \ #png图片依赖
- freetype freetype-devel \ #字体
- libxml2 \ #支持xml
- libxml2-devel \
- zlib zlib-devel \ #压缩格式
- curl curl-devel \ #识别url
- openssl openssl-devel
- ##xml 支持扩展性标记语言,用于承载数据url 网址 openssl 安全性访问/加密访问

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 && make install
还是在/opt中php的源码文件中将php.ini-development复制到/usr/local/php/lib下

cp 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
- date.timezone = Asia/Shanghai

验证一下安装的模块
/usr/local/php/bin/php -m

这样就添加成功了
#复制主配置文件及php-fpm配置文件
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid #开启pid支持(可运行)

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini #启动php 这里的-c代表conf
netstat -anpt | grep 9000

这样就开启了
cd /usr/local/nginx/conf/
vim nginx.conf
- 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;
- }
- #注意下面的location也要添加

在去html目录下去创建一个.php的文件
vim /usr/local/nginx/html/index.php
- phpinfo();
- ?>

然后重启,去查看这个网页

出现这个页面就是连接成功了
mysql -u root -p

这样就成功进入数据库内了
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

更改nginx中index.php中内容
vim /usr/local/nginx/html/index.php ###原来的测试页内容更改如下
- $link=mysqli_connect('192.168.130.156','bbsuser','admin123');
- if($link) echo "
Success!!
"; - else echo "Fail!!";
- ?>

再去测试一下

这样就说明与数据库连接成功了。

unzip Discuz_X3.4_SC_UTF8.zip -d /tmp #解压到tmp目录下

cd /tmp/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/
cd /usr/local/nginx/html/bbs/
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

然后访问一下
192.168.130.156/bbs/install/index.php #这是安装页面

出现这个界面就是应用成功了
点击我同意进行下一步

继续下一步



这样就安装完成了,点击右下角访问

我们就会跳转到这个页面

登陆后页面出不来,我们只需要去删除这个软件
cd /usr/local/nginx/html/bbs/

mv install/ install.lock
chmod 600 install.lock/

然后我们刷新一下页面

到此配置完成
192.168.130.156/bbs/admin.php #这是后台管理页面

192.168.130.156/bbs/index.php

在安装的时候会报错
- -- Configuring incomplete, errors occurred!
- See also "/opt/mysql-5.7.20/CMakeFiles/CMakeOutput.log".
- See also "/opt/mysql-5.7.20/CMakeFiles/CMakeError.log".

这是因为我们缺少一些编译软件,所以在安装时一定要将依赖的环境软件安装全
yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++
再次进入源码包暗处缓存文件就行
cd mysql-5.7.20/ #进入源码包
rm -rf CMakeCache.txt

然后再次编译就行
问题解决!
当我们初始化数据库的时候,可能会报这个错

这个问题很好解决
我们进入MySQL的文件

将data文件删除,再次初始化问题就能得到解决