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以下的文件