LAMP和LNMP基本架构

1. LAMP环境建站

1.1 LAMP概述

1.1.1 为什么是LAMP

LAMP就是Linux+Apache+MySQL+PHP的网站架构体系。而之所以叫LAMP,就是取了这几个单词的首字母,这里的P可以代指PHP、Python、Perl这三种编程语言。在安装PHP的时候要特别注意它的版本,貌似坑有点多 。而WordPress呢,它是一个开源的且比较好用的免费主题模板,我们构建好了LAMP后,将WordPress跑在LAMP上面,就可以构建个人站点了。

1.1.2 PHP的两种工作方式

  • php以模块的方式直接被httpd调用
  • php以守护进程的方式监听在一个套接字上以提供服务(通过fastcgi协议进行交互)

这里采用httpd(Apache)直接调用php模块的方式来构建LAMP环境,这也是最简单的方式,一步到位。也可以将php和httpd拆分开来,让php以守护进程的模式工作,只不过需要安装并启动php-fpm。

1.1.3 LAMP的运作流程

LAMP架构的运作流程:

  1. 首先,我们需要一台Linux主机并至少拥有一个公网IP地址
  2. 然后在此主机上我们需要安装Apache的httpd服务程序,以提供静态页面访问。
  3. 为了提供动态页面访问的功能,我们还需要安装PHP程序以实现php代码的解析和执行。
  4. 接下来我们的数据需要保存到数据库中,所以我们还需要安装MySQL服务程序以提供数据存储。
  5. 而为了让php和MySQL数据库之间能够进行交互,我们还需要安装php-mysql程序以实现二者之间的交互。

1.1.4 建站步骤

  1. 弄一台Linux主机,配置好IP地址,这里用的是CentOS7系统。
  2. 安装httpd程序(Apache)并设置,这里装的是2.4的版本。
  3. 安装PHP,这里装的是7.2的版本。
  4. 安装php-mysql
  5. 安装MySQL并设置,这里是CentOS7上直接yum安装的MariaDB5.5
  6. LAMP环境搭建好之后,直接将WordPress部署在LAMP环境中,然后经过简单的设置后,一个个人站点就已然成形。

1.2 构建LAMP环境

1.2.1 安装httpd并配置虚拟主机

安装httpd(Apache):

  • 直接yum安装httpd。CentOS7上默认yum安装的httpd就是2.4的版本。安装成功之后我们还需要对它进行配置。

[root@c7_node_01 ~]# yum install httpd -y 

配置虚拟主机:

  • 我们进入到httpd的额外配置文件目录中,然后直接创建一个新的配置虚拟主机配置文件

[root@c7_node_01 ~]# cd /etc/httpd/conf.d/
[root@c7_node_01 conf.d]# vim mysite.conf

  • 然后在在 mysite.conf 配置文件中添加如下配置信息

<VirtualHost *:80>                         # 定义一个监听在本地主机所有IP地址80端口上的虚拟主机
        ServerName bbs.hgzero.com          # 这是虚拟主机的名称,因为启用了基于端口的虚拟主机,这里可随意写一个名称
        DocumentRoot "/data/apache/bbs"    # 这是网站的根路径,根据自己的设置来填写
        <Directory "/data/apache/bbs">     # 这里要对该根路径定义权限
                Options None
                AllowOverride None
                Require all granted   
    
                #AuthType Basic            # 以下注释的是Basic认证信息,请忽视它
                #AuthName "Pls input password ^_^"
                #AuthUserFile "conf.d/htpasswd"
                #Require valid-user
        </Directory>
</VirtualHost>

  • 定义好的配置文件保存后,我们重启httpd使之生效

[root@c7_node_01 conf.d]# systemctl restart httpd.service

1.2.2 安装PHP等模块

这里也可以直接用yum安装,但是CentOS7上默认的php是5.4的版本。而我们需要安装至少PHP7以上的版本。关于如何配php7的源,这个地方有写。

安装php和php-mysql:

这里我直接把php和php-mysql一起安装了

[root@c7_node_01 ~]# yum install php php-mysql -y

再安装一些php的扩展模块:

[root@c7_node_01 ~]# yum install php-mcrypt php-cli php-gd php-curl php-ldap php-zip php-fileinfo php-fpm -y

1.3 安装MySQL

1.3.1 安装MariaDB(MySQL)

同样,直接yum安装,CentOS7上默认安装的是MariaDB5.5的版本

[root@c7_node_01 ~]# yum install mariadb -y

1.3.2 初始化数据库

安装成功后需要对数据库进行初始化,我们这里运行以下命令,直接一步到位。

[root@c7_node_01 ~]# mysql_secure_installation 

1.3.3 登录后创建新库并授权用户

 # 登录
[root@c7_node_01 ~]# mysql -uroot -p            
Enter password:       

# 创建新库
MariaDB [(none)]> create database shit_blog;     

# 创建用户并授权
MariaDB [(none)]> grant all on shit_blog.* on "hg"@"localhost" identified by 'shitshit';  

# 刷新权限
MariaDB [(none)]> flush privileges;

1.4 LAMP构建完毕

到这里,LAMP环境已然构建完成。当然,各个步骤的测试还需要自己来完成,比如httpd是否能正常访问?如果不能正常访问,去看看防火墙和SELinux是否关闭。

1.5 部署WordPress

部署WordPress,我们可以直接在WordPress的官网下载一个最新版的WordPress,然后直接将其解压后的内容部署到我们刚刚创建虚拟主机定义的哪个目录下就可以了。

要访问我们的网站,直接在浏览器键入http://IP地址 , 就可以看到WordPress的安装页面了,然后一路下一步就可以了。

2. LNMP中Nginx的配置

在LNMP的架构模型中,对于静态内容由nginx直接响应给客户端,而对于动态内容的处理则是通过fastcgi协议将动态内容反代给php-fpm,由php-fpm将php代码执行后,将执行后的结果返回给nginx,再由nginx响应给客户端。

2.1 安装

2.1.1 要安装的程序包

  • nginx
  • php
  • php-mysql
  • php-fpm

2.1.2 注意

  • php最好安装7.1以上版本
  • 安装php相关的组件,如php-mysql、php-fpm时,都要安装与php版本相对应的程序包

2.2 配置

2.2.1 MySQL的配置

  • 安装启动之后登陆数据库,再创建一个新库,然后创建用户并授权,最后刷新权限。
  • 如果本地无法登陆,则先考虑/etc/my.cnf配置文件的mysql.sock的位置是否正确。

[client]
port=3306
socket=/var/lib/mysql/mysql.sock

2.2.2 php-fpm的配置

  • 配置文件路径:/etc/php-fpm.conf
  • 要将php-fpm的user和group修改为nginx。

2.3 Nginx的配置:

fastcgi_cache_path /data/nginx/www/cache levels=1:2:2 keys_zone=one:32m;

server {
    listen 80; 
    server_name hgzerowzh.com;  
    index index.php index.html;

    client_max_body_size 20M;

    fastcgi_cache one;
    fastcgi_cache_key $request_uri;
    fastcgi_cache_methods GET HEAD POST;
    fastcgi_cache_min_uses 3;

    fastcgi_cache_valid 200 302 1m; 
    fastcgi_cache_valid 301 1m; 
    fastcgi_cache_valid any 1m; 
    
    fastcgi_keep_conn on; 

    location / {           # 静态内容
        root /data/nginx/www;
    }   
    
    location ~* .php$ {   # 动态内容
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params; 
        fastcgi_param SCRIPT_FILENAME /data/nginx/www/$fastcgi_script_name;
    }   
}

2.4 LNMP环境下WordPress上传插件报错

2.4.1 报错:413 Request Entity Too Large

  • 原因:
    • Client的请求体部分的内容超过默认设置的大小
  • 解决:
    • 将client_max_body_size参数设大一点就可以了
    • client_max_body_size 20M;(前面的nginx的配置文件中已经定义过了)

2.4.2 上传文件大小超过最大限制

  • 修改php.ini文件的配置(大小自行把控)

upload_max_filesize = 128M 
post_max_size = 128M 
max_execution_time = 300

  • 注意修改完成后,要重启php-fpm

原文地址:https://www.cnblogs.com/hgzero/p/12805232.html