1. LNMP 架构
L -- Linux
N -- Nginx 处理用户的静态请求
M -- MySQL 存储用户的字符串数据信息
P -- PHP 处理动态请求;负责和数据库建立关系
- 注意
01. selinux 关闭
02. /tmp 1777 权限,mysql服务无法启动 (编译安装)
2. LNMP 架构部署
2.1 Nginx 部署
2.2 MariaDB 部署
2.2.1 安装
yum install mariadb mariadb-server -y
2.2.2 初始化
mysql_install_db --help
--basedir=path 指定 mysql 程序目录
--datadir=path 指定 数据信息 保存目录
--user=mysql 指定 用户管理数据目录 700
信息输出:
创建用户密码信息
# 扩展
# 01. 给本地数据库设置密码
mysqladmin -u root password 'xxxx'
# 02. 给远程数据库设置密码
mysqladmin -u root -h web01 password 'xxx'
2.2.3 启动服务
systemctl start mariadb
systemctl enable mariadb
2.2.3 设置密码
mysqladmin -u root password 'xxx'
2.2.4 连接数据库
mysql -u root -pxxx
2.3 PHP 部署安装
2.3.1 更新 yum 源,卸载系统自带的 PHP 软件
yum remove php-mysql php php-fpm php-common -y
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
2.3.2 安装 PHP 软件(7.1)
yum install 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-mongodb php71w-pecl-redis -y
2.3.3 编写配置文件
vim /etc/php-fpm.d/www.conf
user = www
group = www
# 保证 Nginx 进程的管理用户和 PHP 服务进程的管理用户保持一致
2.3.4 启动服务
systemctl start php-fpm
systemctl enable php-fpm
3. LNMP 架构原理
4. 实现 LNMP 之间建立关系
4.1 实现 Nginx 和 PHP 之间建立关系
4.1.1 编写 Nginx 配置文件
location ~ \.php$ {
root /html/blog;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
systemctl restart nginx
4.1.2 编写动态资源文件
vim test.php
<?php
phpinfo();
?>
4.1.3 访问测试
4.2 实现 PHP 和 MySQL 之间建立关系
4.2.1 编写 PHP 代码文件
test_mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "123456";
$conn = mysqli_connect($servername,$username,$password);
if ($conn) {
echo "successful!\n";
}
else {
die("connection failed:".mysqli_connect_error());
}
?>
4.2.2 访问测试
5. 部署搭建网站页面(代码上线)
5.1 获取代码信息 (git)
使用开源的网站代码
www 网站页面:http://www.dedecms.com/
bbs 网站页面:https://www.discuz.net/
blog 网站页面:https://cn.wordpress.org/
知乎 网站页面:http://www.wecenter.com/downloads/
5.2 将代码解压,放入到站点目录中
5.3 修改站点目录权限
chown -R www.www /html/blog
5.4 创建数据库 和 用户
create database wordpress charset utf8;
show databases;
grant all on wordpress.* to wordpress@'localhost' identified by '123456';
show grants for wordpress@'%';
select user,host from mysql.user;
5.5 网站页面初始化
5.6 问题解决
5.6.1 上传文件报 413 错误
- 修改 Nginx 配置文件
vim blog.conf
server {
client_max_body_size 50m; -- 指定用户上传数据的大小限制(默认为1M)
}
- 修改 php.ini 配置文件
upload_max_filesize = 50M -- 使PHP接收用户上传的更大的数据(默认2M)
5.6.2 如何让 LNMP 架构和存储服务器建立关系
- 找出图片存储的目录
# 01. 根据图片链接地址获取图片存储位置
http://blog.yunxuanedu.com/wp-content/uploads/2021/12/hj.gif
# 02. 先定位数据存放站点目录
find /html/blog -type f -mmin -5 # 最今 5 分钟内 的文件
inotifywait -mrq /html/blog
- 使 Web 服务器 和 存储服务器建立关系
# 01. 检查存储服务是否正常
# 02. 编写存储服务配置文件
[root@nfs01 ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,anonuid=1005,anongid=1005)
/data/www 172.16.1.0/24(rw,sync,anonuid=1005,anongid=1005)
/data/bbs 172.16.1.0/24(rw,sync,anonuid=1005,anongid=1005)
[root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/bbs 172.16.1.0/24
/data/www 172.16.1.0/24
/data/blog 172.16.1.0/24
# 03. 将 Web 服务器上的数据迁移
[root@web01 uploads]# ll
total 0
drwxr-xr-x 3 www www 16 Dec 29 16:34 2021
[root@web01 uploads]# mv 2021/ /tmp/
[root@web01 uploads]# ll
total 0
[root@web01 uploads]# pwd
/html/blog/wp-content/uploads
# 04. 挂载目录
[root@web01 uploads]# mount -t nfs 172.16.1.31:/data/blog /html/blog/wp-content/uploads
[root@web01 uploads]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 28G 2.0G 26G 8% /
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 20M 467M 5% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 473M 125M 349M 27% /boot
172.16.1.31:/data 28G 1.9G 26G 7% /mnt
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/data/blog 28G 1.9G 26G 7% /html/blog/wp-content/uploads
# 05. 数据迁移到挂载目录下
[root@web01 ~]# mv /tmp/2021 /html/blog/wp-content/uploads
[root@web01 ~]# cd /html/blog/wp-content/uploads
[root@web01 uploads]# ll
total 0
drwxr-xr-x 3 www www 16 Dec 29 16:34 2021
# 06. 访问测试
5.6.3 如何让 LNMP 架构和 数据库服务器建立关系
5.6.3.1 为什么 不将数据库 服务在web站点服务器上运行
- 方便集群资源共享,保证集群节点服务器数据一致
- 节省硬件成本和维护成本
- 安全可靠等
5.6.3.2 数据迁移流程
- 在本地进行数据备份
# 全库备份
mysqldump -uroot -p123456 --all-database > /tmp/web_back.sql
- 将备份数据迁移至数据库服务器
- 恢复数据
mysql -uroot -pxxx < /tmp/web_back.sql
- 修改数据库用户信息
# 优化 - 删除无用的用户信息
delete from mysql.user where user="";
# 新建用户
grant all on wordpress.* to wordpress@'172.16.1.%' identified by '123456';
flush privileges; -- 刷新权限,若授权后测试未生效
- 修改 Web 服务器 代码文件信息
vim wp-config.php
- 停止 Web 服务器上的数据库
5.6.4 域名变动后,无法正常访问新域名,会跳到旧域名问题
- 修改 wordpress 后天设置信息,将后台中旧域名修改为新域名
- 修改 数据库 中的数据信息