综合架构之网站服务-LNMP搭建博客

1.掌握LNMP的安装步骤
2.LNMP架构访问原理


网站架构组成

分类:LNMP(php) (LNMT(tomcat) LNMP(python)
组成部分及注意要点

  • L-linux (安全服务是否关闭 /tmp 1777 --mysql服务)
  • N-nginx location root index rewrite
  • M-mysql mariadb
  • P-php 解析php动态请求

网站架构LNMP部署过程

mariadb部署:
第一个历程: 安装软件

    yum install -y mariadb mariadb-server

第二个历程: 启动程序服务

systemctl start mariadb

php如何部署:
第一个历程: 清空系统中php程序

yum remove php-mysql php php-fpm php-common

第二个历程: 配置php下载源

不配置下载源的时候可能去官网下载 如果下载的是最新版本,可能会出现和nginx和数据库兼容性出现问题。

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

第三个历程: 安装php7.1相关软件

    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    

LNMP工作原理

综合架构之网站服务-LNMP搭建博客_第1张图片
  • 用户访问网站首先会通过负载均衡,如果是静态页面,通过负载再到达nginx,直接返回静态页面。
  • 如果访问的是动态页面,nginx无法处理会判断是否为.php的为文件,如果是,就是动态请求。通过fastcgi_pass接口传给php进行处理。
  • php通过php-fpm进行接收nginx传递过来的动态文件,如果PHP程序自己能处理,则处理后返回给nginx,nginx再返还给用户。
  • 如果php无法处理,通过PHP解析器解转化为sql语句交给mysql进行处理。

NGINX------>PHP---------->mysql


补充:检查下yum源查看是否有相应的源,如果没有,则还是无法安装

[root@nfs001 ~]# ll /etc/yum.repos.d/
total 60
-rw-r--r--. 1 root root  664 May 11  2018 epel.repo
-rw-r--r--  1 root root  951 Oct  3  2017 epel.repo.rpmnew
-rw-r--r--  1 root root 1050 Oct  3  2017 epel-testing.repo
-rw-r--r--  1 root root  963 Oct  9  2014 webtatic-archive.repo
-rw-r--r--  1 root root  865 Oct  9  2014 webtatic.repo
-rw-r--r--  1 root root  963 Oct  9  2014 webtatic-testing.repo

LNMP架构配置过程

mariadb数据库配置:
第一个历程: 修改数据库密码信息

mysqladmin -uroot password "oldboy123"  --- 设置密码 
mysql -uroot -poldboy123

数据库默认没有密码。

php程序配置:
第一个历程: 修改配置文件

vim /etc/php-fpm.d/www.conf

8(行)user = www --- 需要将php进程管理用户 和 nginx服务worker进程用户保持一致
10(行)group = www --- 需要将php进程管理用户 和 nginx服务worker进程用户保持一致

第二个历程: 重启php服务

systemctl restart php-fpm.service 

nginx + php建立关系
第一个历程: 修改nginx配置文件

    location ~ \.php$ {                  --- 匹配动态.php结尾请求
          root /html;                     --- 设置站点目录
          fastcgi_pass  127.0.0.1:9000;  --- 将动态请求信息发送给php程序进行处理,9000为本地的php服务。
          fastcgi_index index.php;       --- 默认处理php请求文件为index.php---没有具体指定的php文件时,就会默认访问index.php
                                             www.oldboy.com/test.php
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                         --- 将要处理文件信息以及详细路径告知给PHP程序
                                         /html/www         /test.php
                                         test.php  --- php程序    -----php不知道动态文件的详细在什么地方 加上fastcgi后可以知道test.php在哪个站点下 /html/www                           
          include fastcgi_params;        --- 加载fastcgi变量配置文件
    }

详细的代码

server {
    listen            80;
    server_name  www.oldboy.com;
    location / {
        root   /html/www;
        index  index.php oldboy.jpg index.html index.htm;
    }
    location ~ \.php$ {
        root /html/www;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }

动态的PHP代码,最后可通过PHP程序动态的文件解析出来。

综合架构之网站服务-LNMP搭建博客_第2张图片

站点下数据库跟php连接的测试代码

php测试代码
cd /html/www

php + mariadb 建立关系
vim test_mysql.php

源代码文件

    cd /html/www 
    echo '' >test.php
    
    php + mariadb 建立关系
    vim test_mysql.php
    

nginx命令的补充

[root@web01 ~]# nginx -h
    nginx version: nginx/1.16.0
    Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
    
    Options:
      -?,-h         : this help
      -v            : show version and exit
                      显示软件版本并退出
      -V            : show version and configure options then exit
                      显示软件版本和配置参数并退出
      -t            : test configuration and exit
                      测试配置文件并退出
      -T            : test configuration, dump it and exit
                      测试配置文件, 保存全部配置信息并退出
      -q            : suppress non-error messages during configuration testing
                      在配置测试时, 抑制正确信息输出,只显示错误信息
      -s signal     : send signal to a master process: stop, quit, reopen, reload
                      stop   信号 停止程序
                      reload 信号 平滑重启
      -p prefix     : set prefix path (default: /etc/nginx/)
                      设置加载配置文件路径  nginx.conf                  
      -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
                      设置加载指定配置文件
      -g directives : set global directives out of configuration file
    

利用LNMP架构部署网站代码 -- wordpress--blog

  • 第一个历程: 获取代码信息
    获取开源代码:
    blog 博客 wordpress
    www 网站 phpcms
    bbs 论坛 Discuz
    zhihu 知乎 wecenter
  • 第二个历程: 将代码解压 放置到站点目录,并将加压的目录变为blog
tar xf wordpress-4.7.3-zh_CN.tar.gz
[root@web01 html]# ll blog/ -d
drwxr-xr-x 5 root root 4096 Aug  6 18:29 blog/
total 188
-rw-r--r--  1 www www   418 Sep 25  2013 index.php
-rw-r--r--  1 www www 19935 Jan  3  2017 license.txt
-rw-r--r--  1 www www  6956 Mar  7  2017 readme.html
-rw-r--r--  1 www www  5447 Sep 28  2016 wp-activate.php
drwxr-xr-x  9 www www  4096 Mar  7  2017 wp-admin
-rw-r--r--  1 www www   364 Dec 19  2015 wp-blog-header.php
-rw-r--r--  1 www www  1627 Aug 29  2016 wp-comments-post.php
-rw-rw-rw-  1 www www  3212 Aug  6 21:36 wp-config.php
-rw-r--r--  1 www www  2930 Mar  7  2017 wp-config-sample.php
drwxr-xr-x  6 www www    84 Aug  6 21:52 wp-content
-rw-r--r--  1 www www  3286 May 25  2015 wp-cron.php
drwxr-xr-x 18 www www  8192 Mar  7  2017 wp-includes
-rw-r--r--  1 www www  2422 Nov 21  2016 wp-links-opml.php
-rw-r--r--  1 www www  3301 Oct 25  2016 wp-load.php
-rw-r--r--  1 www www 33939 Nov 21  2016 wp-login.php
-rw-r--r--  1 www www  8048 Jan 11  2017 wp-mail.php
-rw-r--r--  1 www www 16250 Nov 29  2016 wp-settings.php
-rw-r--r--  1 www www 29896 Oct 19  2016 wp-signup.php
-rw-r--r--  1 www www  4513 Oct 15  2016 wp-trackback.php
-rw-r--r--  1 www www  3065 Sep  1  2016 xmlrpc.php

更改权限,涉及到一个用户转换的问题
chown -R www. /html


用户访问web的时候,不管是什么用户,都会转化为www用户。(和nginx worker进程的是同一个用户)。
用户访问动态的请求由nginx会交给php程序,此时php的程序为apache(默认)也无法处理。
需要将php的用户变为和nginx worker进程的同一个用户。

  • 第三个历程: 确认nginx配置文件是否正确
    server {
        listen            80;
        server_name  blog.oldboy.com;
        location / {
            root   /html/blog;
            index  index.php oldboy.jpg index.html index.htm;
        }
        location ~ \.php$ {
            root /html/blog;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }
    }
  • 第四个历程: 访问blog页面进行初始化配置过程
    配置blog代码和数据库建立联系


    综合架构之网站服务-LNMP搭建博客_第3张图片
    第一次访问页面

根据提示需要创建数据库

创建网站的数据库
blog网站所需数据库(进入到数据库界面)
create database wordpress;#没有补全功能
show databases;

授权管理数据库用户
blog网站所需数据库(进入到数据库界面)
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';

mysql相关命令
mysql -uroot -poldboy123 ---进入数据库
show databases----查看数据库
create database wordpress;---创建数据库
drop database wordpress;---删除数据库
select host,user from mysql.user; ---查看user表中的host信息和user信息
select * from mysql.user; -------查看mysql的user表中查看所有信息
user wordpress; ----进入数据库
show tables;----查看库中的表信息
mysql -uwordpress -poldboy123 -h 172.16.1.51
远程连接数据库服务器会得到远程主机的IP地址,并进行域名反向解析解析到IP地址的主机信息web01 和数据库中的wordpress库无法匹配。所以不能连接。
解决方法:跳过地址反向解析
skip-name-resolve
解决方法:删除无用的用户
drop user ' ' @' '


点击确定后,将库中信息导入到表中

综合架构之网站服务-LNMP搭建博客_第4张图片
数据库进行建表

post方法访问网站
综合架构之网站服务-LNMP搭建博客_第5张图片
image

可以看到请求头信息,一般公司会将此信息隐藏。

综合架构之网站服务-LNMP搭建博客_第6张图片
image

博客上传主题出现413的响应码,无法上传的问题

综合架构之网站服务-LNMP搭建博客_第7张图片
image

解决办法:

vi /etc/nginx/conf.d/blog.conf

   keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
    client_max_body_size 50m;#(设置客户端请求体最大值,默认为1M)
}
综合架构之网站服务-LNMP搭建博客_第8张图片
image

vi /etc/php.ini ----修改php的上传大小

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 20M

你可能感兴趣的:(综合架构之网站服务-LNMP搭建博客)