6、Nginx-搭建LNMP架构
版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin
1.LNMP架构基本概述
1.什么是LNMP
LNMP是一套技术的组合,L是linux,N是nginx,M是mysql,P是php
2.LNMP架构原理
1.用户发出请求后,请求到达nginx
2.如果是静态请求,nginx自己处理
3.如果是动态请求nginx 根据 请求类型(php) 通过fastcgi_pass 动态请求交给 php-fpm(fastcgi)
4.php-fpm收到请求后,传递给php解释器(与数据库交互)
5.解释后把结果传递给用户(解释器-->php-fpm--->nginx--->用户)
6.完成动态请求过程
php-fpm.conf 配置控制php-fpm进程
php.ini 控制解释器
2.LNMP环境配置
1.安装Linux服务器
安装Redhat CentOS Ubuntu 服务器
2.安装Nginx服务
###配置官方yum源后执行下方操作
[root@nginx ~]# yum install nginx -y
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx
3.安装PHP服务(支持链接各类数据库的模块)
//移除旧版php
[root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common
//安装扩展源
[root@nginx ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@nginx ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
//安装php72版本
[root@nginx ~]# yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache
//启动php
[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm
4.安装Mariadb数据库(MySQL服务)
[root@nginx ~]# yum -y install mariadb mariadb-server.x86_64
[root@nginx ~]# systemctl start mariadb
[root@nginx ~]# systemctl enable mariadb
5.nginx集成php
1.配置nginx配置文件
[root@nginx ~]# cat /etc/nginx/conf.d/php.conf
server {
server_name test.com;
listen 80;
root /code/php;
index index.php index.html;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2.检查是否集成成功
[root@nginx ~]# cat /code/php/index.php
<?php
phpinfo();
?>
6.php集成mysql
php集成一般是在代码里集成的
这里直接测试是否能链接上mysql
[root@nginx ~]# cat /code/php/mysqli.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
?>
7.安装wordpress
1.添加nginx配置文件
[root@nginx ~]# cat /etc/nginx/conf.d/wordpress.conf
server {
listen 80;
server_name blog.com;
root /code/wordpress;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2.上传wordpress代码
[root@nginx ~]# rz
[root@nginx ~]# tar xf latest-zh_CN.tar.gz -C /code
3.创建一个wordpress数据库
[root@nginx ~]# mysql -e "create database wordpress"
[root@nginx ~]# mysql -e "grant all privileges on *.* to 'wordpress'@'localhost' identified by '123456';flush privileges"
4.涉及到的相关mysql命令
数据库密码设置
mysql -uroot passwd 123456
数据库修改密码
mysql -uroot -p passwd 123456
数据库内部操作(进入数据库)
mysql -uroot -p123456 -h10.0.0.7
创建库
create database ***;
查询数据库
show databases;
进入库(相当于Linux的cd)
use WordPress;
查询表的user和host字段
select user,host from mysql.user;
授权远程连接用户
grant all privileges on *.* to ‘all’@’%’ identified by ‘123456’
刷新权限
flush privileges
删除用户
drop user ‘root’@‘web01’
查询表有哪些字段
desc user;
3.LNMP架构演变
1.什么是LNMP架构演变
当所有服务都在一台服务器上时,当服务器故障,所有服务都将不可用,且会造成数据的丢失,架构拆分之后,服务分散在不同服务器,降低了风险,并且可以减轻单台服务器的压力。
2.静态资源迁移(共享存储nfs)
###配置nfs
[root@nfs ~]# yum -y install nfs-utils.x86_64
[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,all_squash,anonuid=666,anongid=666)
###静态资源迁移
[root@web01 ~]# mv /code/wordpress/wp-content/uploads/* /backup/uploads/
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
[root@web01 ~]# cp -rp /backup/uploads/ /code/wordpress/wp-content/uploads/
3.数据库服务迁移
###配置数据库服务器
[root@db01 ~]# yum install -y mariadb-server
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
#web服务器备份数据库
[root@web01 ~]# mysqldump -uroot -p123456 -A >all.sql ###数据库全部备份
#备份传送到数据库服务器
[root@web01 ~]# scp all.sql.gz 172.16.1.51:/root
#导入到新的数据库中
[root@db01 ~]# gzip -d all.sql.gz
[root@db01 ~]# mysql <all.sql
#登录数据库并刷新mysql #权限信息并授权root用户远程登录
[root@db01 ~]# mysql
MariaDB [(none)]> flush privileges; #更新授权信息
MariaDB [(none)]> grant all on *.* to 'all'@'%' identified by '123456';###授权远程登录
web服务器重新连接数据库
#修改程序代码,访问db01的数据库(可以用find查找)
[root@web01 ~]# cd /code/wordpress/
[root@web01 wordpress]# grep DB_ wp-config.php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'all' );
define( 'DB_PASSWORD', '123456' );
define( 'DB_HOST', '172.16.1.51' );
define( 'DB_CHARSET', 'utf8' );
define( 'DB_COLLATE', '' );
#测试 web页面访问测试
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137243.html