一、部署LNMP
1.1、LNMP架构简介
定义:
LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器
Mysql是一个小型关系型数据库管理系统
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统
LNMP平台就是 Linux、 Ngnix、 My SQL、PHP的组合架构,需要 Linux服务器、MysαL数据库、PHP解析环境
- Ngnix特长:高并发,低资源,处理静态网络访问请求非常强
- Apache:静态处理和动态处理都可以做,更适合做动态处理
- Nginx将动态资源请求交给PHP当中的fpm处理动态请求
- PHP主配置文件:php.ini
- Nginx将动态资源分配给FPM或Apache
1.2、Nginx编译安装(之前博客有写过就复制过来了)
[root@localhost ~]# yum -y install pcre-devel zlib-devel ##安装编译环境
[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 ##编译安装
[root@localhost ~]# useradd -M -s /sbin/nologin 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
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@localhost ~]# chmod +x /etc/init.d/nginx ###执行脚本
[root@localhost ~]# chkconfig --add nginx
1.3、编译安装Mysql数据库
1、安装MYSQL环境依赖包
[root@localhost ~]# yum -y install \
> ncurses \ ##字符终端的包,方便终端操作##
> ncurses-devel \
> bison \ ##MySQL的解析器,解析C++的解析器
> cmake ##作用和configure是一样的
[root@localhost ~]# useradd -s /sbin/nologin mysql ##创建不可登录的程序用户##
2、上传软件包到root目录下,cmake配置和编译安装
[root@localhost ~]# tar xf mysql-boost-5.7.20.tar.gz
[root@localhost ~]# cd mysql-5.7.20/
[root@localhost mysql-5.7.20]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ## 指定安装路径
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
##sock;通讯文件,连接数据库,通讯协议的载体##
> -DSYSCONFDIR=/etc \ ##放的mysql的配置文件
> -DSYSTEMD_PID_DIR=/usr/local/mysql \ ## pid文件指定目录
> -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 \ ##底层要支持c++运行库
> -DWITH_SYSTEMD=1 ##ID序列号
3 编译安装
[root@localhost mysql-5.7.20]# make && make install
4 数据库目录进行权限调整
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
5、编辑配置文件
[root@localhost ~]# vi /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
6、调整配置文件权限
[root@localhost ~]# chown mysql:mysql /etc/my.cnf
7、设置环境变量
[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
8、初始化数据库
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \ #### mysqld 是数据库初始化启动脚本
--initialize-insecure \ ## bin/mysql里的初始化的命令
--user=mysql \ ## 指定用户
--basedir=/usr/local/mysql \ ## 指定工作目录
--datadir=/usr/local/mysql/data ## 指定数据存放位置
9、编辑启动文件
[root@localhost ~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
10、开启数据库并检查状态
[root@localhost mysql]# systemctl enable mysqld ## 数据库开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost mysql]# systemctl start mysqld ## 开启数据库
[root@localhost mysql]# systemctl status mysqld ## 查看数据库状态
[root@localhost mysql]# netstat -anpt | grep 3306 ## 查看数据库端口状态
tcp6 0 0 :::3306 :::* LISTEN 92257/mysqld
11、设置mysql密码并登录数据库
[root@localhost mysql]# mysqladmin -u root -p password ##刚开始没密码是空的直接回车,然后输入密码12345,再次确认密码##
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]# mysql -u root -p ##输入密码,即可登录到数据库##
. . . . . . . . . . . . . .
mysql> exit
1.4、编译安装PHP环境解析
1、安装PHP的依赖环境包
[root@localhost ~]#
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
2、导入软件包解压,编译安装
[root@localhost ~]# tar xf php-7.1.10.tar.bz2
[root@localhost ~]# cd 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 \
--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@localhost php-7.1.10/]# make & make install
3、配置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
##找到以下两行的位置,修改这两行##
1170行:mysqli.default_socket = /usr/local/mysql/mysql.sock ##数据库通讯文件
939行:date.timezone = Asia/Shanghai ##添加时区
[root@localhost php-7.1.10]# /usr/local/php/bin/php -m ##验证安装的模块
4、配置及优化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
5、让nginx支持PHP功能
[root@localhost etc]# vi /usr/local/nginx/conf/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;
} ##将;去掉,用/usr/local/nginx/html替换原来的路径##
[root@localhost etc]# vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
[root@localhost etc]# systemctl restart nginx ##重启nginx##
##在windows的浏览器中输入http://20.0.0.11/index.php
6、测试
7、测试数据库工作是否正常
[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 ###更改测试页内容
<?php
$link=mysqli_connect('20.0.0.13','bbsuser','admin123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!!";
?>
[root@localhost ~]# systemctl restart nginx
18、在客户端输入 http://20.0.0.13/index.php测试
二、架设Discuz论坛实验
1、将Discuz软件包导入 并进行 解压
[root@localhost ~]# unzip Discuz_X3.4_SC_UTF8.zip ###将安装包放在root目录下并解压缩
[root@localhost ~]# cd dir_SC_UTF8/
2、设置论坛权限
[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs/
[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/
[root@localhost bbs]# systemctl restart nginx
3、进行验证访问论坛,我们打开网站后需要先安装,点击我同意