41. LNMP架构------安装LNMP架构环境 | LNMP: Wordpress项目| Wecenter项目 | 迁移数据库

1. 介绍LNMP架构

1.1 什么是LNMP

LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。

L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python

1.2 LNMP架构是如何工作

在这里插入图片描述

1.3 LNMP架构详细工作流程

  1. 用户通过http协议发起请求,请求会xiandidaLNMP架构中的nginx
  2. nginx会根据用户的请求,进行location匹配
  3. location如果匹配的是静态内容,Nginx会读取本地,直接返回。
  4. location如果匹配的请求动态内容,Nginx自会将请求转发给fastcgi协议
  5. fastcgi将请求交给php-fpm进程管理,php-fpm管理进程收到后---->>调用具体的warrap进程。
  6. warrap进程调用PHP程序进行解析,如果是代码php则返回。
  7. 如果是查询数据库工作则有php连接数据库(用户,密码,ip)发起查询操作。

最终mysql》》php》》php-fpm》》fastcgi》》nginx》》http》》user


2. 安装LNMP架构需要安装的软件

123
nginxphpmysql / mariadb

安装nginx
[root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common

[root@nginx ~]# cat /etc/yum.repos.d/php.repo

[webtatic-php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0

[root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
安装php-fpm
[root@web01 php]# systemctl enable php-fpm
[root@web01 php]# systemctl start php-fpm

安装mariadb
[root@web01 php]# yum install mariadb mariadb-server -y
[root@web01 php]# systemctl start mariadb
[root@web01 php]# systemctl enable mariadb


3. 配置LNMP架构

3.1 nginx (nginx如何整合php)

php和nginx是相互独立的的进程
php于nginx的通讯,我们称为fastcgi运行方式。

  • 启动php-fpm sysetmctl start php-fpm
  • 配置nginx
    [root@web01 php]# cat /etc/nginx/conf.d/php.oldxu.com.conf
server {
	listen 80;
	server_name php.oldxu.com;
	root /code;

	#当用户请求php.oldxu.com --> php.oldxu.com/index.php
	location / {
		index index.php;
	}

	#将请求转给php-fpm程序,同时携带我们需要被解析的文件路径 
	SCRIPT_FILENAME = /code/index.php
	 location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}

* 编写php代码

[root@web01 php]# rm -rf /code && mkdir /code
[root@web01 php]# cat /code/index.php

<?php
	phpinfo();
?>


3.2 php如何连接mysql

(测试php是否 能正常连接我们的mysql)

  • mariadb要启动
    [root@web01 php]# systemctl start mariadb
    [root@web01 php]# systemctl enable mariadb

  • mysql要配置对应的用户和密码
    [root@web01 php]#mysqladmin password xxxxxx #给mysql的root用户设定的密码
    [root@web01 php]# mysql -uroot -pxxxxxx #验证 密码

  • 编写php连接 mysql的代码,(之后访问测试)
    [root@web01 php]#cat /code/mysql.php

 <?php
	//设定变量
        $servername = "localhost";
        $username = "root";
        $password = "xxxxxx";

        // 创建连接
        $conn = mysqli_connect($servername, $username, $password);

        // 检测连接
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }
        echo "php连接MySQL数据库成功";
        ?>

4 LNMP架构实践

4.1 一台机器运行 LNMP (Wordpress项目)


  • 准备wordpress的代码
    [root@web01 ~]# rm -rf /code && mkdir /code
    [root@web01 ~]# tar xf wordpress-5.2.3-zh_CN.tar.gz -C /code/
    [root@web01 ~]# ll /code/
    drwxr-xr-x 5 oldman oldman 4096 9月 5 2019 wordpress

  • 修改权限
    将 nginx php 的用户 身份 统一修改 为 www
    [root@web01 ~]# groupadd -g 666 www
    [root@web01 ~]# useradd -u666 -g666 www
    修改nginx运行身份
    [root@web01 ~]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf
    修改php-fpm的运行身份
    [root@web01 ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
    [root@web01 ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

  • 重启nginx和php
    [root@web01 ~]# systemctl restart nginx php-fpm

  • 授权代码的权限为www
    [root@web01 ~]# chown -R www.www /code/wordpress/

  • 配置下mariadb,创建一个库
    [root@web01 ~]# mysql -uroot -pxxxxxx
MariaDB [(none)]>
MariaDB [(none)]> create database wordpress;  #创建一个 wordpress的 库
MariaDB [(none)]> show databases;			  #查看所有的库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |	
| test               |
| wordpress          |	  <----可以看到添加wordpress成功
+--------------------+
5 rows in set (0.00 sec)

  • 配置nginx,添加一个wordpress的网站
    [root@web01 ~]# cat /etc/nginx/conf.d/blog.oldxu.com.conf
server  {
	listen 80;
	server_name blog.oldxu.com;
	root /code/wordpress;
	client_max_body_size 100m;

	location / {
		index index.php;
	}

	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}

[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl restart nginx

  • hosts劫持—>>使用 浏览器访问

PS : 当nginx匹配Server没有匹配到你当前配置的虚拟主机时
会随机返回一个/etc/nginx/conf.d/xxxx.com.conf配置的网站给用户

4.2 Wecenter项目

1.下载并解压代码,并授权属主和属组
 [root@web01 ~]# mkdir -p /code/zh
 [root@web01 ~]# unzip WeCenter_3-5-0.zip  -d /code/zh/
 [root@web01 ~]# chown -R www.www /code/zh/
(其他同wordpress)

2.创建对应的数据库
[root@web01 ~]# mysql -uroot -poldxu.com		#连接本地数据库
MariaDB [(none)]>
MariaDB [(none)]> create database zh;			#创建一个zh的库

3.编写Nginx配置文件
[root@web01 ~]# cat /etc/nginx/conf.d/zh.oldxu.com.conf
server {
	listen 80;
	server_name zh.oldxu.com;
	root /code/zh;

	location / {
		index index.php;
	}

	#解析php
	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}

4.重启nginx
[root@web01 ~]# systemctl restart nginx

5.配置域名解析
	windows:	C:\Windows\System32\drivers\etc\hosts
	macos:  	/etc/hosts

6.测试访问,然后检查是否有异常

find / -name php.ini
/etc/php.ini 可以修改文件上传限制配置
service php-fpm restart

PS: 开源:他会一个安装向导,让你下一步下一步操作。
公司:代码拷贝到指定的位置,然后一访问域名就能打开了,没有安装向导页面。


5 拆分数据库至独立的服务器

5.1 为什么要拆分数据库?

单台服务器运行LNMP架构会导致网站访问缓慢(一般只有个人服务器才会这么做)
当系统内存吃满时,很容易导致系统出现oom机制
-------->>mysql会有被kill掉的风险,所以要独立部署

5.2 拆分的实际演示

主机名称 应用环境外网地址内网地址
web01 nginx+php10.0.0.7172.16.1.7
db01 mysql10.0.0.51172.16.1.51

  • 备份10.0.0.7 上的数据库,然后将备份的数据,推送到10.0.0.51
      备份数据库
      [root@web01 ~]# mysqldump -uroot -pxxxxxx -A > /opt/data.sql
      (-A = --all-databases )
      推送到10.0.0.51上
      [root@web01 ~]# scp /opt/data.sql root@10.0.0.51:~

  • 在10.0.0.51 上恢复 10.0.0.7 推送过来的数据
      安装相同版本的mysql数据库
      [root@db01 ~]# yum install mariadb mariadb-server -y
       启动mysql数据库
      [root@db01 ~]# systemctl start mariadb
      [root@db01 ~]# systemctl enable mariadb
       执行恢复命令 #输入重定向
      [root@db01 ~]# mysql < ~/data.sql
      [root@db01 ~]# systemctl restart mariadb #所有的配置生效了
      [root@db01 ~]# mysql -uroot -pxxxxxx #测试是否能正常登录

  • 在10.0.0.51上,创建一个允许远程连接数据库的用户 ( root仅允许本地连接 )
       登陆mysql
      [root@db01 ~]# mysql -uroot -pxxxxxx
       创建远程能连接的用户,以及密码。并进行授权
      MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'xxxxxx';
       验证远程用户是否可用(10.0.0.7,测试一下)
       如果 通过远程方式没有问题,说明配置ok
      [root@web01 ~]# mysql -h 172.16.1.51 -uall -pxxxxxx
      MariaDB [(none)]>

  • 关闭10.0.0.7 上的 mysql服务器
    [root@web01 ~]# systemctl stop mariadb
    [root@web01 ~]# systemctl disable mariadb

  • 将10.0.0.7上应用程序连接的数据库地址指向 172.16.1.51 ( 应用割接 )
    wordpress如何配置:

ll   /code/wordpress  ----->>>>找到 wp-config.php 文件并配置他们!

[root@web01 ~]# vim /code/wordpress/wp-config.php
/** WordPress数据库的名称 */
define( 'DB_NAME', 'wordpress' );

/** MySQL数据库用户名 */
define( 'DB_USER', 'all' );

/** MySQL数据库密码 */
define( 'DB_PASSWORD', 'xxxxxx' );

/** MySQL主机 */
define( 'DB_HOST', '172.16.1.51' );

wecenter如何配置:
[root@web01 ~]# find /code/zh/ -type f | xargs grep -R "oldxu.com"

如何找不到mysql相关配置,可以通过find命令过滤代码中包含oldxu.com的密码文件

[root@web01 ~]# cat /code/zh/system/config/database.php
<?php
$config['charset'] = 'utf8mb4';
$config['prefix'] = 'aws_';
$config['driver'] = 'MySQLi';
$config['master'] = array (
  'charset' => 'utf8mb4',
  'host' => '172.16.1.51',
  'username' => 'all',
  'password' => 'xxxxxx',
  'dbname' => 'zh',
 );
 $config['slave'] = false;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装LNMPLinux + Nginx + MySQL + PHP)环境,可以使用Docker Compose来简化安装过程。首先,确保已经安装了Docker,然后按照以下步骤安装docker-compose。 方法一: 1. 使用curl命令下载docker-compose二进制文件:curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2. 授予docker-compose执行权限:chmod +x /usr/local/bin/docker-compose 3. 验证安装:docker-compose --version 方法二: 1. 提前下载docker-compose安装包,并上传到系统中(例如/opt目录)。 2. 在命令行中切换到安装包所在的目录:cd /opt/ 3. 授予docker-compose执行权限:chmod +x docker-compose 4. 将docker-compose移动到/usr/local/bin目录:mv docker-compose /usr/local/bin/ 5. 验证安装:docker-compose --version 安装docker-compose后,可以使用docker-compose.yml文件来定义和管理LNMP环境的容器。在工作目录下,使用以下命令来启动容器并在后台运行: docker-compose -f docker-compose.yml up -d 可以使用以下命令来查看已启动容器的状态: docker-compose ps 通过以上步骤,您可以使用docker-compose安装和管理LNMP环境。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [使用 Docker-compose 搭建lnmp](https://blog.csdn.net/m0_71931851/article/details/128195165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值