LNMP架构搭建和讲解

网站的LNMP架构是什么?
  • L:Linux系统
    • selinux必须关闭,防火墙关闭
    • /tmp 1777权限
  • N:Nginx服务
    • 处理用户的静态请求
  • P:PHP服务
    • 处理动态的页面请求
    • 负责和数据库建立关系
  • M:mysql服务(Mariadb)
    • 存储用户的字符串数据信息
网站的LNMP架构部署
  • nginx:ansible一键化部署

  • mysql服务部署

    • 第一个历程:yum安装

      yum install mariadb-server mariadb -y
      
    • 第二个历程:启动数据库服务

      systemctl start mariadb.service
      systemctl enable mariadb.service
      
    • 第三个历程:设置密码

      mysqladmin -u root password '设置的密码'
      
    • 第四个历程:进入服务

      mysql -uroot -p设置的密码
      
  • php服务部署

    • 第一个历程:更新yum源/卸载系统自带的php软件

      yum remove php-mysql php php-fpm php-common
      
    • 第二个历程:安装php软件

      yum install -y 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
      
    • 第三个历程:编写配置文件

      vim /etc/php-fpm.d/www.conf
      
      user = www
      group = www
      
      #保证nginx进程管理的用户与php管理的用户一致
      
    • 第四个历程:启动php服务

      systemctl start php-fpm
      
LNMP架构的原理:nginx+mysql+php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2RzfTZSu-1676005705802)(/Users/pert./Library/Application Support/typora-user-images/image-20230209184357540.png)]

用户访问网站——>nginx(fastcgi_pass)——>FastCGI——>(php-fpm —— wrapper) php(php解析器)——> mysql(读取或写入)

实现LNMP之间建立关系
  • 编写nginx配置文件

    server {
      listen 80;
      server_name blog.com;
      location / {
        root /html/blog;
        index index.html;
      }
      location ~ \.php$ {
        root /www;  #php的站点目录
        fastcgi_index index.php;  #访问php没有默认访问的就是index.php
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #需要传输完整的参数,变量在下面include
        fastcgi_pass 127.0.0.1:9000;  #如果是php 转到9000端口
        include fastcgi_params;  #导入变量
      }
    }
    
  • 重启nginx服务

    systemctl restart nginx
    
  • 编写动态资源文件

    cd /www
    vim test.php
    
    <?php
    phpinfo();
    ?>
    
  • 进行访问测试

    blog.com/test.php
    
测试链接数据库
[rootewebol blog]# vim test mysql .php
<?php
$servername = "1ocalhost";
$username = "root":
$password = "oldboy123";
//link id-mysql connect('主机名,,,用户,,,舒码,):
//mysq1 -u用户 -p密码 -h 主机
$conn = mysql_connect($servername, $username,$password);
if ($conn)
{
	echo "mysql successful by root !\n";
}else{
	die ("Connection failed: " . mysql_connect_error());
}
?>
部署搭建网站页面(代码上线)
  • 第一个历程:获取代码信息——wordpress

  • 第二个历程:将代码解压,解压后信息放入站点目录中

  • 第三个历程:修改站点目录权限

    chown -R www.www 目录
    
  • 第四个历程:进行网站页面初始化

  • 第五个历程:对数据库服务进行配置

    • 创建数据库并检查

      create database wordpress;
      show databases;
      
    • 创建数据库管理用户并检查

      grant all on wordpress.* to 'wordpress'@'localhost' identified by 'wordpress用户密码'
      
      #给localhost的wordpress用户赋予wordpress库里所有表的all(增删改查)权限
      
      select user,host from mysql.user;
      
  • 修改配置文件

    server {
      listen 80;
      server_name blog.com;
      location / {
        root /html/blog;
        index index.php index.html;
      }
      location ~ \.php$ {
        root /www;  #php的站点目录
        fastcgi_index index.php;  
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;  
        include fastcgi_params;  
      }
    }
    
    #需要加上index.php,不然访问的时候默认访问的是index.html没有用,默认访问index.php的时候就交给9000端口处理了
    
上传wordpress主题,报413错误,如何解决?
  • 修改nginx配置文件vim blog.conf

    在server_name后面一行添加
    client_max_body_size 50m;
    修改nginx上传文件的大小限制,默认1M
    
  • 修改php配置文件

    vim php.ini
    
    upload_max_filesize = 50M
    #修改php上传文件的大小限制,默认2M
    
如何让LNMP架构和存储服务器建立联系?
  • 根据图片链接地址获取图片存储位置:uri

  • 使web服务器和存储服务器建立关系

    • 检查存储服务器是否正常
    • 编写存储服务配置文件
  • 将web服务器blog存储的数据进行迁移

  • 将目录进行挂载

  • 挂载好后将迁移的数据恢复过来

  • 默认存储服务器无法存储数据

    • 管理用户无法存储:nfs默认配置root_squash:将root用户映射为nfsnobody
    • 普通用户无法存储:nfs默认配置no_all_squash,不将普通用户身份进行映射
  • 解决

    • 修改nfs配置文件,定义映射用户为www,因为web服务器那边的权限是www,nfs目录权限的是nfsnobody

      useradd www -u 1002
      chown -R www /data
      
    • 使root用户可以上传数据,anonuid可以指定的映射用户,将之前默认修改客户端的用户nfsnobody为www

      sed -ri.bak 's#(sync)#\1,anonuid=1002,anongid=1002#g' /etc/exports
      
  • 重启服务

    systemctl reload nfs
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值