LINUX --LNMP部署及应用(LNMP架构部署,nginx,mysql,PHP编译安装,discuz论坛搭建)

耗尽温柔 提交于 2020-08-11 14:44:34

前言

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架构的部署(理论)

1.1:LNMP架构概述
LNMP平台就是 Linux、 Ngnix、 My SQL、PHP的组合架构,需要 Linux服务器、MysαL数据库、PHP解析环境

Ngnix特长:高并发,低资源,处理静态网络访问请求非常强

Apache:静态处理和动态处理都可以做,更适合做动态处理

Nginx将动态资源请求交给PHP当中的fpm处理动态请求

PHP主配置文件:php.ini

Nginx将动态资源分配给FPM或Apache

1.2:MySQL安装配置
为了与 Nginx、PHP环境保持一致,此处选择采用源代码编译的方式安装 My SQL组件
MySQL部署的方法
编译安装 MySQL
优化调整初始化数据库
启动mysq服务并设置root数据库账号的密码
1.3:PHP解析环境的安装
配置网页动静分离,解析PHP,有两种方法可以选择






使用PHP的FPM模块

将访问PHP页面的Web请求转交给 Apache服务器去处理

​较新版本的PHP已经自带FPM模块,用来对PHP解析实例进行管理、优化解析效率

FastCG将 Http Server和动态脚本语言分离开
Nginx专门处理静态请求,转发动态请求
PHP FPM专门解析PHP动态请求
单服务器的LNMP架构通常使用FPM的方式来解析PHP


PHP编译安装步骤

编译安装PHP
编译选项时添加"- enable-fpm”以启用此模块
安装后的调整,主要是配置文件的建立与相应命令工具的路径优化
安装 Zend Guardloader(提高PHP解析效率),并进行加载配置
CGI还有跨平台的功能
1.4:配置Ngnx支持PHP环境
调用本机的php-fpm进程配置方法





建立FPM配置文件php- fpm. conf,修改配置选项,如:PD文件运行用户、服务进程数等

启动php-pm进程

在Ngnx的配置文件中的 serve}配置段配置将PHP的网页请求转给FPM模块处理

在Ngnx的配置文件中的 Server{}配置段配置将PHP的网页请求转给FPM模块处理

[root@localhost~]# vim /usr/local/nginx/conf/nginx. conf Servert{

location ~.php${
root /var/www/kgc;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;







1.5:常见的PHP开源产品介绍
Discuz!

康盛创想(北京困技有限公司推出的一套通用的社区论坛软件系统,如001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一

PHPWind

PHPWind(简称:PW)是一个基于PHP和 MySQL的论坛程序,是国内最受欢迎的通用型论坛程序之一。 PHPWind的前身是onstar,发布于2004年, PHPWind由杭州德天信息技术有限公司开发,软件全面开源免费

二. 具体LNMP架构discuz论坛搭建部署实验

2.1 实验环境:

linux 一台做服务器, win10 一台做客户端访问
软件包:
在这里插入图片描述

2.2. 安装nginx具体步骤

在这里插入图片描述

2.2.1 安装环境软件

[root@shanan opt]# yum -y install gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl \
> zlib-devel \
> pcre

2.2.2 编译安装nginx

解压nginx 软件

[root@shanan opt]# tar zxvf nginx-1.12.2.tar.gz
创建程序账户(不创建家目录 不允许登录)
[root@shanan nginx-1.12.2]# useradd -M -s /sbin/nologin nginx
编译安装
[root@shanan nginx-1.12.2]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \      //设置用户
> --group=nginx \     //设置组
> --with-http_stub_status_module   //安装统计模块
[root@shanan nginx-1.12.2]# make && make install

2.2.3 创建软连接,以及将服务交由systemctl管理

[root@shanan nginx-1.12.2]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@shanan nginx-1.12.2]# cd /usr/local/sbin
[root@shanan sbin]# ls
nginx

[root@shanan bbs]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax isok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@shanan sbin]# cd /opt/nginx-1.12.2/
[root@shanan nginx-1.12.2]# yum install vim

2.2.4 创建配置文件,将服务交由systemctl管理

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

在这里插入图片描述

Wq 退出保存

[root@shanan nginx-1.12.2]# vim /lib/systemd/system/nginx.service
[root@shanan nginx-1.12.2]#  chmod 754 /lib/systemd/system/nginx.service
[root@shanan nginx-1.12.2]# systemctl start nginx.service

2.2.5 检查服务有无运行

[root@shanan nginx-1.12.2]# netstat -natp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN   12145/nginx: master

2.2.6 关闭防火墙,用客户机访问主页测试

[root@shanan nginx-1.12.2]# systemctl stop firewalld
[root@shanan nginx-1.12.2]# iptables -F
[root@shanan nginx-1.12.2]# setenforce 0

在这里插入图片描述

2.3 源码编译安装mysql 软件

2.3.1 解压软件包,创建程序账户

[root@shanan opt]# tar -zxvf mysql-boost-5.7.20.tar.gz
[root@shanan opt]#  useradd -s /sbin/nologin mysql

安装环境软件

[root@shanan opt]# yum -y install \
> ncurses \
> ncurses-devel \
> bison \
> cmake

在这里插入图片描述

2.3.2 编译安装

[root@shanan opt]# cd mysql-5.7.20/

[root@shanan 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@shanan mysql-5.7.20]# make && make install    //此步需运行30分钟左右

2.3.3 修改安装路径的属主属组

[root@shanan mysql-5.7.20]# cd /usr/local/
[root@shanan local]# chown -R mysql.mysql mysql/

编辑配置文件

[root@shanan local]# vim /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306default-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

Wq 保存退出

2.3.4 将变量声明为全局变量

[root@shanan local]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@shanan local]# echo 'export PATH' >> /etc/profile
[root@shanan local]# source /etc/profile

2.3.5 初始化数据库

[root@shanan local]# cd /usr/local/mysql/
[root@shanan mysql]# ls
bin           docs     man         README-test    usr
COPYING       include  mysql-test  share
COPYING-test  lib      README      support-files
[root@shanan mysql]# bin/mysqld \
> --initialize-insecure \
> --user=mysql \
> --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data

在这里插入图片描述

[root@shanan mysql]# cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/
[root@shanan mysql]#  systemctl start mysqld.service
[root@shanan mysql]# netstat -natp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      30548/mysqld

2.3.6 修改mysql密码

[root@shanan mysql]# mysqladmin -u root -p password
Enter password:       // 默认为空。回车

New password:        //输入新密码  asd123

Confirm new password:    //重复  asd123
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@shanan mysql]#
客户端连接mysql 服务器测试
[root@shanan mysql]# mysql -u root -p
Enter password:      //输入刚才设置的密码  asd123

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>

2.4 安装PHP

2.4.1 解压软件包,安装环境软件

[root@shanan opt]# tar jxvf php-7.1.10.tar.bz2

安装环境软件

[root@shanan opt]# 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.4.2 源码编译安装PHP

[root@shanan 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@shanan php-7.1.10]# make && make install
在这里插入图片描述

2.4.3 修改PHP配置参数 ,php有三个配置文件

php有三个配置文件 : {
php.ini核心配置文件
php-fpm.conf进程服务配置文件
www.conf 扩展配置文件
}



[root@shanan php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@shanan ~]# vi /usr/local/php/lib/php.ini

在这里插入图片描述

mysqli.default_socket =  /usr/local/mysql/mysql.sock

在这里插入图片描述

date.timezone = Asia/Shanghai                  // //找到后,前方的;注释要去掉

2.4.4 检查程序模块

root@shanan php-7.1.10]# /usr/local/php/bin/php -m   //检查模块
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]

2.4.5 发现php-fpm 模块没开启,开启此模块

[root@shanan php-7.1.10]# cd /usr/local/php/etc
[root@shanan etc]# cp php-fpm.conf.default php-fpm.conf

[root@shanan etc]#  vim php-fpm.conf

去掉;号,开启此参数
pid = run/php-fpm.pid

在这里插入图片描述

[root@shanan etc]# cd php-fpm.d/
[root@shanan php-fpm.d]# ls
www.conf.default
[root@shanan php-fpm.d]#  cp www.conf.default www.conf
[root@shanan php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

检查服务,发现php-fpm 模块已开启

[root@shanan php-fpm.d]# netstat -natp | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      37741/php-fpm: mast

2.4.6 把PHP的命令让系统识别

[root@shanan php-fpm.d]#  ln -s /usr/local/php/bin/* /usr/local/bin/

2.4.7 修改nginx 的配置文件,实现动静分离

PHP已经自带FPM模块,用来对PHP解析实例进行管理、优化解析效率
Nginx专门处理静态请求,转发动态请求
PHP FPM专门解析PHP动态请求
单服务器的LNMP架构通常使用FPM的方式来解析PHP


[root@shanan php-fpm.d]# cd /usr/local/nginx/conf/
[root@shanan conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[root@shanan conf]#
[root@shanan php-fpm.d]#  ln -s /usr/local/php/bin/* /usr/local/bin/
[root@shanan php-fpm.d]# cd /usr/local/nginx/conf/
[root@shanan conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[root@shanan conf]# vim nginx.conf
 location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;  //动态PHP请求交给9000端口处理
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;  
          //处理请求依赖于nginx站点里面的脚本
            include        fastcgi_params;
        }

在这里插入图片描述

2.4.8 修改nginx 首页配置,测试PHP服务

[root@shanan conf]# systemctl stop nginx.service
[root@shanan conf]# systemctl start nginx.service
[root@shanan conf]#  cd /usr/local/nginx/html/
[root@shanan html]# mv index.html index.php
[root@shanan html]# vim index.php
<?php
phpinfo();
?>

在这里插入图片描述
客户端 浏览器访问 192.168.00.48/index.php 首页访问成功
在这里插入图片描述

2.4.9 创建MySQL数据库并添加用户,及连接测试

[root@shanan 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;
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.00 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.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bbs                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> quit
Bye

修改参数,并测试登录数据库

[root@shanan html]# vim index.php

在这里插入图片描述

<?php
$link=mysqli_connect('192.168.100.48','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!"
?>
~

测试成功
在这里插入图片描述

2.5 安装Discuz论坛服务

2.5.1 将文件解压到bbs 文件夹安装目录

[root@shanan opt]# unzip Discuz_X3.4_SC_UTF8.zip
[root@shanan opt]# ls
dir_SC_UTF8                ncurses-5.6.tar.gz   php-7.1.10.tar.bz2
Discuz_X3.4_SC_UTF8.zip    nginx-1.12.2         说明.htm
mysql-5.7.20               nginx-1.12.2.tar.gz
mysql-boost-5.7.20.tar.gz  php-7.1.10
[root@shanan opt]# cd dir_SC_UTF8/
[root@shanan dir_SC_UTF8]# cp -r upload/ /usr/local//nginx/html/bbs
[root@shanan dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/

2.5.2 设置属主属组为配置文件增加使用权限

[root@shanan bbs]# chown -R root:nginx ./config/
[root@shanan bbs]# chown -R root:nginx ./data/
[root@shanan bbs]# chown -R root:nginx ./uc_client/
[root@shanan bbs]#  chown -R root:nginx ./uc_server/
[root@shanan bbs]#  chmod -R 777 ./config/
[root@shanan bbs]#  chmod -R 777 ./data/
[root@shanan bbs]# chmod -R 777 ./uc_client/
[root@shanan bbs]# chmod -R 777 ./uc_server/

2.5.3 安装Discuz

浏览器访问 http://192.168.100.48/bbs/install/index.php
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.5.4访问后台管理

浏览器访问192.168.100.48/bbs/admin.php ,进入后台管理界面
在这里插入图片描述
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!