欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一步步教你LNMP网站架构的搭建,并搭建discuz论坛

程序员文章站 2024-03-24 13:55:04
...

一、简介

LNMP架构简而言之是由几个不同的服务模块共同运行组成的一种网站架构,即Linux系统下Nginx+MySQL+PHP。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统

二、LNMP架构原理

Ngnix特长:高并发,低资源,处理静态网络访问请求非常强;
Apache:静态处理和动态处理都可以做,更适合做动态处理;
Nginx将动态资源请求交给PHP当中的fpm模块处理动态请求;
PHP主配置文件:php.ini,Nginx将动态资源分配给FPM或Apache,在这个架构里主要是Nginx+PHP对接,PHP必须要在MySQL后安装,因为PHP的动态资源存储在mysql里面,需要MySQL的支持;
MySQL主要是用于存储网页网站资源,通过mysql.sock通信文件与其他模块建立通信。

三、LNMP架构的部署

3.1 nginx的安装

安装依赖环境

yum -y install gcc \
gcc-c++ \
make \
pcre-devel \    #perl语言的正则表达式库
zlib-devel \     #软件包的开发包,一个函数库,包括头文件、静态库、源码等资源

建立运行账户

useradd -M -s /sbin/nologin nginx

解压安装包,并编译安装

[aaa@qq.com ~]# tar zxf nginx-1.12.2.tar.gz 
[aaa@qq.com ~]# cd nginx-1.12.2/   #进入目录
[aaa@qq.com nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module  #配置统计状态模块
[aaa@qq.com nginx-1.12.2]# make && make install

优化nginx服务的管理方式

[aaa@qq.com ~]# ln  -s /usr/local/nginx/sbin/nginx  /usr/bin/   #优化执行路径
[aaa@qq.com ~]# nginx  #启动服务
[aaa@qq.com ~]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20721/nginx: master 
[aaa@qq.com ~]# killall -s QUIT nginx   #关闭服务或killall -3
[aaa@qq.com ~]# nginx
[aaa@qq.com ~]# killall -s HUP nginx   #重新加载服务,或-1
##制作管理脚本
[aaa@qq.com ~]# vi /etc/nginx.conf 
#!/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 -3 $PROG
       ;;
    restart)
       $0 stop
       $0 start
       ;;
    reload)
       killall -1 $PROG
      ;;
    *)
       echo "Usage: $0 {start|stop|reload|status}"
       exit 1
esac
exit 0
[aaa@qq.com ~]# chmod +x /etc/init.d/nginx 
[aaa@qq.com ~]# chkconfig --add nginx
#必须要用systemctl start nginx启动服务之后,才可用systemctl stop/restart

3.2 mysql的安装

安装依赖环境

yum -y install \
ncurses \	'//字符终端的包,方便终端操作'
ncurses-devel \
bison \	'//函数库'	
cmake	'//没有configure,使用cmake'

创建运行账户

[aaa@qq.com ~]# useradd -M -s /sbin/nologin mysql

上传安装包,解压并编译安装

[aaa@qq.com ~]# tar xfz mysql-boost-5.7.20.tar.gz 
[aaa@qq.com ~]# cd mysql-5.7.20/  #进入目录配置编译模块
[aaa@qq.com ~]# cmake \

> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \  #sock;通讯文件,连接数据库,通讯协议的载体
> -DSYSCONFDIR=/etc \
> -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 \
> -DWITH_SYSTEMD=1
> 
make && make install

数据库目录进行权限调整

chown mysql:mysql /usr/local/mysql/

修改配置文件

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

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/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

启动mysql数据库并查看状态

systemctl start mysqld
netstat -anpt | grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      67263/mysqld

设置root登陆密码

mysqladmin -uroot -p password #初始密码为空,直接回车

3.3 PHP解析环境的安装

安装环境依赖包

yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

解压,配置模块,编译安装

[aaa@qq.com ~]# tar jxf php-7.1.10.tar.bz2 
[aaa@qq.com ~]# cd php-7.1.10/
[aaa@qq.com 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
[aaa@qq.com php-7.1.10]# make && make install

修改PHP配置文件
PHP的三个配置文件:

  • php.ini核心配置文件
  • php-fpm.conf进程服务配置文件
  • www.conf 扩展配置文件

在修改配置文件前,先备份

[aaa@qq.com php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini #复制配置文件模板
[aaa@qq.com php-7.1.10]# vi /usr/local/php/lib/php.ini 
# 找到以下两行的位置,修改这两行,并取消注释;符号
mysql.default_socket = /usr/local/mysql/mysql.sock  #与mysql建立通信,至关重要
date.timezone = Asia/Shanghai	#修改时区

配置及优化fpm模块

[aaa@qq.com php-7.1.10]# cd /usr/local/php/etc/
[aaa@qq.com etc]# cp php-fpm.conf.default php-fpm.conf #复制fpm配置文件
[aaa@qq.com etc]# cd php-fpm.d/
[aaa@qq.com php-fpm.d]# cp www.conf.default www.conf #复制扩展配置文件模板
[aaa@qq.com php-fpm.d]# cd ..
[aaa@qq.com etc]# vi php-fpm.conf
pid = run/php-fpm.pid ###去掉;号

启动PHP-fpm模块,开启9000端口,与nginx对接

[aaa@qq.com etc]# ln -s /usr/local/php/bin/ /usr/local/bin/  #优化执行命令路径
[aaa@qq.com etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[aaa@qq.com etc]#  netstat -ntap | grep 9000  #查看端口开启情况
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      47446/php-fpm: mast 
[aaa@qq.com etc]# ps -aux | grep -c php-fpm  #查看php-fpm进程数
4   

配置Nginx支持PHP功能

[aaa@qq.com ~]# vi /usr/local/nginx/conf/nginx.conf
#取消注释,开启PHP功能模块
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #修改php文件路径
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
}
# Nginx 不支持对外部程序的直接调用或者解析,所有的外部程序(包括 PHP)必须通过FastCGI 接口来调用

测试PHP与nginx的对接
在nginx网页目录下,建立PHP网页文件

[aaa@qq.com html]# vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
#重启服务
[aaa@qq.com html]# systemctl restart nginx

客户端访问服务器验证。访问192.168.247.170/index.php

一步步教你LNMP网站架构的搭建,并搭建discuz论坛
测试数据库工作是否正常
数据库授权用户

[aaa@qq.com html]# mysql -uroot -p123123
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.02 sec)
#给数据库用户bbuser授权,允许其对bbs库所有表的操作,%表示任何主机上可登录

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)

修改测试页内容

[aaa@qq.com html]# vi /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.247.170','bbsuser','admin123');  #php连接数据库
if($link) echo "<h1>Success!</h1>";
else echo "Fail!!";
?>

再访问PHP网页
一步步教你LNMP网站架构的搭建,并搭建discuz论坛

3.4 论坛搭建

解压安装包,进入目录

[aaa@qq.com ~]# unzip Discuz_X3.4_SC_UTF8.zip 
[aaa@qq.com ~]# cd dir_SC_UTF8/
[aaa@qq.com dir_SC_UTF8]# cp -r upload /usr/local/nginx/html/bbs  #将安装目录复制到nginx站点目录下
[aaa@qq.com dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/  
#设置论坛安装目录权限
[aaa@qq.com bbs]# chown -R root:nginx ./config/
[aaa@qq.com bbs]# chown -R root:nginx ./data/
[aaa@qq.com bbs]# chown -R root:nginx ./uc_client/
[aaa@qq.com bbs]# chown -R root:nginx ./uc_server/
[aaa@qq.com bbs]# chmod -R 777 ./config/
[aaa@qq.com bbs]# chmod -R 777 ./data/
[aaa@qq.com bbs]# chmod -R 777 ./uc_client/
[aaa@qq.com bbs]# chmod -R 777 ./uc_server/

访问论坛安装路径,进行论坛安装

http://192.168.247.170/bbs/install/index.php
数据库名为bbs,(urtrax修改为bbs)在数据库创建的bbs,数据库用户和密码为授权时的设置,bbsuser,admin123。管理员用户,密码根据需要自行设置。
一步步教你LNMP网站架构的搭建,并搭建discuz论坛
安装完成后,访问论坛网页。
http://192.168.247.170/bbs/index.php

一步步教你LNMP网站架构的搭建,并搭建discuz论坛
访问管理页面http://192.168.247.170/bbs/admin.php

一步步教你LNMP网站架构的搭建,并搭建discuz论坛

相关标签: nginx lnmp