LNMP架构安装及搭建Discuz论坛

Posted 眼下一颗柠檬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP架构安装及搭建Discuz论坛相关的知识,希望对你有一定的参考价值。

文章目录


一、LNMP概述

1.LNMP

LNMP指的是一个基于CentOS/Debian 编写的nginx、Linux、mysqlphp,可以在独立主机上轻松的安装LNMP生产环境

2.Nginx

Nginx作为Web服务器:相比Apache,Nginx使用更少的资源,支持更多的并发连接,体现更高的效率。
Nginx作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务。
Nginx采用C语言进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
Nginx作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器
Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

3.MySQL

MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL是较好的RDBMS(关系数据库管理系统)应用软件。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。

4.PHP

PHP-FPM(进程管理器)是一个PHPFastCGI管理器,由于Nginx服务器不能处理动态页面,需要由Nginx把动态请求交给php-fpm处理

5.LNMP工作原理

工作流程:
1:client(http协议发起请求)-Nginx(location判断为静态页面请求)->html->client
2:client(http协议发起请求)-Nginx(location判断为动态页面请求)->fastcgi协议快速通用网关接口->php-fpm(php进程管理)->调用wapper工作进程->调用php解析->进入MySQL->-返回过程->php-fpm->fastcgi->nginx->http->client工作完成

二、安装Nginx服务

1.关闭防火墙及SElinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.将nginx软件包拖入到/opt/目录下并解压



3.安装环境依赖包

4.创建运行用户、组

5.编译安装nginx



6.优化路径


7.添加nginx系统服务

为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写基于 CentOS 7.6 的
Nginx 服务控制文件使用 systemctl 工具来进行管理

8.检查systemctl命令是否能启动

9.在浏览器中访问验证服务

三、安装MySQL

1.将软件包拖入/opt/并解压

2.安装MySQL环境依赖包

3.创建运行用户

4.进行编译安装


5.对数据库目录进行权限调整(更改属主属组)

6.调整配置文件并更改文件属主属组


7.设置环境变量

8.初始化数据库

9.添加MySQL系统服务,开启服务并查看端口

10.设置MySQL密码

11.远程登录,查看当前已有数据库

四、安装PHP

1.软件包拖入/opt/并解压

2.安装环境依赖包

3.编译安装



4.配置PHP三个配置文件

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

4.1复制模板文件作为PHP的主配置文件并进行修改





验证安装的模块

4.2配置及优化FPM模块

复制主配置文件及php-fpm配置文件

4.3扩展配置文件

5.启动php(-c代表conf)

五、配置Nginx,让Nginx支持PHP功能



在/usr/local/nginx/html下创建一个index.php文件,将以下内容添加
然后重启nginx,查看网页

出现这个界面就是连接成功了

六、测试数据库工作是否正常

进入到数据库


将原来的测试也内容更改如下

重启Nginx,再次访问

连接成功

七、搭建Discuz论坛

1.拖入软件包至/opt/,并解压到/tmp下



2.将upload目录复制到/usr/local/nginx/html/bbs/

3.给与以下目录属主属组并给与权限


5.论坛页面访问,并安装论坛

访问一下http://192.168.226.135/bbs/install/index.php #这是安装界面
这个界面就是成功了,点击我同意




LNMP动态网站架构及web应用部署,搭建discuz论坛

 

 

 

1)部署Nginx

实验tar安装包可找本人拿记得点+关注,感谢亲们支持,评论拿包

systemctl stop firewalld

iptables -F

setenforce 0

1)安装支持软件

yum -y install pcre-devel zlib-devel openssl-devel

2)创建运行用户,组

useradd -M -s /sbin/nologin nginx

3)编译安装nglinx

tar xf nglix-1.14.2.tar.gz -C /usr/src

4)配置编译

cd /usr/src/nginx-1.14.2

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

--with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install

为了使nginx服务器运行方便,可以为主程序nginx 创建链接文件,以便管理员直接执行nginx命令

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin

ll /usr/local/bin/nginx

5nginx运行控制

nginx -t 检测语法

6)启动,停止nginx,如果服务器中已安装有httpd等其他web 服务软件,应关闭避免冲突

netstat -anpt |grep :80

nginx

netstat -anpt |grep :80

查看httpd:192.168.30.22窗口

welocome to nginx!

                               

killall -s HUP nginx  重载配置

killall -s QULT nginx     退出进程

killall -9     可忽略

netstat -anpt |grep :80

为了更好管理nginx进程写个脚本并使用chkconfig工具来进行管理

vim /etc/init.d/nginx

#!/bin/bash

#chkconfig:2345 99 20

 

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

 

case "$1" in

start)

        $PROG

;;

stop)

        kill -s QUIT $(cat $PIDF)

;;

restart)

        $0 stop

        $0 start

;;

reload)

        kill -s HUP $(cat $PIDF)

;;

*)

        echo "Usage:$0{start|stop|restart|reload}"

        exit 1

esac

exit 0

 

 

netstat -anpt |grep :80     

 

给上权限

chmod +x /etc/init.d/nginx

chkconfig --add nginx

chkconfig nginx on

chkconfig --list nginx

然后测试脚本

/etc/init.d/nginx stop

netstat -anpt |grep :80

/etc/init.d/nginx start

netstat -anpt |grep :80

http{}配置的server{} 子配置文件内添加如下配置项

vim /usr/local/nginx/conf/nginx.conf

location /status {

stub_status on

access_log off;

}

systemctl restart nginx

浏览器访问http://192.168.30.22/status

 

 

虚拟主机应用

mkdir /usr/local/nginx/html/zc

mkdir /usr/local/nginx/html/cloud

echo "<h1>www.zc.com</h1>"> /usr/local/nginx/html/zc/index.html

echo "<h1>www.cloud.com</h1>" > /usr/local/nginx/html/cloud/index.html

vim /usr/local/nginx/conf/nginx.conf

 

user  nginx;

worker_processes  2;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    log_format  main  \'$remote_addr - $remote_user [$time_local] "$request" \'

                      \'$status $body_bytes_sent "$http_referer" \'

                      \'"$http_user_agent" "$http_x_forwarded_for"\';

 

    access_log  logs/access.log  main;

 

    sendfile        on;

 

 

    keepalive_timeout  65;

 

 

    server {

        listen       80;

        server_name  www.zc.com;

 

        charset utf-8;

 

        access_log  logs/zc.access.log  main;

 

        location / {

            root   html/zc;

            index  index.html index.htm;

        }

}

 

    server {

        listen       81;

        server_name  www.cloud.com;

 

        charset utf-8;

 

        access_log  logs/cloud.access.log  main;

 

        location / {

            root   html/cloud;

            index  index.html index.html;

        }

     }

}

 

      

systemctl restart nginx

vim /etc/hosts

192.168.30.24 www.zc.com

192.168.30.24 www.cloud.com

 

虚拟主机访问测试   elinks 命令需要yum -y install elinks安装

elinks --dump http://www.zc.com

elinks --dump http://www.cloud.com

 

http://192.168.30.24

http://192.168.30.24:81

 

 

2)部署mysql 数据库

1)安装mysql 数据库

1)基于源码包安装mysql

rpm -q mysql mysql-server

 

ncurses-deve1 cmake的依赖包

yum -y install ncurses-devel

rpm -q ncurses-dever

 

安装配置工具cmake

tar xf cmake-3.13.1.tar.gz -C /usr/src

cd /usr/src/cmake-3.13.1

./configure && gmake && gmake install

 

建议采用yum安装方式

yum -y install cmake

rpm -q cmake

 

创建运行 用户

useradd -M -s /sbin/nologin mysql

解包,配置,编译,安装

tar xf mysql-5.7.24.tar.gz -C /usr/src

cd /usr/src/mysql-5.7.24

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc && make && make install

出现错误然后解决

mkdir /usr/local/boost

cd /usr/local/boost    把包复制到这个目录

tar xf boost_1_59_0.tar.gz

cd /usr/src/mysql-5.7.24

 

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITH_BOOST=/usr/local/boost && make && make install

2)安装后的调整

cd  /usr/local/mysql

chown -R mysql:mysql ./

建立配置文件

vim /etc/my.cnf

[mysqld]

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

 

[mysqld_safe]

log-error=/usr/local/mysql/data/mysql.log

pid-file=/usr/local/mysql/data/mysql.pid

3)初始化数据库

 

./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

4)设置环境变量

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

. /etc/profile

 

5)添加系统服务

cd /usr/src/mysql-5.7.24

cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh

chmod +x /usr/local/mysql/bin/mysqld.sh

vim /usr/lib/systemd/system/mysqld.service

[Unit]

Description=MySQL Server

After=network.target

[Service]

User=mysql

Group=mysql

 

Type=forking

PLDFile=/usr/local/mysql/data/localhost.pid

ExecStart=/usr/local/mysql/bin/mysqld.sh start

ExecStop=/usr/local/mysql/bin/mysqld.sh stop

 

[lnstall]

WantedBy=mutil-user.target

 

systemctl start mysqld

systemctl enable mysqld

 

systemctl status mysqld

 

netstat -lnpt |grep mysqld

后期修改数据库用户的密码

systemctl stop mysqld

vim /etc/my.cnf

添加skip-grant-tables

启动服务systemctl start mysqld

mysql -uroot -p

mysql> use mysql;

mysql> update mysql.user set authentication_string=password("123456789") where user=\'root\';

mysql> flush privileges;

mysql> exit

 

关闭服务,systemctl stop mysqld

skip-grant-tables#注释或删除

systemctl restart mysqld  启动服务

 

mysql -uroot -p进去密码已修改为123456789

 

此命令可以在在以后修改时生效 mysqladmin -u root -p\'123456789\' password \'012345678\'

3安装PHP 解析环境

 

 

1)编译安装php

yum -y install gd libxml2-devel libjpeg-devel libpng-devel

 

tar xf php-5.6.39.tar.gz -C /usr/src

cd /usr/src/php-5.6.39

./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/lcoal/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install

2)安装后调整

cp php.ini-production /usr/local/php5/php.ini

ln -s /usr/local/php5/bin/* /usr/local/bin/

ln -s /usr/local/php5/sbin/* /usr/local/sbin

3)安装zendguardlander 注意,若是64位系统,该软件得到其官网下载64位的相应软件包,若用32位的就会报错

 

tar xf zend-loader-php5.6-linux-x86_64_ipdate1.tar.gz -C /usr/src

cd /usr/src/zend-loader-php5.6-linux-x86-64

cp ZendGuardLoader.so /usr/local/php5/lib/php

vim /usr/local/php5/php.ini

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

zend_loader.enable=1

 

3,配置nginx 支持PHP环境

若要让Nginx能够解析PHP网页,有两种方法可以选择,其一:Nginx充当中介,将访问PHP页面的web

请求转交给其他服务器(lnmp)去处理,其二: 通过使用PHPFPM模块来调用本机的PHP环境。

 

如果选用FPM 方式,则需要先启动PHP-FPM 进程,以便监听PHP解析请求,参考范例,建立php-fpm.conf

配置文件,并修改其中的pid文件,运行用户,服务数等相关设置,然后启动PHP-FPM程序即可

cd /usr/local/php5/etc

cp php-fpm.conf.default php-fpm.conf

useradd -M -s /sbin/nologin php

vim php-fpm.conf

25 pid = run/php-fpm.pid   //确认pid文件位置

149 user = php     //运行用户

150 group = php   //运行组

246 pm.start_servers = 20   //启动时开启的进程数

251 pm.min_spare_server = 5   //最少空闲进程数

256 pm.max_spare_servers = 35  //最大空闲进程数

241 pm.max_children = 50  //最多空闲进程数

 

/usr/local/sbin/php-fpm

netstat -anpt |grep php-fpm

 

Php-fpm.conf文件中,pid配置行指出了pid信息的存放位置,对应的实际路径为/usr/local/php5/var/run/php-fpm.pid

根据上述信息,可以修改Nginx服务脚本,以便在启动/停止nginx服务器时将PHP-fpm进程也自动启动/停止

vim /etc/init.d/nginx

#!/bin/bash

#chkconfig:2345 99 20

 

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

PROG_FPM="/usr/local/sbin/php-fpm"

PIDF_FPM="/usr/local/php5/var/run/php-fpm.pid"

 

case "$1" in

start)

        $PROG

        $PROG_FPM

;;

stop)

        kill -s QUIT $(cat $PIDF)

        kill -s QUIT $(cat $PIDF_FPM)

;;

restart)

        $0 stop

        $0 start

;;

reload)

        kill -s HUP $(cat $PIDF)

;;

*)

        echo "Usage:$0{start|stop|restart|reload}"

        exit 1

esac

exit 0

 

这样一旦启动或关闭nginx服务,php-fpm 程序也会随之启动或关闭,不需要额外再启动或关闭php-fpm

 

配置Nginx支持php解析

 

(调用本机的php-fpm进程)在conf/目录下的fastcgi.conf 文件中已经包含必须的宏设置,可以通过include语句添加进来

vim /usr/local/nginx/conf/nginx.conf

 

   server {

       .......//省略部分信息

        location / {

            root   html;

            index  index.php index.html index.htm;

        }

        location ~ \\.php$ {                                      //访问php 页面的配置端

                root html;                                            //php 网页文档根目录

                fastcgi_pass 127.0.0.1:9000;                //php-fpm 的监听地址

                fastcgi_index index.php;                     //php 首页文件

                include fastcgi.conf;                            //包括fastcgi.conf 样本配置

        }

 

完成修改后重新加载Nginx服务即可生效

php 文档根目录下创建一个测试网页,以便测试php 语句能否正常解析,以及访问mysql数据库

vim /usr/local/nginx/html/php.php

<?ph

phpinfo();

?>

 

 

vim /usr/local/nginx/html/mysql.php

<?php

$link=mysqli_connect(\'localhost\',\'root\',\'123456789\');

if($link) echo "<h1>恭喜你,大功告成!! </h1>";

mysqli_close();

 

?>

4)lnmp 平台中部署web 应用

部署comsenzDISzuz BBS论坛系统

 

discuz社区论坛是一个采用php MySQL等多种数据库构建的性能优异,功能全面的且安全稳定

的社区论坛软件,其官网网站为http://www.discuz.net

unzip ComsenzDiscuzX-master.zip

cd DiscuzX

ls upload

 

 

设置权限及模块文件

 

cd /usr/local/nginx/html/bbs/config

cp config_global_default.php config_global.php

cp config_ucenter_default.php config_ucenter.php

 

cd /usr/local/nginx/html/bbs

chmod -R 777 config/ data/ uc_client/ uc_server/

 

给到权限之后目录文件可执行

 

 

 

 

 

准备数据库并配置相关授权

mysql -uroot -p123456789

mysql> create database bbs;

mysql> grant all on bbs.* to \'bbs\'@\'localhost\' identified by \'bbs123456789\';  //数据库账号与密码下面需要在浏览器中创建,注意一下,

mysql> flush privileges;

 

这个地方我的数据库密码为bbs123456789,截图有误,务必根据自己设置的填写,否则报错

 

以上是关于LNMP架构安装及搭建Discuz论坛的主要内容,如果未能解决你的问题,请参考以下文章

Centos 7搭建LNMP架构及部署Discuz论坛

LNMP架构的搭建Discuz论坛的搭建

CentOS 7 搭建 LNMP 架构详细过程 + Discuz 论坛安装 (手工编译)

LNMP架构搭建Discuz论坛(实战!)

LNMP架构的搭建(nginx+mysql+php源码安装 )+Discuz论坛的搭建

centos7.4安装最新lnmp架构设置授权访问并搭建Discuz论坛