1.静态网站搭建
1.1 搭建要求
名字: 一个高清视频下载站。
网站初衷: 做1个人人看得起的大片网站。
目录结构(目标)
https://mirrors.tuna.tsinghua.edu.cn/
网站整体要求:
- 浏览器打开后,显示目录结构,不要显示首页文件内容(删除首页文件).(如上图)。
- 增加svip功能目录/video/(增加用户名和密码认证)。
- 增加统计功能,统计nginx服务的状态,访问情况。
1.2 下载站基本要求
- 域名:share.m01.cn
- 站点目录: /app/code/share/
- touch 几个文件即可
- 温馨提示:不要创建首页文件.
- 自动索引功能(列表站点目录的内容),首页文件不存在.
- autoindex模块
# autoindex模块 应用场景
autoindex on; 开启目录索引功能(显示站点目录下的文件的列表,首页文件不存在.) #用户共享下载网站配置内部yum源.
autoindex_localtime on; # 显示本地时间.
autoindex_exact_size off; # 是否显示精确的文件的大小. off表示以人类可读形式显示大小
1.2 1 配置文件
/etc/nginx/conf.d/share.m01.conf
[root@m01 ~]# cat /etc/nginx/conf.d/share.m01.conf
server {
listen 80;
server_name share.m01.cn;
error_log /var/log/nginx/error.share.m01.cn.conf notice;
access_log /var/log/nginx/acess.share.m01.cn.conf main;
root /app/code/share;
autoindex on; # 开启目录索引,没有首页文件自动生成、显示目录内容
autoindex_localtime on; # 正确显示目录、文件时间
autoindex_exact_size off; # 人类可读形式显示文件大小
charset utf8; # 支持中文
location / {
index index.html;
}
location /video/ {
# 增加认证功能,用户名,密码
auth_basic "please input passwd";
auth_basic_user_file /etc/nginx/pass;
}
# nginx 状态检测功能
location = /status/ {
allow 10.0.0.1;
allow 172.16.1.0/24;
deny all;
stub_status;
}
}
[root@m01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
1.2.2 其他操作
other_operate
[root@m01 ~]# mkdir -p /app/code/share/
[root@m01 ~]# cd /app/code/share/
[root@m01 /app/code/share]# mkdir -p tools video
[root@m01 /app/code/share]# ls
tools video
[root@m01 /app/code/share]#
[root@m01 /app/code/share]# touch video/{01..06}.video
[root@m01 /app/code/share]# mkdir images
[root@m01 /app/code/share]# cd images/
[root@m01 /app/code/share/images]# rz
[root@m01 /app/code/share/images]# ls
7b2a596fc893b5475bc4e8da5b8df135.jpg
[root@m01 /app/code/share/images]#
[root@m01 /app/code/share/images]# mv 7b2a596fc893b5475bc4e8da5b8df135.jpg bizhi.jpg
[root@m01 /app/code/share/images]#
[root@m01 /app/code/share/images]# cd ..
[root@m01 /app/code/share]# ls
images readme.txt tools video
[root@m01 /app/code/share]# cd video/
[root@m01 /app/code/share/video]# ls
01.video 02.video 03.video 04.video 05.video 06.video
[root@m01 /app/code/share/video]#
[root@m01 /app/code/share/video]# seq 10000 > 01.video
[root@m01 /app/code/share/video]#
[root@m01 ~]# tree -F /app/code/share/
/app/code/share/
├── images/
│ └── bizhi.jpg
├── readme.txt
├── tools/
└── video/
├── 01.video
├── 02.video
├── 03.video
├── 04.video
├── 05.video
└── 06.video
3 directories, 8 files
[root@m01 /app/code/share/video]# systemctl reload nginx
访问效果
1.3 增加vip认证功能(简单认证功能)
增加一个video目录,里面创建文件.
增加认证功能(用户名和密码).
auth_basic模块
查看代码
[root@m01 ~]# htpasswd -bc /etc/nginx/pass xk 123
Adding password for user xk
[root@m01 ~]#
[root@m01 ~]# cat /etc/nginx/pass
xk:$apr1$5FTxxmKI$p0e3epIYTx37Kg.nDRRi30
[root@m01 /app/code/share]# chmod 600 /etc/nginx/pass
[root@m01 /app/code/share]#
[root@m01 /app/code/share]# chown nginx.nginx /etc/nginx/pass
[root@m01 /app/code/share]#
[root@m01 /app/code/share]# systemctl reload nginx
# 配置文件添加如下
location /video/ {
# 增加认证功能,用户名,密码
auth_basic "please input passwd";
auth_basic_user_file /etc/nginx/pass;
}
1.4 增加统计功能⭐️⭐️⭐️⭐️⭐️ 后面升级麒麟到sp3后可以解决这个问题
sp2的麒麟 ngx-1.21.5默认没有stub_status模块,需要编译安装.
显示ngx当前状态(显示ngx状态信息),未来用于监控ngx.
熟练使用状态模块
location /status {
stub_status;
}
# 配置文件添加如下
location = /status/ {
allow 10.0.0.1;
allow 172.16.1.0/24;
deny all;
stub_status;
}
# 指令验证
[root@m01 /app/code/share]# curl -H Host:share.m01.cn 172.16.1.71/status/
Active connections: 1
server accepts handled requests
13 13 22
Reading: 0 Writing: 1 Waiting: 0
[root@m01 /app/code/share]#
访问效果
ngx模块是众多ngx指令的集合
ngx状态模块中的指标说明
# ngx状态模块中的指标说明 说明
Active connections # 当前已经建立的连接数(est)和等待数量;体现:ngx并发
server accepts # 已经接收到客户端的连接总数.
handled # 服务端已经处理的连接.
requests # 客户端发出请求的总数.
reading # 正在读取的请求头连接数量
writing # 正在进行的响应的连接数量
waiting # 排队数量 排队情况
ab 压力测试功能
ab 压力测试功能 apache bench
ab -n 999999 -c 300 http://bird.oldboylinux.cn/
ab -n 9999999 -c 3 -H Host:v.oldboylinux.cn
http://10.0.0.7/
-n 次数
-c 并发
1.5 模块小结
ngx_http_core_module: https://nginx.org/en/docs/http/ngx_http_core_module.html
ngx_http_access_module
ngx_http_auth_basic_module
ngx_http_autoindex_module
ngx_http_log_module
ngx_http_ssl_module
ngx_http_stub_status_module
ngx_http_v2_module http 2.0
ngx_http_v3_module http 3.0
2. 动态网站架构⭐️⭐️⭐️⭐️⭐️
开发书写了一个php代码,java,Python,Golang.发给我们部署下。
1.测试能否直接部署到nginx中?
2.需要什么服务,是什么原理?
3.准备服务并测试。
4.部署代码。
3.1 概述
- 如何区分静态资源和动态资源
- 通过url简单/初步判断,网站的类型
- url中包含&或?一般都是动态网站.
- url包含.php 或.jsp ....
3.2 常见动态网站的架构
本质:开发使用什么语言书写的代码. engine x (nginx)
- PHP: LNMP(LEMP), LAMP, WNMP/WAMP (P-->PHP,W-->Windows,A--Apache)
- Java: LNMT(Tomcat,Jetty,Weblogic,Jboss,...)
- Python: LNMP(Python,uwsgi)
- Golang: LNMG(Golang)
- C/C++: LNM?........
LNM?
Linux 系统 WNMP (windows)
Nginx Web服务 Engine X
MySQL/MariaDB 数据库
LAMP A==> apache 目前很少使用.
WNMP/WAMP W==>Windows 一般开发使用
3.3 LNMP架构细节
LNMP原理
- Nginx处理动态请求与静态请求流程概述。
- LNMP处理动态请求流程概述
3.部署动态网站(php代码)⭐️⭐️⭐️⭐️⭐️
3.1 环境准备
# 角色 主机与ip(web01)
ngx+php+db web01 10.0.0.69/172.16.1.69
版本选择?
ngx一般没有版本要求. 稳定即可. ngx 1.26.xx
php的版本要求,根据代码来定. php7.2 php7.4最新
数据库:用什么与什么版本也要根据代码要求. mariadb
部署wordpress.
ngx 1.26.1
php 7.2
mariadb 10.3
3.2 数据库
3.2.1 安装mariadb
yum list | grep mariadb
[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@web01 ~]#
[root@web01 ~]# yum install nginx -y
[root@web01 /etc/yum.repos.d]# yum list | grep mariadb
mariadb-connector-c.x86_64 3.0.6-8.ky10 @anaconda
mariadb.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-backup.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-common.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-connector-c.x86_64 3.0.6-9.ky10 ks10-adv-updates
mariadb-connector-c-devel.x86_64 3.0.6-9.ky10 ks10-adv-updates
mariadb-cracklib.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-devel.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-embedded.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-embedded-devel.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-errmessage.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-gssapi-server.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-oqgraph-engine.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-server.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-server-galera.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
mariadb-test.x86_64 3:10.3.39-1.p01.ky10 ks10-adv-updates
[root@web01 /etc/yum.repos.d]#
[root@web01 /etc/yum.repos.d]# yum install -y mariadb-server.x86_64
[root@web01 /etc/yum.repos.d]# systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@web01 /etc/yum.repos.d]# systemctl start mariadb
[root@web01 /etc/yum.repos.d]#
[root@web01 /etc/yum.repos.d]# systemctl status mariadb
● mariadb.service - MariaDB 10.3.39 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-10-28 15:26:21 CST; 2s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 2966 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 2968 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-env>
Process: 2971 ExecStartPre=/usr/bin/mysql_install_db --user=mysql --skip-test-db (code=exited, status=0/SUCCESS)
Process: 3054 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 3023 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30
Memory: 86.2M
CGroup: /system.slice/mariadb.service
└─3023 /usr/libexec/mysqld
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] InnoDB: 10.3.39 started; log sequence number 1625419; transaction id 20
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] InnoDB: Buffer pool(s) load completed at 241028 15:26:21
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] Plugin 'FEEDBACK' is disabled.
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] Server socket created on IP: '::'.
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] Reading of all Master_info entries succeeded
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] Added new Master_info '' to hash table
10月 28 15:26:21 web01 mysqld[3023]: 2024-10-28 15:26:21 0 [Note] /usr/libexec/mysqld: ready for connections.
10月 28 15:26:21 web01 mysqld[3023]: Version: '10.3.39-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
10月 28 15:26:21 web01 systemd[1]: Started MariaDB 10.3.39 database server.
lines 1-26/26 (END)
^C
[root@web01 /etc/yum.repos.d]# ss -lntup | grep mariadb
[root@web01 /etc/yum.repos.d]# ss -lntup | grep mysql
tcp LISTEN 0 80 *:3306 *:* users:(("mysqld",pid=3023,fd=21))
[root@web01 /etc/yum.repos.d]#
[root@web01 /etc/yum.repos.d]# ps -ef | grep mysql
mysql 3023 1 0 15:26 ? 00:00:00 /usr/libexec/mysqld
root 3068 1260 0 15:27 pts/0 00:00:00 grep --color=auto mysql
[root@web01 /etc/yum.repos.d]#
3.2.2 数据库安全配置
SQL语句实现,现在他通过mysqlSQL语句实现
mysql_secure_installation
# 仅仅刚安装的时候运行.仅首次运行即可.
[root@web01 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): # 回车
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y # Y设置密码
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y # Y 删除数据库中的匿名用户(没有用户名的用户,容易导致安全问题)
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y # Y 是否禁止root远程登录
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y # Y 是否删除test测试用的数据库
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y # Y 是否更新权限信息表
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Linux系统的root与数据库的root
- 2个独立的用户.
- Linux的root用户用于进入和管理整个Linux系统.
- 数据库的root用户仅仅用于管理MySQL数据库.
3.2.3 进入数据库内部
mysql -u root -p
[root@web01 /app/code/blog]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.3.39-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wordpress |
+--------------------+
4 rows in set (0.000 sec)
'''
添加用户并设置权限
授权 所有 在 wordpress库.所有表 '用户名'@'白名单' 设置个密码 '密码
创建wordpress用户,赋予wordpress数据库所有权限(增删改查),wordpress密码为1,允许本地登录
'''
MariaDB [(none)]> grant all on wordpress.* to "wordpress"@"localhost" identified by "1";
Query OK, 0 rows affected (0.001 sec)
# 创建wordpress用户,赋予wordpress数据库所有权限(增删改查),wordpress密码为1,允许172.16.1登录,单独写% 允许所有ip访问
MariaDB [(none)]> grant all on wordpress.* to "wordpress"@"172.16.1.%" identified by "1";
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]>
MariaDB [(none)]> flush privileges; # 刷新权限
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]>
MariaDB [(none)]> select user,host from mysql.user;
+-----------+------------+
| user | host |
+-----------+------------+
| root | 127.0.0.1 |
| blog | 172.16.1.% |
| wordpress | 172.16.1.% |
| root | ::1 |
| blog | localhost |
| root | localhost |
| wordpress | localhost |
+-----------+------------+
7 rows in set (0.000 sec)
MariaDB [(none)]> exit
Bye
[root@web01 /app/code/blog]#
[root@web01 /app/code/blog]# mysql -uwordpress -p -h 172.16.1.69 # 远程登录测试
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.39-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit # 退出登录
Bye
删除用户或重新添加用户
drop user 'blog'@'172.16.1.%';
# 删除用户重新添加用户后,需要执行更新用户权限信息的指令.
grant all on wordpress.* to 'blog'@'172.16.1.%' identified by'1';
flush privileges;
3.2.4 测试
#测试本地连接 这个应该会提示拒绝
mysql -ubolg -p1
#测试远程连接 这个会成功
mysql -ublog -p1 -h 172.16.1.69
程序代码连接数据库:连接数据的配置文件.
- 小结:
- SQL语句.
- ⭐ 查看:show,select 查看用户,查看数据库.
- ⭐ 增加:创建数据库,创建用户.
- 删除:删除用户,删除数据库.
- 测试连接 mysql -u -p -h
- -u用户名
- -p密码
- -h指定数据库服务器ip
3.3 web01安装php
php7.2
php7.2
# 安装软件包
[root@web01 ~]# yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml php-json
已安装:
nginx-filesystem-1:1.21.5-2.p04.ky10.noarch oniguruma-6.9.0-3.ky10.x86_64 php-embedded-7.2.34-3.p02.ky10.x86_64 php-fpm-7.2.34-3.p02.ky10.x86_64
php-gd-7.2.34-3.p02.ky10.x86_64 php-intl-7.2.34-3.p02.ky10.x86_64 php-json-7.2.34-3.p02.ky10.x86_64 php-mbstring-7.2.34-3.p02.ky10.x86_64
php-mysqlnd-7.2.34-3.p02.ky10.x86_64 php-opcache-7.2.34-3.p02.ky10.x86_64 php-pdo-7.2.34-3.p02.ky10.x86_64 php-process-7.2.34-3.p02.ky10.x86_64
php-xml-7.2.34-3.p02.ky10.x86_64
完毕!
# 查看配置
[root@web01 ~]# rpm -ql php-fpm
/etc/httpd/conf.d/php.conf
/etc/logrotate.d/php-fpm
/etc/nginx/conf.d/php-fpm.conf
/etc/nginx/default.d/php.conf
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/systemd/system/php-fpm.service.d
# 检查与开机自动
[root@web01 /etc/php-fpm.d]# systemctl enable --now php-fpm.service
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@web01 /etc/php-fpm.d]#systemctl start php-fpm.service
# 修改配置文件进程用户apache-->nginx
/etc/php-fpm.conf #主配置文件
/etc/php-fpm.d
/etc/php-fpm.d/www.conf #子配置文件,修改目标
# 修改后检查
[root@web01 /etc/php-fpm.d]# egrep '^(user|group|listen) =' www.conf
user = nginx
group = nginx
listen = 127.0.0.1:9000
# 检查语法
[root@web01 /etc/php-fpm.d]# php-fpm -t
[28-Oct-2024 15:53:45] NOTICE: configuration file /etc/php-fpm.conf test is successful
# 重启服务或reload都行
[root@web01 /etc/php-fpm.d]# systemctl restart php-fpm.service
php7.4(暂不安装)
php7.4
#1. 清理已有的php软件包.
systemctl stop php-fpm
yum -y remove php*
yum remove remi-release.noarch
#2.配置php 7.4的yum源.remi
yum install http://rpms.remirepo.net/enterprise/remi-release-
7.rpm
#3.安装软件包
yum -y install php74 php74-php-bcmath php74-php-cli php74-phpcommon php74-php-devel php74-php-embedded php74-php-fpm php74-
php-gd php74-php-intl php74-php-mbstring php74-php-mysqlnd
php74-php-opcache php74-php-pdo php74-php-pear php74-php-pecligbinary php74-php-pecl-memcached php74-php-process php74-phpxml
#4. 检查与开机自动
systemctl enable php74-php-fpm
systemctl start php74-php-fpm
#5. 修改配置文件进程用户apache-->nginx
/etc/opt/remi/php74/php-fpm.conf #主配置文件
/etc/opt/remi/php74/php-fpm.d
/etc/opt/remi/php74/php-fpm.d/www.conf #子配置文件,修改目标
[root@web01 ~]# egrep -n '^(user|group)'
/etc/opt/remi/php74/php-fpm.d/www.conf
24:user = nginx
26:group = nginx
[root@web01 ~]# systemctl restart php74-php-fpm.service
php配置小结
- 安装
- 配置指定nginx用户
- 启动
3.4 ngx
/etc/nginx/conf.d/blog.web01.cn.conf
[root@web01 /app/code/blog]# cat /etc/nginx/conf.d/blog.web01.cn.conf
server{
listen 80;
server_name blog.web01.cn;
root /app/code/blog/;
error_log /var/log/nginx/blog-error.log notice;
access_log /var/log/nginx/blog-access.log main;
location / {
index index.php;
}
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;
}
}
3.5 部署代码与设置权限
下载,解压,部署代码
wordpress.org
[root@web01 ~]# wget https://cn.wordpress.org/latest-zh_CN.zip
[root@web01 ~]# mv latest-zh_CN.zip wordpress.zip
[root@web01 ~]# unzip -t wordpress.zip
[root@web01 ~]# mkdir -p /app/code/blog
[root@web01 ~]#
[root@web01 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
[root@web01 ~]# mv wordpress/* /app/code/blog/
[root@web01 ~]#
[root@web01 ~]# cd /app/code/blog/
[root@web01 /app/code/blog]# ls
index.php test_db_php.php wp-admin wp-config.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
license.txt test_ngx_php.php wp-blog-header.php wp-config-sample.php wp-includes wp-login.php wp-signup.php
readme.html wp-activate.php wp-comments-post.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
[root@web01 /app/code/blog]#
[root@web01 /app/code/blog]# ll
总用量 244
-rw-r--r-- 1 root root 405 2月 6 2020 index.php
-rw-r--r-- 1 root root 19915 1月 1 2024 license.txt
-rw-r--r-- 1 root root 7409 6月 18 19:59 readme.html
-rw-r--r-- 1 root root 298 10月 28 21:50 test_db_php.php
-rw-r--r-- 1 root root 22 10月 28 21:44 test_ngx_php.php
-rw-r--r-- 1 root root 7387 2月 13 2024 wp-activate.php
drwxr-xr-x 9 root root 4096 9月 11 03:00 wp-admin
-rw-r--r-- 1 root root 351 2月 6 2020 wp-blog-header.php
-rw-r--r-- 1 root root 2323 6月 14 2023 wp-comments-post.php
-rw-r--r-- 1 root root 3213 10月 28 17:37 wp-config.php
-rw-r--r-- 1 root root 3033 3月 11 2024 wp-config-sample.php
drwxr-xr-x 5 root root 69 9月 11 03:00 wp-content
-rw-r--r-- 1 root root 5638 5月 31 2023 wp-cron.php
drwxr-xr-x 30 root root 12288 9月 11 03:00 wp-includes
-rw-r--r-- 1 root root 2502 11月 27 2022 wp-links-opml.php
-rw-r--r-- 1 root root 3937 3月 11 2024 wp-load.php
-rw-r--r-- 1 root root 51238 5月 28 19:13 wp-login.php
-rw-r--r-- 1 root root 8525 9月 16 2023 wp-mail.php
-rw-r--r-- 1 root root 28774 7月 9 23:43 wp-settings.php
-rw-r--r-- 1 root root 34385 6月 20 2023 wp-signup.php
-rw-r--r-- 1 root root 4885 6月 22 2023 wp-trackback.php
-rw-r--r-- 1 root root 3246 3月 2 2024 xmlrpc.php
[root@web01 /app/code/blog]#
[root@web01 /app/code/blog]# id nobody
用户id=65534(nobody) 组id=65534(nobody) 组=65534(nobody)
[root@web01 /app/code/blog]#
[root@web01 /app/code/blog]#
[root@web01 /app/code/blog]# chown -R nginx.nginx /app/code/blog/
[root@web01 /app/code/blog]# ll
总用量 244
-rw-r--r-- 1 nginx nginx 405 2月 6 2020 index.php
-rw-r--r-- 1 nginx nginx 19915 1月 1 2024 license.txt
-rw-r--r-- 1 nginx nginx 7409 6月 18 19:59 readme.html
-rw-r--r-- 1 nginx nginx 298 10月 28 21:50 test_db_php.php
-rw-r--r-- 1 nginx nginx 22 10月 28 21:44 test_ngx_php.php
-rw-r--r-- 1 nginx nginx 7387 2月 13 2024 wp-activate.php
drwxr-xr-x 9 nginx nginx 4096 9月 11 03:00 wp-admin
-rw-r--r-- 1 nginx nginx 351 2月 6 2020 wp-blog-header.php
-rw-r--r-- 1 nginx nginx 2323 6月 14 2023 wp-comments-post.php
-rw-r--r-- 1 nginx nginx 3213 10月 28 17:37 wp-config.php
-rw-r--r-- 1 nginx nginx 3033 3月 11 2024 wp-config-sample.php
drwxr-xr-x 5 nginx nginx 69 9月 11 03:00 wp-content
-rw-r--r-- 1 nginx nginx 5638 5月 31 2023 wp-cron.php
drwxr-xr-x 30 nginx nginx 12288 9月 11 03:00 wp-includes
-rw-r--r-- 1 nginx nginx 2502 11月 27 2022 wp-links-opml.php
-rw-r--r-- 1 nginx nginx 3937 3月 11 2024 wp-load.php
-rw-r--r-- 1 nginx nginx 51238 5月 28 19:13 wp-login.php
-rw-r--r-- 1 nginx nginx 8525 9月 16 2023 wp-mail.php
-rw-r--r-- 1 nginx nginx 28774 7月 9 23:43 wp-settings.php
-rw-r--r-- 1 nginx nginx 34385 6月 20 2023 wp-signup.php
-rw-r--r-- 1 nginx nginx 4885 6月 22 2023 wp-trackback.php
-rw-r--r-- 1 nginx nginx 3246 3月 2 2024 xmlrpc.php
[root@web01 /app/code/blog]#
页面安装
http://blog.web01.cn/wp-admin/setup-config.php
添加一篇文章
4.添加主题
- 413 Request Entity Too Large 错误提示解决
- 修改ngx配置文件
- 修改php配置文件
- 有的时候修改代码或浏览器页面进行设置
nginx.conf
[root@web01 ~]# egrep -v '^$|#' /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user
[$time_local] "$request" '
'$status $body_bytes_sent
"$http_referer" '
'"$http_user_agent"
"$http_x_forwarded_for"'
'$scheme://$http_host';
access_log /var/log/nginx/access.log main;
#配置了下客户端上传文件的大小.
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
return 503;
}
}
修改/etc/php.ini php解析器配置文件
post_max_size = 80M
upload_max_filesize = 80M
5.调试
- 网站业务是否可以访问.
- 之前:检查端口,检查进程,不够的.
- 现在:检查业务,网站是否可以访问.
- 开发书写页面
5.1 排错与调试
排障流程核心: 排除法.
测试ngx+php是否ok,ngx能否把动态请求转发php,php能否处理与解析
[root@web01 ~]# cat /app/code/blog/test_ngx_php.php
<?php
phpinfo();
?>
# /etc/nginx/conf.d/blog.web01.cn.conf 添加配置
location =test_ngx_php.php {
index test_ngx_php.php;
}
测试ngx+php动态结果 http://blog.web01.cn/test_ngx_php.php
测试php+mysql
test_db_php.php
[root@web01 ~]# cat /app/code/blog/test_db_php.php
<?php
//数据库地址
$db_host='172.16.1.69';
//数据库用户名
$db_user='wordpress';
$db_pass='1';
//数据库名字
$db_name="wordpress";
$link_id=mysqli_connect($db_host,$db_user,$db_pass,$db_name);
if($link_id){
echo "mysql successful by xk!\n" ;
}else{
echo "connection failed!\n" ;
}
?>
# /etc/nginx/conf.d/blog.web01.cn.conf 添加配置
location =test_db_php.php {
index test_db_php.php;
}
# 浏览器访问
http://blog.web01.cn/test_db_php.php
mysql successful by xk!
5.2 检查用户上传与数据库信息
5.2.1 用户上传内容
F12查看得网站图片地址为:http://blog.web01.cn/wp-content/uploads/2024/10/%E5%A3%81%E7%BA%B8-2.jpg
web01服务器里找图片地址
# 图片被切分为不同大小的规格,适应不同的场景
[root@web01 ~]# ll /app/code/blog/wp-content/uploads/2024/10
总用量 180
-rw-r--r-- 1 nginx nginx 2436 10月 29 16:13 壁纸-1-150x150.jpg
-rw-r--r-- 1 nginx nginx 3916 10月 29 16:13 壁纸-1-300x177.jpg
-rw-r--r-- 1 nginx nginx 2436 10月 29 16:13 壁纸-150x150.jpg
-rw-r--r-- 1 nginx nginx 52433 10月 29 16:13 壁纸-1.jpg
-rw-r--r-- 1 nginx nginx 2436 10月 29 16:17 壁纸-2-150x150.jpg
-rw-r--r-- 1 nginx nginx 3916 10月 29 16:17 壁纸-2-300x177.jpg
-rw-r--r-- 1 nginx nginx 52433 10月 29 16:17 壁纸-2.jpg
-rw-r--r-- 1 nginx nginx 3916 10月 29 16:13 壁纸-300x177.jpg
-rw-r--r-- 1 nginx nginx 52433 10月 29 16:13 壁纸.jpg
[root@web01 ~]#
5.2.2 数据库信息
查看代码
MariaDB [(none)]> select post_title,post_content from wordpress.wp_posts\G;
*************************** 6. row ***************************
post_title: 高清壁纸
post_content: <!-- wp:paragraph -->
<p>windows10 高清壁纸,山水风景画</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->
*************************** 7. row ***************************
post_title: Custom Styles
post_content: {"version": 3, "isGlobalStylesUserThemeJSON": true }
*************************** 8. row ***************************
post_title: 高清壁纸
post_content: <!-- wp:paragraph -->
<p>windows10 高清壁纸,山水风景画</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->
6.常见故障
6.1 权限问题
现象:
原因:用户不统一。/app/code/blog/站点目录下文件的所有者是root;nginx、php用户为nginx
解决方法:修改/app/code/blog目录下和写入数据相关的文件权限,和nginx ,php用户一致,粗暴解决法:chown -R nginx.nginx /app/code/blog
6.2 数据库连接问题
7. 数据库备份与恢复
7.1 代码中的数据库连接配置文件
一般应用代码中都要一个文件,记录着代码连接哪个数据库,用户名,密码,端口.
wordpress 站点目录下面 wp-config.php wp-config-sample.php
define( 'DB_NAME', 'blog' );
define( 'DB_USER', 'blog' );
define( 'DB_PASSWORD', '1' );
define( 'DB_HOST', '172.16.1.69' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );
7.2 备份与恢复
备份所有库⭐ ⭐ ⭐ ⭐ ⭐
# mysqldump 把数据库中的内容以SQL语句形式导出.
备份指令: 备份所有库
mysqldump -uroot -p1 --all-databases |gzip >/backup/all-dbs.sql.gz
#导入指令:
zcat /backup/all-dbs.sql.gz |mysql -uroot -p
也可以先解压.sql.gz文件然后 mysql -uroot -p <xxx.sql 导入
备份指定库
#备份
mysqldump -uroot -p --databases blog | gzip
>/backup/blog.sql.gz
#恢复
zcat /backup/blog.sql.gz | mysql -uroot -p blog
mysql -uroot -p blog </backup/blog.sql
标签:php,架构,--,网络,nginx,code,web01,动态,root From: https://www.cnblogs.com/daofaziran/p/18511157