LNMP指的是一个基于CentOS/Debian编写的Nginx、Linux、MySQL、PHP,可以在独立主机上轻松的安装LNMP生产环境。本案例主要介绍LNMP框架安装方法以及部署Discuz!社区论坛应用。
##案例概述##
1、LNMP指的是一个基于CentOS/Debian编写的Nginx、Linux、MySQL、PHP,可以在独立主机上轻松的安装LNMP生产环境。本案例主要介绍LNMP框架安装方法以及部署Discuz!社区论坛应用。
2、Nginx作为Web服务器:相比Apache,Nginx使用更少的资源,支持更多的并发连接,体现更高的效率。Nginx作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务。Nginx 采用C语言进行编写,不论是系统资源开销还是 CPU使用效率都比Perlbal要好的多。Nginx作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm描述了成功并且美妙的使用经验。Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级
3、MySQL,是一个关系型数据库管理系统,由瑞典MySQL,AB公司开发,目前被Oracle公司收购。MySQL 是最流行的关系型数据库管理系统之一,在WEB`应用方面,MySQL是较好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MysQL作为网站数据库。
4、PHP-FPM(FastCGI Process Manager: FastCGI进程管理器)是一个PHPFastCGI管理器,由于Nginx服务器不能处理动态页面,需要由 Nginx把动态请求交给 php-fpm 处理。
安装环境依赖包
[root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
注:pcre-devel #支持正则表达式
zlib-devel #软件包的开发包,一个函数库
解压缩,并编译安装nginx
[root@localhost ~]# tar zxf nginx-1.12.2.tar.gz
[root@localhost ~]# cd nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module ###统计状态模块
[root@localhost nginx-1.12.2]# make && make install
新建nginx管理用户
[root@localhost ~]# useradd -M -s /sbin/nologin nginx ###创建一个不可登录的程序用户
路径优化,便于系统管理
使Nginx命令的运行更加方便,可以使主程序nginx创建链接文件,以便管理员执行“nginx”命令就可以调用Nginx的主程序
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/bin ###优化执行路径
[root@localhost ~]# nginx ###启动服务
[root@localhost ~]# netstat -anpt | grep nginx ###查看nginx服务是否开启
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 16429/nginx: master
附加:
[root@localhost ~]# killall -s QUIT nginx ###选项-s QUIT等于-3 停止服务
[root@localhost ~]# netstat -anpt | grep nginx
[root@localhost ~]# killall -s HUP nginx ###选项-s HUP等于-1 重新加载
[root@localhost ~]# netstat -anpt | grep nginx
25 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 16488/nginx: master
制作管理脚本并执行
[root@localhost ~]# vi /etc/init.d/nginx ###制作管理脚本
#!/bin/bash
#chkconfig: 35 20 80
#description: nginx server
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
killall -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
killall -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|reload|status}"
exit 1
esac
exit 0 [root@server3 init.d]# chmod +x nginx
[root@server3 init.d]# chkconfig --add nginx
[root@server3 init.d]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3472/nginx: master
安装环境
[root@localhost ~]# yum -y install \
ncurses \ #字符终端包
ncurses-devel \
bison \ #函数库
cmake #没有configure用cmake
创建不可登录的用户
[root@localhost ~]# useradd -s /sbin/nologin mysql
上传安装包到/opt目录下解压缩并进行cmake配置
[root@server3 opt]# tar xf mysql-5.7.20.tar.gz
[root@server3 opt]# cd mysql-5.7.20/
[root@server3 mysql-5.7.20]#
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定将 mysql 数据库程序安装路径。
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定套接字文件的存储路径,数据库连接的通讯文件
-DSYSCONFDIR=/etc \ #系统的配置文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #pid文件的目录
-DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf8。
-DDEFAULT_COLLATION=utf8_general_ci \ #适用于 UTF-8 字符集的通用规则。
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据文件存放路径
-DWITH_BOOST=boost \ //支持boost
-DWITH_SYSTEMD=1 //ID
编译安装
[root@localhost mysql-5.7.20]# make && make install
数据库目录进行权限调整
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
建立调整配置文件
复制代码
#清空内容
[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
附加:make的过程就是构建过程,就是把源码文件经过编译器,编译完成之后生成指定性文件(二进制文件),他人无法识别
调整配置文件权限
[root@localhost ~]# chown mysql:mysql /etc/my.cnf
设置环境变量(识别到bin目录下命令)
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >>/etc/profile
[root@localhost ~]# echo 'export PATH' >> /etc/profile
[root@localhost ~]# source /etc/profile
初始化数据库
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]#bin/mysqld \
--initialize-insecure \ #初始化命令
--user=mysql \ #指定用户
--basedir=/usr/local/mysql \ #指定工作目录
--datadir=/usr/local/mysql/data #指定数据存放位置
编辑启动文件
[root@localhost ~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
启动mysql数据库并查看状态
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# netstat -anpt | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 67263/mysqld
设置登录数据库密码
[root@localhost mysql]# mysqladmin -u root -p passwordEnter password: #默认空密码直接回车
New password: #设定新密码 这边设置abc123
Confirm new password: #再次输入密码
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
安装GD库及GD库相关程序
[root@localhost ~]# yum -y install \
libjpeg \ #jpeg图片识别
libjpeg-devel \ #jpeg开发包
libpng libpng-devel \ #png图片识别还有开发包
freetype freetype-devel \ #freetype 识别字体
libxml2 \ #xml文件格式识别
libxml2-devel \
zlib zlib-devel \ #zlib压缩
curl curl-devel \ #curl 支持文件上传下载,网页端的下载
openssl openssl-devel #身份验证去连接网站
解压缩源码包
[root@localhost ~]# cd /opt
[root@localhost opt]# tar jxf php-7.1.10.tar.bz2
configure配置属性,make编译
--prefix=/usr/local/php \ #指定安装目录
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指向mysql的sock文件,用以后台程序去连接数据库
--with-mysqli \ #客户终端工具,可以直接去访问mysql服务器,去找它进行定义存储过程,事务的处理一些功能
--with-zlib \
--with-curl \
--with-gd \ #gd是一个图像化的处理
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \ #字体
--with-openssl \
--enable-fpm \ #fpm 是指动态请求的模块
--enable-mbstring \ #mbstring 多节点字符串
--enable-xml \ #xml 启用xml格式支持
--enable-session \ #支持session会话
--enable-ftp \ #网页可以ftp的功能
--enable-pdo \ #pdo 类似一个通用的接口一样,下面的不同的数据库的数据,会统一接口接收
--enable-tokenizer \ #tokenizer 是一个函数库
--enable-zip #zip 压缩
#make编译
[root@localhost php-7.1.10]# make && make install
安装最后一步显示为
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
配置PHP的三个配置文件
php有三个配置文件,php.ini 核心配置文件,php-fpm.conf 进程服务配置文件,www.conf扩展配置文件
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
date.timezone = Asia/Shanghai
mysqli.default_socket = /usr/lcoal/mysql/mysql.sock
验证安装的模块
/usr/local/php/bin/php -m
配置及优化fpm模块
[root@localhost php-7.1.10]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# cd php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost etc]# vi php-fpm.conf
pid = run/php-fpm.pid ###去掉;号
[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@localhost etc]# netstat -ntap | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 118685/php-fpm: mas
[root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin
[root@localhost etc]# ps aux | grep -c "php-fpm" ###查看php-fpm进程数
4
配置Nginx支持PHP功能
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf //合适的地方添加,不是修改
location ~ \.php$ {
root /var/www/aa;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
设置检验网页index.php,并重启服务
[root@localhost ~]# vi /var/www/aa/index.php
[root@localhost ~]# systemctl restart nginx
在客户端测试 http://20.0.0.10/index.php
测试数据库工作是否正常
[root@localhost ~]# mysql -u root -p
Enter password: ###输入之前设置的密码
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on bbs.* to 'bbsuser'@'%' identified by 'admin123';
Query OK, 0 rows affected, 1 warning (0.01 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)
[root@localhost ~]# vi /usr/local/nginx/html/index.php ###更改测试页内容
Success!";
else echo "Fail!!";
?>
[root@localhost ~]# systemctl restart nginx
在客户端输入 http://20.0.0.10/index.php测试,出现success!即为正常
安装Discuz文件
[root@localhost ~]# cd /opt
[root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip ###将安装包放在/opt目录下并解压缩
[root@localhost opt]# cd dir_SC_UTF8/
[root@localhost dir_SC_UTF8]# cp -r upload /var/www/aa/bbs
[root@localhost dir_SC_UTF8]# cd /var/www/aa/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
[root@localhost bbs]# systemctl restart nginx
在客户端输入 http://20.0.0.10/bbs/install/index 进行论坛安装
安装完毕再用http://20.0.0.10/bbs/index.php登录论坛
登录http://20.0.0.10/bbs/admin.php可以直接进管理中心