Nginx 基础WEB架构

LNMP架构简述

什么是LNMP架构

#Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Nginx是一个高性能的HTTP和反向代理服务器,
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

原理

1.浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,
2.当nginx 判断为动态请求时,nginx 将请求通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序)
3.PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。
4.PHP解析器进程可以启动多个,进行并发执行。
5.然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.
6.如果有查询数据库操作,则php连接数据库发起查询操作
7.最终数据mysql>php解析后>php-fpm>fastcgi协议>nginx>Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。
请求 静态请求直接处理
用户浏览器>nginx>
动态请求>fastcgi协议>php-fpm>mysql

 Nginx LNMP环境部署

使用官方仓库安装Nginx 

[root@web01 code]# cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

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

2.修改nginx 用户

[root@nginx ~]# groupadd www -g 666
[root@nginx ~]# useradd www -u 666 -g 666 -s /sbin/nologin  -M

#修改nginx配置文件
[root@nginx ~]# sed -i '/^user/c user www;' /etc/nginx/nginx.conf

3.启动nginx 设置开机自启

[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx

配置第三方源安装PHP

# 1.先卸载系统自带的php5.4
[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
# 2.更改php源
[root@web01 ~]# vim /etc/yum.repos.d/php.repo
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
# 3.安装php
[root@web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71wmcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached
php71w-pecl-redis php71w-pecl-mongodb

4.配置php-fpm用户与nginx运行用户一致

[root@nginx ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
[root@nginx ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

#PHP服务配置文件
1.php-fpm.conf 管理php进程的相关配置文件
2.php.ini 管理php的程序相关配置文件

5.开启服务,加入开机启动

[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm

安装mysql

[root@web01 ~]# yum install -y mariadb-server

1.给root用户密码

[root@web01 ~]# mysqladmin -uroot password '123'

2.连接数据库

[root@web01 ~]# mysql -uroot -p123

Nginx 连接数据库

nginx_http_fastcgi_module 模块

作用 nignx 服务代理php服务

location / {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

1.修改php文件连接数据库

[root@web01 wordpress]# vim /etc/nginx/conf.d/php.conf
# server层
server {
#监听80端口
listen 80;
#指定域名
server_name php.hgs.com;
#当输入域名,没有接任何uri的时候,会走location /
location / {
#站点目录:/code/wordpress
root /code/wordpress;
#index.php的代码,如果没有index.php,那么就找index.html页面
index index.php index.html;
}
#当访问到区分大小写,以php结尾的url时
location ~ \.php$ {
root /code/wordpress;
# 代理后端的php服务
fastcgi_pass 127.0.0.1:9000;

# 默认页面时index.php
fastcgi_index index.php;
#当请求过来之后,会看这一行, 在/code/wordpress目录下 wp-admin/setup-config.php,交给php解析
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#包含fastcgi 变量解析文件
include fastcgi_params;
}
}

2.在/code目录下创建文件info.php

[root@nginx ~]# cat /code/info.php
<?php
        phpinfo();
?>

3.打开网页查看php.hgs.com/info.php

 4.测试php连接数据库

[root@nginx ~]# cat /code/mysqli.php
<?php
    $servername = "localhost";
    $username = "root";
    $password = "123";

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

    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "小哥哥,php可以连接MySQL...";
?>

5.访问mysqli.php 页面

部署wordpress 博客

1.操作数据库

# 1.连接数据库
[root@web01 php]# mysql -uroot -p123
# 2.创建数据库
MariaDB [(none)]> create database wp;
# 3.查看是否创建成功
MariaDB [(none)]> show databases;
# 4.创建WordPress连接数据库的用户和密码
MariaDB [(none)]> grant all on wp.* to wp_user@'localhost' identified by '111';
# 2.给站点目录授权
[root@web01 php]# chown -R www.www /code/wordpress/

2.配置虚拟站点 blog.

#1.nginx具体配置信息
[root@nginx ~]# cat /etc/nginx/conf.d/wordpress.conf
server {
    listen 80;
    server_name blog.driverzeng.com;
    root /code/wordpress;
    index index.php index.html;
 
    location ~ \.php$ {
        root /code/wordpress;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

3.解压下载wordpress 包到/code/wordpress

 4.浏览器访问部署 blog.hgs.com

 

 

 

 

 添加博客主题

 

 上传主题报错

 上传报错解决

/etc/nginx/nginx.conf
http层 添加 
client_body_buffer_size 10m(配置请求体缓存区大小, 不配的话) 

#由于nginx默认对上传的文件做了大小的限制,默认只能上传1M以下的文件

猜你喜欢

转载自www.cnblogs.com/goodsuperman/p/12926456.html