首页 > 其他分享 >动态网络架构

动态网络架构

时间:2024-11-01 15:33:01浏览次数:1  
标签:php 架构 -- 网络 nginx code web01 动态 root

1.静态网站搭建

1.1 搭建要求

名字: 一个高清视频下载站。

网站初衷: 做1个人人看得起的大片网站。

目录结构(目标)

https://mirrors.tuna.tsinghua.edu.cn/

网站整体要求:

  1. 浏览器打开后,显示目录结构,不要显示首页文件内容(删除首页文件).(如上图)。
  2. 增加svip功能目录/video/(增加用户名和密码认证)。
  3. 增加统计功能,统计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 

访问效果

http://share.m01.cn

http://share.m01.cn/video/

 

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;
  }

http://share.m01.cn/video/

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]# 

访问效果

http://share.m01.cn/status/

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

  1. 2个独立的用户.
  2. Linux的root用户用于进入和管理整个Linux系统.
  3. 数据库的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

相关文章

  • 诺贝尔物理学奖的新篇章:机器学习与神经网络的光辉时刻
    文章目录前言一、从理论到实践:机器学习的物理基础二、跨学科融合:开启智能时代的新纪元三、技术创新:推动科学研究的革命四、社会影响:促进公平与可持续发展五、伦理与挑战:确保技术的健康发展六、未来展望:开启智能时代的无限可能结语前言在科学界的璀璨星河中,诺贝尔奖......
  • Partition架构
    优质博文:IT-BLOG-CNPartition架构【1】结构:Region至少3个Zone,Zone内至少两个Partition,Partition内至少1个K8SMemberCluster;【2】故障域:故障域及核心链路至少Zone内收敛,甚至Partition收敛。故障域之间不应该有交互(状态流等);【3】变更规范:不同时变更多个Zone,甚至不同......
  • 网络安全工程师面试题汇总
    以下为信息安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,没有填答案是希望大家如果不懂能自己动手找到答案,祝各位都能找到满意的工作~注:做这个List的目标不是很全,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达面,查漏补缺。TODOLIST渗透测试W......
  • 网络安全人士必知的35个安全框架及模型_网络安全模型有哪几种
    01概述网络安全专业机构制定的一套标准、准则和程序,旨在帮助组织了解和管理面临的网络安全风险。优秀的安全框架及模型应该为用户提供一种可靠方法,帮助其实现网络安全建设计划。对于那些希望按照行业最佳实践来设计或改进安全策略的组织或个人来说,网络安全框架及模型是不......
  • 自学黑客(网络安全),一般人我劝你还是算了吧_网络安全漏洞挖掘需要报课吗
    一、自学网络安全学习的误区和陷阱1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多一般人如果想要把编程学好再开始......
  • [专有网络VPC]创建和管理流量镜像
    通过流量镜像功能,您可以将符合筛选条件的经过弹性网卡ENI的网络流量复制并发送到指定目的实例,从而实现对网络流量的监控和分析需求。前提条件初次使用时,请登录流量镜像开通页面,根据提示开通流量镜像功能。如果镜像会话中的镜像源和镜像目的不属于同一个专有网络VPC(Virtual......
  • 算法设计与分析中的几个核心算法策略:动态规划、贪心算法、回溯算法和分治算法
    这些题目主要考察的是算法设计与分析中的几个核心算法策略:动态规划、贪心算法、回溯算法和分治算法。下面我将分别介绍这些知识点,并解析题目的详细解答过程。1.动态规划(DynamicProgramming,DP)知识点介绍:动态规划是一种通过把原问题分解为相对简单的子问题的方式来求解复杂问......
  • 如何用3个月零基础入门网络安全?_网络安全零基础怎么学习
    ......
  • 深度学习——卷积神经网络
    一、卷积神经网络        卷积神经网络(ConvolutionalNeuralNetworks,简称CNN)是一种深度学习模型,它在图像和视频识别、分类和分割等任务中表现出色。CNN的设计灵感来源于生物的视觉皮层机制,特别是它如何响应图像边缘和纹理等局部特征。1.卷积神经网络的应用领域  ......
  • 动态规划做题记录
    个人做完题目后的总结。所有记录仅代表个人,如果您是神犇觉得我太菜/题目是sb题/马蜂奇特请亲喷。树形dpP9437『XYGOIround1』一棵树首先写了\(O(n^2)\)的暴力,记录\(a_i\)的位数可以过\(20\text{pts}\)点击查看代码#ifdefONLINE_JUDGE#else#defineFRZ_29#e......