LNMP分布式部署简单流程

一、部署总概:LNMP代表Linux、Nginx、MySQL和PHP(或Perl、Python等其他编程语言),是一种常用的服务器架构,尤其在Web开发中广泛使用。它结合了优秀的开源软件,提供了高性能、高稳定性和高灵活性的特点。

二、LNMP优点:

1、性能优异:Nginx作为Web服务器具有高性能和高并发处理能力。

2、稳定可靠:Linux作为操作系统对稳定性有保证,MySQL/MariaDB作为数据库管理系统也很稳定。

3、可扩展性:LNMP平台支持横向扩展,可以通过增加服务器节点和负载均衡来提高系统的性能和可用性。

4、社区支持:LNMP平台的每个组件都有庞大的开发者社区,提供了大量的文档、插件和技术支持。

三、实验环境:实验需要三台主机,分别做nginx服务器、mysql服务器、php服务器,为了方便实验进行,分别将三台主机进行命名;保证外网和内网通信后,关闭防火墙和selinux(访问控制安全策略)等,保证实验环境。

[root@localhost network-scripts]# systemctl disable --now firewall.service

Failed to execute operation: No such file or directory

[root@localhost network-scripts]# systemctl disable --now firewalld.service

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@localhost network-scripts]# setenforce 0

[root@localhost network-scripts]# hostname nginx

[root@localhost network-scripts]# bash

四、各服务器配置:

1、安装配置nginx服务器

  1. 配置yum源

[root@nginx ~]# yum install -y epel-release

BDB2053 Freeing read locks for locker 0x692: 2744/139775846078272

BDB2053 Freeing read locks for locker 0x694: 2744/139775846078272

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.ustc.edu.cn

 * extras: mirrors.ustc.edu.cn

 * updates: mirrors.ustc.edu.cn

正在解决依赖关系

  1. 安装nginx

[root@nginx ~]# yum install -y nginx

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

epel/x86_64/metalink                                     | 9.2 kB     00:00     

 * base: mirrors.tuna.tsinghua.edu.cn

 * epel: ftp.riken.jp

 * extras: mirrors.tuna.tsinghua.edu.cn

 * updates: mirrors.tuna.tsinghua.edu.cn

epel                                                     | 4.3 kB     00:00  

  1. 配置nginx实现文件解析:

拷贝nginx中,配置说明文件中关于php的配置内容

[root@nginx ~]# cd /etc/nginx

[root@nginx nginx]# cat nginx.conf.default

#location ~ \.php$ {

        #    root           html;

        #    fastcgi_pass   127.0.0.1:9000;

        #    fastcgi_index  index.php;

        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        #    include        fastcgi_params;

        #}

在nginx的配置目录里面新建一个.conf结尾的文件,将拷贝的配置文件复制进去,并进行相应的修改,保证nginx服务器在被客户端访问的时候,直接转到php服务器

[root@nginx nginx]# cd default.d/

[root@nginx default.d]# ls

[root@nginx default.d]# vim php.conf

location ~ \.php$ {

    root           /usr/share/nginx/html;

    fastcgi_pass   192.168.201.8:9000;

    fastcgi_index  index.php;

    #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    include        fastcgi.conf;

}

#启动并测试nginx

[root@nginx default.d]# systemctl enable --now nginx

[root@nginx default.d]# netstat -anptu |grep :80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      60878/nginx: master

tcp6       0      0 :::80                   :::*                    LISTEN      60878/nginx: master

在nginx服务配置文件中更改配置文件,保证客户端访问过来时,会去向一个默认页面。

[root@nginx default.d]# cd ..

[root@nginx nginx]# vim nginx.conf

    server {

        listen       80;

        listen       [::]:80;

        server_name  _;

        root         /usr/share/nginx/html;

        index index.php;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

[root@nginx default.d]# systemctl restart nginx #重启保证配置生效

  1. 安装配置php服务器
  1. 安装yum源,由于依赖关系,先装epel-relese源,在安装所需yum源包(在安装yum源包时,如无法解析,可以先将yum包下载下来,拷贝到服务器中安装)。

[root@php ~]# yum install -y epel-release

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.aliyun.com

 * extras: mirrors.aliyun.com

 * updates: mirrors.aliyun.com

正在解决依赖关系

[root@php wE6RU1]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

警告:webtatic-release(1).rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 62e74ca5: NOKEY

准备中...                          ################################# [100%]

正在升级/安装...

   1:webtatic-release-7-3             ################################# [100%]

(2)安装php所需组件,例如php72w-mysql组件在php中作用就是提供与mysql数据库的连接,pcre-devel组件在php中的作用就是提供正则表达功能(在这里我安装pcre-devel组件时,遇到一个仓库问题,可以通过临时修改/etc/yum.repos.d/webtatic.repo文件,禁用webtatic库解决--只需要注释掉文件中webtatic组)

[root@php ~]# yum install -y pcre-devel

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

epel/x86_64/metalink                                     | 7.2 kB     00:00     

 * base: mirrors.nju.edu.cn

 * epel: repo.jing.rocks

 * extras: mirrors.nju.edu.cn

 * updates: mirrors.nju.edu.cn

base                                                     | 3.6 kB     00:00  

·安装各组件过程中,可能会出现一些无法解决的临时问题,例如网络不稳定等,此时可以根据里面的链接路径先下载下来,使用rpm命令逐步安装各组件。

[root@php ~]# yum install -y php72w php72w-cli  php72w-common  php72w-devel php72w-mysql php72w-fpm

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * epel: ftp.iij.ad.jp

 * extras: ftp.sjtu.edu.cn

 * updates: ftp.sjtu.edu.cn

[root@php ~]# '//tmp/VMwareDnD/Uf050y/php72w-cli-7.2.34-1.w7.x86_64.rpm' ^C

[root@php ~]# rpm -Uvh /tmp/VMwareDnD/Uf050y/php72w-cli-7.2.34-1.w7.x86_64.rpm

警告:/tmp/VMwareDnD/Uf050y/php72w-cli-7.2.34-1.w7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 62e74ca5: NOKEY

准备中...                          ################################# [100%]

正在升级/安装...

   1:php72w-cli-7.2.34-1.w7           ################################# [100%]

(3)验证安装

[root@php ~]# rpm -qa |grep php

php72w-cli-7.2.34-1.w7.x86_64

php72w-pdo-7.2.34-1.w7.x86_64

php72w-devel-7.2.34-1.w7.x86_64

mod_php72w-7.2.34-1.w7.x86_64

php72w-mysql-7.2.34-1.w7.x86_64

php72w-fpm-7.2.34-1.w7.x86_64

php72w-common-7.2.34-1.w7.x86_64

(4)配置php服务器连接nginx的配置

修改php配置文件listen监听接口为本机地址,listen.allowed_clients连接接口为nginx服务器地址,此接口可以是多个,但只能在后面以逗号连接每个地址

[root@php ~]# cd /etc/php-fpm.d/

[root@php php-fpm.d]# vim www.conf

listen = 192.168.201.8:9000

listen.allowed_clients = 192.168.201.6

启动php服务,建立nginx访问目录(注意此目录需同nginx的访问目录)

[root@php ~]# systemctl restart php-fpm.service

[root@php ~]# mkdir -p /usr/share/nginx/html

[root@php ~]# cd /usr/share/nginx/html/

[root@php html]# ls

[root@php html]# vim index.php #写入测试代码,测试函数能否被正确解析

<?php

        phpinfo();

?>

解析得以下页面

(5)配置php服务器连接mysql服务器的配置

在nginx访问位置写入连接mysql的脚本,其中调用了php72w-mysql组件中的连接函数和关闭连接函数(nginx服务器里面不必有同路径的文件,因为在客户端访问中,会标记该文件路径)

[root@php html]# vim conn_mysql.php

<?php

        $conn = mysqli_connect('192.168.201.7','discuz','Qas@123!!!!!');

        if ($conn) {

                echo "ok";

        } else {

                echo "no ok";

        }

        mysqli_close($conn);

?>

[root@php html]# ls

conn_mysql.php  index.php

  1. 部署php上的discuz应用,同时,在nginx服务器上面部署相同流程的discuz软件文件,保证访问nginx服务器能同步到php服务器上面。

导入并解压discuz软件文件

[root@php html]# '//tmp/VMwareDnD/CcJY5R/Discuz_X3.5_SC_UTF8_20240520.zip' ^C

[root@php html]# mv /tmp/VMwareDnD/CcJY5R/Discuz_X3.5_SC_UTF8_20240520.zip ./

[root@php html]# ls

conn_mysql.php  Discuz_X3.5_SC_UTF8_20240520.zip  index.php

[root@php html]# mkdir discuz

[root@php html]# mv Discuz_X3.5_SC_UTF8_20240520.zip ./discuz/

[root@php html]# cd discuz/

[root@php discuz]# unzip Discuz_X3.5_SC_UTF8_20240520.zip

Archive:  Discuz_X3.5_SC_UTF8_20240520.zip

  inflating: LICENSE                 

  inflating: qqqun.png               

   creating: readme/

便于管理对discuz文件进行移动、赋权。

[root@php discuz]# mv upload/ ../

[root@php discuz]# cd ..

[root@php html]# ls

conn_mysql.php  discuz  index.php  upload

[root@php html]# chmod -R 777 upload/

  1. 安装配置mysql服务器
  1. 配置yum源,注意这里为了保证各服务器组件之间的匹配,需要更改mysql安装的yum源,安装5.7版本。

[root@mysql ~]# rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

获取https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

警告:/var/tmp/rpm-tmp.r5CT4V: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中...                          ################################# [100%]

正在升级/安装...

   1:mysql80-community-release-el7-3  ################################# [100%]

[root@mysql ~]# cd /etc/yum.repos.d/

[root@mysql yum.repos.d]# ls

CentOS-Base.repo       CentOS-Media.repo          mysql-community.repo

CentOS-CR.repo         CentOS-Sources.repo        mysql-community-source.repo

CentOS-Debuginfo.repo  CentOS-Vault.repo

CentOS-fasttrack.repo  CentOS-x86_64-kernel.repo

[root@mysql yum.repos.d]# vim mysql-community.repo

# Enable to use MySQL 5.7

[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql80-community]

name=MySQL 8.0 Community Server

baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/

enabled=0

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

  1. 安装mysql(和服务器交互的工具)和mysql-server(服务器本身)

[root@mysql yum.repos.d]# yum install -y mysql mysql-server

已加载插件:fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.aliyun.com

 * extras: mirrors.aliyun.com

 * updates: mirrors.aliyun.com

软件包 mysql-community-client-5.7.44-1.el7.x86_64 已安装并且是最新版本

正在解决依赖关系

  1. 配置mysql服务

启动mysql服务,查看管理员root用户的初始密码,更改其初始密码,进行登录

[root@mysql ~]# systemctl enable --now mysqld

[root@mysql ~]# cat /var/log/mysqld.log |grep password

2024-06-23T07:07:39.434101Z 1 [Note] A temporary password is generated for root@localhost: c,l56KDYdMpd

[root@mysql ~]# mysqladmin -uroot -p password 'Qas@123!!!!!'

Enter password:

mysqladmin: [Warning] Using a password on the command line interface can be insecure.

Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

[root@mysql ~]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

新建discuz用户和discuz库,并赋予此用户的所有权利,同时定义此用户可以从哪些网址进行登录,后面是跟的密码

mysql> grant all on discuz.* to discuz@'192.168.201.%' identified by 'Qas@123!!!!!';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

五、客户端测试,安装数据库。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值