未登录

信蚁社区 通行证

搜索
热搜: 统信UOS 麒麟
查看: 89|回复: 0

[关于麒麟] 全网最详细基于Kylin的Nginx服务部署与配置(2/2)

[复制链接]

103

主题

4

回帖

339

积分

实习版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
339

最佳新人灌水之王优秀版主

发表于 2025-4-19 13:45:01 | 显示全部楼层 |阅读模式
以下所使用的环境为:
虚拟化软件:VMware Workstation 17 Pro
麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64
五、Nginx Location语法特性

1. Location语法的优先级

Location可以书写在server字段和location字段中。
匹配符匹配规则优先级
=精确匹配1
^~以某个字符串开头,不检查正则表达式,区分大小写2
~区分大小写的正则匹配3
~*不区分大小写的正则匹配4
2. Location匹配规则案例

[Step1]: 新建虚拟主机配置文件
  1. vim /opt/nginx/conf/location.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   server_name _;
  6.   charset utf-8;
  7.   location / {return200"当其它location规则不匹配,则默认匹配此条规则\n";}
  8.   location =/ {return200"当url=/时,匹配此条规则\n";}
  9.   location /docs/ {return200"匹配url:/docs/\n";}
  10.   location ^~ /images/ {return200"匹配任何以images开头的请求,不匹配正则表达式\n";}
  11.   location ~* \.(png|jpg)$ {return200"匹配以png或jpg结尾的url,正常正则表达式\n";}}
复制代码
[Step2]: 编辑Nginx主配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http字段中include
  3. include       location.conf;
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-1.png


[Step3]: 验证Nginx配置文件语法,重新加载Nginx配置文件
  1. nginx -t
  2. nginx -s reload
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-2.png


[Step4]: 验证【location =/】
  1. curl http://192.168.110.1:8080                # 即使不书写/,也会默认给我们加上/curl http://192.168.110.1:8080/
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-3.png


[Step5]: 验证【/docs/】
  1. curl http://192.168.110.1:8080/docs/
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-4.png


[Step6]: 验证【^~ /images/】
  1. curl http://192.168.110.1:8080/images/
  2. curl http://192.168.110.1:8080/images
  3. curl http://192.168.110.1:8080/images/xxxx
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-5.png


[Step7]: 验证【~ \.(png|jpg)】*
  1. curl http://192.168.110.1:8080/images/aa.jpg
  2. curl http://192.168.110.1:8080/docs/aa.jpg
  3. curl http://192.168.110.1:8080/aa.jpg
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-6.png


3. 利用Location分离静态动态网页请求

[Step1]: 新建虚拟主机配置文件
  1. vim /opt/nginx/conf/static.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   server_name _;
  6.   location / {# 当不匹配下列的静态数据规则,则将其当作动态数据,此处调整到百度
  7.     proxy_pass http://www.baidu.com;}
  8.   location ~* \.jpg$ {# 如果请求的数据为静态数据,此处以jpg为例,则指向/www/location目录
  9.     root /www/location/;}}
复制代码
[Step2]: 编辑Nginx主配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http字段中include
  3. include       static.conf;
复制代码
[Step3]: 验证Nginx配置文件语法,重新加载Nginx配置文件
  1. nginx -t
  2. nginx -s reload
复制代码
[Step4]: 往/www/location目录中放入图片
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-7.png


[Step5]: 客户端测试,请求动态图片
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-8.png


[Step6]: 客户端测试,自动跳转到baidu
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-9.png


4. root参数用法

节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
虚拟主机配置文件如下:
  1. vim /opt/nginx/conf/root1.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   server_name _;
  6.   location /static/ {
  7.     root /img/;}}
复制代码
资源目录如下:
  1. tree /img
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-10.png


此时Nginx会认为资源存放在 http://192.168.110.1:8080/img/static/xxxx,但是我们的url不需要书写/img,也就是用户实际上是不知道/img目录的存在,也不知道访问的图片在/img目录下存放。
  1. http://192.168.110.1:8080/static/404.jpg
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-11.png


5. alias参数用法

alias的实际用法类似于root,但是alias是直接将值替换,而root是附加在url上。相当于root,alias更易理解。
节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
虚拟主机配置文件如下:
  1. vim /opt/nginx/conf/alias1.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   server_name _;
  6.   location /static/ {alias /www/alias/;}}
复制代码
资源目录如下:
  1. tree /www/
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-12.png


当我们访问 http://192.168.110.1:8080/static/404.jpg时,Nginx会将/static/替换为 http://192.168.110.1:8080/www/alias/404.jpg,该过程用户的不可得知。
  1. http://192.168.110.1:8080/static/404.jpg
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-13.png


六、rewrite模块

1. rewrite模块介绍

rewrite是来自ngx_http_rewrite_module模块,该模块用于使用PCRE正则表达式更改请求URI,返回重定向,以及有条件选择的选择。ngx_http_rewrite_module模块中一共包含 break、if、return、rewrite和set指令。
rewrite功能
    将http重定向到https 实现URL的永久重定向
2. if和return指令

if的匹配规则如下:
符号说明
=相等为true,不相等为false
!=不相等为true,相等为false
~区分大小写的正则表达式,匹配为true,不匹配为false
!~区分大小写的正则表达式,不匹配为true,匹配为false
~*不区分大小写的正则表达式,匹配为true,不匹配为false
!~*不区分大小写的正则表达式,不匹配为true,匹配为false
条件参数如下
符号作用
-f 和 !-f请求的文件是否存在
-d 和 !-d判断的目录是否存在
-e 和 !-e判断的文件、目录以及软链接是否存在
-x 和 !-x判断的文件是否具有执行权限
return基本语法
  1. return code [text|URL|@location_name]
复制代码
    **code:**HTTP状态码,必须要指定返回的状态码 **text:**返回的文本,可选值 **URL:**重定向到目标url,可选值 **@location_name:**重定向到Location域中(内部重定向),可选值
[Step1]: 新建虚拟主机配置文件,实现匹配用户的请求方法是否为GET
  1. vim /opt/nginx/conf/if.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   server_name _;
  6.   location /{if($request_method!= GET){return200"You must use 'GET'";}return200"successfully";}}
复制代码
[Step2]: 验证:客户端使用curl访问Nginx,默认使用的请求方式为GET
  1. curl http://192.168.110.1:8080
  2. curl-X PUT http://192.168.110.1:8080
  3. curl-X POST http://192.168.110.1:8080
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-14.png


3. set指令

主要作用:在Nginx中设定变量,然后可以在配置文件中调用该变量。
set基本语法
  1. set$NAME value;
复制代码

  • **                                                  N                                  A                                  M                                  E                                  <                                  /                                  f                                  o                                  n                                  t                                  >                                  :                                  ∗                                  ∗                                  变量名,必须以                                          NAME</font>:**变量名,必须以                           NAME</font>:∗∗变量名,必须以开头**value:**变量值,可以是字符串、正则表达式匹配结果等
[Step1]: 新建虚拟主机配置文件
  1. vim /opt/nginx/conf/set1.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;set$txt"Hello World!\n";
  5.   location /{return200$txt;}}
复制代码
[Step2]: 验证:客户端使用curl访问Nginx
  1. curl http://192.168.110.1:8080
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-15.png


4. break指令

break指令是流程控制指令,用于停止处理当前的 location、rewrite或其它指令集,并跳转到指定的阶段。当Nginx执行到break后,会停止后续的if、return、rewrite、set指令执行。总的来说:break会停止当前块中的后续语句执行。
[Step1]: 新建虚拟主机配置文件
  1. vim /opt/nginx/conf/break1.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   location /{set$txt1"Hello World!";echo$txt1;break;set$txt2"Hello Kylin!";echo$txt2;}}
复制代码
[Step2]: 验证:客户端使用curl访问Nginx
  1. curl http://192.168.110.1:8080
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-16.png


5. rewrite指令

rewrite指令允许根据正则表达式修改请求的URL,在修改请求的url时可以保证原先url所携带的参数不丢失。
rewrite指令基本语法
  1. rewrite regex replacement [flag]
复制代码
    **regex:**正则表达式 **replacement:**要替换成新的URL
  • **flag:**标记位
      redirect:返回302临时重定向 permanent:返回301永久重定向 last:服务器内部重写URL,实现重定向 break:在完成跳转后,终止后续的last

rewrite标记位的不同参数特性:
    redirect和permanent参数是在客户端实现URL更新,更新动作对于用户是可预见的。 last是在服务器内部实现url更新,更新动作对于用户的不可预见的。
rewrite和return都可以实现重定向,二者的区别:
    rewrite和return都可以实现重定向 对于计算机而言,rewrite还需要正则匹配,而return不需要,所以rewrite速度会更快一点 对于用户而言,rewrite和return二者没有任何区别 选择rewrite和return根据需求自主选择即可
重定向301和302的区别
    302重定向是暂时的,浏览器会跳转到新的页面,旧的页面会保存 301重定向是永久的,浏览器在抓取新页面时会同时将旧网址替换为重定向后的网址 301的使用场景:公司域名的永久变化,如 张三.com 变更为 李四.com【二级域名发生改变】 302的使用场景:公司域名的临时变化 ,如 buy.张三.com 变更为 shop.张三.com【二级域名不发生改变】
5.1 rewrite实现永久重定向

实验需求
    旧域名:www.shop.com 新域名:www.online.com 实现旧域名跳转到新域名
节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
Kylin-2192.168.110.2/24测试服务器
[Step1]: 新建旧域名的虚拟主机配置文件
  1. vim /opt/nginx/conf/shop.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name www.shop.com;
  6.   location /{
  7.     root /www/shop/;
  8.     index index.html;
  9.     rewrite / http://www.online.com permanent;# permanent返回301永久重定向}}
复制代码
[Step2]: 新建新域名的虚拟主机配置文件
  1. vim /opt/nginx/conf/online.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name www.online.com;
  6.   location /{
  7.     root /www/online/;
  8.     index index.html;}}
复制代码
[Step3]: 新建新旧网站的索引页
  1. mkdir /www/{shop,online}echo"www.shop.com"> /www/shop/index.html
  2. echo"www.online.com"> /www/online/index.html
复制代码
[Step4]: 修改主配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http字段中分别include
  3. include       shop.conf;
  4. include       online.conf;
复制代码
[Step5]: 验证Nginx配置文件语法,重新加载Nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step6]: 客户端Kylin-2添加域名解析,测试访问新网站
  1. echo"192.168.110.1  www.shop.com www.online.com">> /etc/hosts
  2. curl http://www.online.com
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-17.png


[Step7]: 客户端Kylin-2测试访问旧网站,此时会提示302临时重定向
  1. curl http://www.shop.com
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-18.png


[Step8]: 客户端Kylin-2测试访问旧网站,添加-L选项,让curl自动处理重定向(追随链接自动重定向)
  1. curl-L http://www.shop.com
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-19.png


5.2 rewrite实现临时重定向

实验需求
    旧域名:www.shop.com 新域名:promotion.shop.com 公司最近推出了打折活动,当访问http://www.shop.com/promotion时临时重定向到http://promotion.shop.com
节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
Kylin-2192.168.110.2/24测试服务器
[Step1]: 新建旧域名的虚拟主机配置文件
  1. vim /opt/nginx/conf/shop.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name www.shop.com;
  6.   location /promotion {# 匹配域名http://www.shop.com/promotion
  7.     rewrite / http://promotion.shop.com redirect;# redirect返回302临时重定向}
  8.   location / {
  9.     root /www/shop/;
  10.     index index.html;}}
复制代码
[Step2]: 新建新域名的虚拟主机配置文件
  1. vim /opt/nginx/conf/promotion.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name promotion.shop.com;
  6.   location / {
  7.     root /www/promotion/;
  8.     index index.html;}}
复制代码
[Step3]: 新建新旧网站的索引页
  1. mkdir /www/{shop,promotion}echo"www.shop.com"> /www/shop/index.html
  2. echo"promotion.shop.com"> /www/promotion/index.html
复制代码
[Step4]: 修改主配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http块中include
  3. include       shop.conf;
  4. include       promotion.conf;
复制代码
[Step5]: 验证Nginx配置文件语法,重新加载Nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step6]: 客户端Kylin-2添加域名解析,测试访问新网站
  1. echo"192.168.110.1  www.shop.com promotion.shop.com">> /etc/hosts       
  2. curl http://promotion.shop.com
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-20.png


[Step7]: 客户端Kylin-2测试访问旧网站,此时会提示302临时重定向
  1. curl http://www.shop.com
  2. curl http://www.shop.com/promotion
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-21.png


[Step8]: 客户端Kylin-2测试访问旧网站,添加-L选项,让curl自动处理重定向(追随链接自动重定向)
  1. curl-L  http://www.shop.com/promotion
  2. curl-I  http://www.shop.com/promotion
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-22.png


5.3. last实现服务器内重定向

当rewrite指令的最后一个参数设置为last时,在完成rewrite操作后,Nginx会停止处理当前的rewrite指令,将url重写结果进行Location匹配,这个过程在浏览器的URL地址不会发生改变,对于用户而言无感知。
实验需求
    访问的URL:http://www.shop.com/apple/apple.jpg 要求跳转到:http://www.shop.com/pic/apple.jpg apple.jpg图片资源目录在/www/img目录下
节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
Kylin-2192.168.110.2/24测试服务器
[Step1]: 新建虚拟主机配置文件
  1. vim /opt/nginx/conf/shop.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name www.shop.com;
  6.   location /apple {# 访问url:http://www.shop.com/apple/apple.jpg# [^/apple/(.*)$],提取/apple/开头,后续所有的字符存储到变量 $1 中。# [/pic/$1],替换url,偷换为: http://www.shop.com/pic/apple.jpg# [last],将替换后的结果拿去和其它location进行匹配
  7.     rewrite ^/apple/(.*)$ /pic/$1 last;}       
  8.   location /pic {alias /www/img/;}
  9.   location / {
  10.     root /www/shop/;
  11.     index index.html;}}
复制代码
[Step2]: 新建网站的索引页
  1. mkdir /www/{shop,img}echo"www.shop.com"> /www/shop/index.html
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-23.png


[Step3]: 修改主配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http块中include
  3. include       shop.conf;
复制代码
[Step4]: 验证Nginx配置文件语法,重新加载Nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step5]: 客户端Kylin-2添加域名解析,测试访问新网站
  1. http://www.shop.com/apple/apple.jpg
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-24.png


[Step6]: 客户端Kylin-2使用curl访问Nginx,显示网站的响应头信息。可以看到HTTP状态码为200,所以重写url的过程对用户是不可见的。
  1. curl-I http://www.shop.com/apple/apple.jpg
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-25.png


5.4 break终止last匹配

当rewrite指令的最后一个参数设置为break时,在完成rewrite操作后,Nginx会停止处理下一个location中的rewrite操作。
实验需求
    访问的URL:http://www.shop.com/apple/apple.jpg
    location块中存在三个匹配项
      匹配 /apple ,重写URL 匹配 /img,
    apple.jpg图片资源目录在/www/img目录下

节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
Kylin-2192.168.110.2/24测试服务器
[Step1]: 新建虚拟主机配置文件
  1. vim /opt/nginx/conf/break_last.conf
  2. # 文件内容如下
  3. server {
  4.   listen 8080;
  5.   server_name _;
  6.   
  7.   location /aaa {# root目录的不能写在 /www/aaa,因为Nginx会帮我们自动填充url,书写为/www,nginx会将/aaa填充,填充后的url为 /www/aaa
  8.      root /www/;                       
  9.      index index.html;}
  10.   location /bbb {
  11.      root /www/;
  12.      index index.html;
  13.      rewrite ^/bbb/(.*)$ /aaa/$1 last;}
  14.   location /ccc {
  15.      root /www/;
  16.      index index.html;
  17.      rewrite ^/ccc/(.*)$ /bbb/$1break;}}
复制代码
[Step2]: 新建网站的索引页
  1. mkdir /www/{aaa,bbb,ccc}echo"aaaaaaaaa"> /www/aaa/index.html
  2. echo"bbbbbbbbb"> /www/bbb/index.html
  3. echo"ccccccccc"> /www/ccc/index.html
复制代码
[Step3]: 修改主配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http块中include
  3. include       break_last.conf;
复制代码
[Step4]: 验证Nginx配置文件语法,重新加载Nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step5]: 客户端Kylin-2测试访问 http://192.168.110.1:8080/aaa,会出现一个301永久重定向的提示,这是因为我们在书写rewrite时,通过[/(.*)$]匹配后续的参数,而我们没有指定index.html,Nginx会自动给我重定向到index.html文件,也就会出现一个301永久重定向提示。
  1. curl http://192.168.110.1:8080/aaa
  2. curl-L http://192.168.110.1:8080/aaa
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-26.png


[Step6]: 客户端Kylin-2测试访问 http://192.168.110.1:8080/bbb/index.html。
  1. curl http://192.168.110.1:8080/bbb/index.html
  2. curl-I http://192.168.110.1:8080/bbb/index.html
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-27.png


[Step7]: 客户端Kylin-2测试访问 http://192.168.110.1:8080/ccc/index.html。因为【location /ccc】中的rewrite定义了last参数,所以在重写完url跳转到【location /bbb】时,不会再执行【location /bbb】中的rewrite参数。
  1. curl http://192.168.110.1:8080/ccc/index.html
  2. curl-I http://192.168.110.1:8080/ccc/index.html
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-28.png


七、 Mariadb数据库

1. 数据库的相关概念

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
    关系型数据库:Oracle、DB2、SQL Server、MySql、MariaDB等 非关系型数据库:Memcached、MongoDB、redis、HBase等
DBMS的作用
对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
    **数据定义功能:**提供数据定义语言(DDL),定义数据库中的数据对象(数据库的建立、删除和修改) **数据操纵功能:**提供数据操纵语言(DML),操纵数据实现对数据库的基本操作(数据的查询、插入、删除和修改)
2. Mariadb数据库介绍

Mariadb数据库是一个小型关系型数据库管理系统,是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。Mariadb的目的是完全兼容MySQL,包括API和命令行。Mariadb默认存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。
    Mariadb客户端:mariadb Mariadb服务端:mariadb-server 服务守护进程:mariadb 端口号:3306 主配置文件:/etc/my.cnf.d/mariadb-server.conf 日志文件:/var/log/mariadb 主目录:/var/lib/mysql
Mariadb初始化(安全脚本),执行脚本前需要先启用数据库。
  1. mysql_secure_installation
复制代码
    设置root密码 删除匿名用户 设置root是否允许远程登录 删除测试数据库test 保存修改
3. Mariadb的访问方式

在启动mariadb后,一共存在两种访问的方式
网络访问
  1. mysql -uroot -pKylin@2024 -h192.168.110.1
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-29.png


本地套接字文件访问,套接字文件在:/var/lib/mysql/mysql.sock
  1. mysql -uroot-pKylin2024
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-30.png


全网最详细基于Kylin的Nginx服务部署与配置(2/2)-31.png


4. mysqladmin数据库管理命令

[Step1]: 运行mariadb服务并加入到开机自启
  1. systemctl enable--now mariadb.service
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-32.png


[Step2]: 初始化安装的mariadb默认root管理员账号没有密码,需要手动指定
  1. mysqladmin password "Kylin@2024"
复制代码
[Step3]: 查看当前服务器状态
  1. mysqladmin -u root -pKylin@2024 status
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-33.png


[Step4]: 检查mariadb-server是否可用
  1. mysqladmin -u root -pKylin@2024 ping
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-34.png


[Step5]: 创建新数据库
  1. mysqladmin -u root -pKylin@2024 create mysql_demo
复制代码
5. Mariadb数据库基本操作命令

5.1 用户登录

交互式登录
  1. mysql -u root
  2. > Kylin@2024
复制代码
非交互式登录
  1. mysql -u root -pKylin@2024                # 密码必须跟在-p选项后,不允许出现空格
复制代码
使用本地套接字文件方式登录
  1. mysql -u root -pKylin@2024 -S /var/lib/mysql/mysql.sock
复制代码
mysql的常用选项
选项说明
-e执行MySQL命令
-h指定连接服务器的域名或IP地址
-p指定登录数据库用户密码
-u指定登录数据库的用户
-S指定本地套接字文件
5.2 用户操作命令

创建用户
  1. createuserUSER@HOST identified by'PASSWORD';
复制代码
    create user:创建用户 USER:创建的用户名 HOST:指定该用户允许登录的主机 identified by ‘PASSWORD’:设置用户的登录密码
账号授权
  1. grant PRIVILEGE onDATABASE.TABLETOUSER@HOST;# 授权用户revoke PRIVILEGE onDATABASE.TABLETOUSER@HOST;# 移除授权
复制代码
    grant:授权 revoke:移除授权 PRIVILEGE:指定权限 on DATABASE.TABEL:指定权限对应的数据库、数据库表 to USER@HOST:操作的用户
修改账户密码
  1. alteruserUSER@HOST identified by'PASSWORD';set password forUSER@HOST='PASSWORD'
复制代码
5.3 数据库约束条件

数据库约束条件
    主关键字约束Primary Key Constraint 外关键字约束Foreign Key Constraint 唯一性约束Unique Constraint 检查约束Check Constraint 缺省约束Default Constraint
查看数据库
  1. showdatabases;
复制代码
创建数据库
  1. createdatabase db01;
复制代码
选择数据库
  1. use db01;
复制代码
更改数据库结构,更改student表中的name字段结构为varchar(20)
  1. altertable student modify name varchar(20);
复制代码
在数据库的表中添加新字段,在student表中添加新字段phone_number
  1. altertable student add phone_number varchar(20);
复制代码
删除数据库中表的指定字段,删除student表中的class字段
  1. altertable student drop class;
复制代码
更改数据库中表的字段名,将student表中的class字段名修改为classid
  1. altertable student change class varchar(20) classid varchar(20);
复制代码
5.4 数据库表操作

创建表
  1. createtable tb_name(int xxx,char(10) yyy
  2. );
复制代码
插入记录:向指定字段插入值
  1. insertinto student(name,classid)values("Mike","22network");
复制代码
插入记录:向所有字段插入值
  1. insertinto student values("Mike","22network",19)
复制代码
删除数据行,将student表中的姓名为Mike的数据行删除
  1. deletefrom student where name="mike";
复制代码
5.5 数据库的备份与还原

使用cp、tar等命令直接备份数据库所在目录
  1. cp /var/lib/mysql   /backup
  2. tar-cvf /sql.tar /var/lib/mysql
复制代码
使用mysqldump命令备份,备份文件默认不会包含 数据库创建命令
  1. # 备份student数据库,备份文件为back_student,--opt选项对备份过程进行优化(默认选项)
  2. mysqldump -u root -p--opt student > back_student
  3. # 备份student数据库中的course表,备份文件为 back_course
  4. mysqldump -u root -p student course > back_course
  5. # 备份所有的数据库,备份文件为 back_all
  6. mysqldump -u root -p --all-databases > back_all
复制代码
数据库还原备份,还原到的目的数据库需要存在
  1. # 恢复备份的student数据库
  2. mysql -u root -p student < back_studnet
  3. # 恢复备份的course表,还原到student数据库
  4. mysql -u root -p student course < back_course
  5. # 恢复备份所有数据库
  6. mysql -u root -p< back_all
复制代码
八、LNMP黄金架构

1. LAMP介绍

LAMP是一个缩写词,具体包括:
    L(Linux操作系统):作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性、兼容性(AMP组件也支持Windows、UNIX等平台)。 A(Apache网站服务器):作为LAMP架构的前端,是一款功能强大、稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页、图片等文件内容。 M(MySQL数据库服务器):作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息、客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询、更改这些信息。 P(PHP/Perl/Python网页编程语言):作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境。其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发。
在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序,PHP环境的安装一般放到最后。
2. LNMP介绍

LNMP也是一个缩写词,具体包括:
    L(Linux操作系统):作为LNMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性、兼容性(NMP组件也支持Windows、UNIX等平台)。 N(Nginx网站服务器):作为LNMP架构的前端,是一款功能强大、稳定性好的Web服务器程序,提供前端的静态页面服务,同时具有代理、转发的作用,可以支持转发动态请求的模块,但自身没有处理动态资源的功能。 M(MySQL数据库服务器):与LAMP架构中的MySQL作用相同,用于存储和查询各种数据。 P(PHP/Perl/Python网页编程语言):与LAMP架构中的PHP作用相同,负责解释动态网页文件,沟通Web服务器和数据库系统,并提供Web应用程序的开发和运行环境。
相较于LAMP,LNMP使用Nginx替代了Apache。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,具有更高的并发处理能力和资源利用率。
3. LNMP工作流程图

全网最详细基于Kylin的Nginx服务部署与配置(2/2)-35.png


4. Nginx与PHP的协同工作原理

全网最详细基于Kylin的Nginx服务部署与配置(2/2)-36.png


5. fastcgi协议介绍

FastCGI是一个可伸缩、高速的在HTTP服务器和动态脚本之间通信的接口(Linux环境下的FastCGI可以是文件socket也可以是IP形式的socker)。
    FastCGI是在CGI(Common Gateway Interface)的基础上发展起来的。CGI是Web服务器和外部应用程序之间的接口标准,它定义了在Web服务器和应用程序之间传递数据的规范。然而,传统的CGI模式在处理大量并发请求时存在性能问题,因为每次请求都会创建一个新的进程来处理。 为了解决CGI的性能问题,FastCGI应运而生。它采用了进程复用的方式,通过保持一组预先创建好的进程来避免重复的进程创建和销毁操作,从而提高了性能
PHP一共有三个核心配置文件
    **php.ini:**核心配置文件 **php-fpm.conf:**进程服务配置文件 **www.conf:**扩展配置文件
6. 单机LNMP部署

单机LNMP部署的顺序
    安装Nginx【可选源码安装、官方YUM仓库安装】 安装Mariadb/Mysql数据库 安装PHP
节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
Kylin-2192.168.110.2/24测试服务器
[Step1]: 因为源码编译安装时,不会创建nginx用户,而是直接使用root用户和组,创建运行用户和组
  1. useradd-M-s /sbin/nologin nginx
复制代码
    **-M:**不创建用户主目录 **-s /sbin/nologin:**禁止用户登录到shell环境
[Step2]: 上传Nginx源码包,解压源码包并进入该目录,生成Makefile文件
  1. tar-zxf nginx-1.18.0.tar.gz
  2. cd nginx-1.18.0/
  3. ./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-http_stub_status_module
复制代码
    **–prefix:**指定软件的安装目录 **–user:**设置非特权用户 **–group:**设置非特权组 **–with-http_stub_status_module:**启用ngx_http_stub_status_module
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-37.png


[Step3]: 编译安装
  1. make&&makeinstallrm-rf nginx-1.18.0
  2. echo"export PATH=$PATH:/opt/nginx/sbin">> /etc/profile
  3. source /etc/profile
复制代码
[Step4]: 启动nginx,关闭防火墙
  1. nginx
  2. systemctl stop firewalld.service
  3. systemctl disable firewalld.service
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-38.png


[Step5]: 安装PHP所需要的相关依赖,都是一些与图片格式、字体样式、文件格式、资源定位和安全套接字有关的依赖,默认桌面环境都是已经安装好的,除了libjpeg-devel。
  1. yum install-y libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel opnessl openssl-devel
复制代码
[Step6]: 利用本地源安装Mariadb,启动mariadb并加入到开机自启
  1. yum install-y mariadb-server mariadb
  2. systemctl enable--now mariadb.service
复制代码
[Step7]: 上传PHP源码包,解压源码包并进入该目录,生成Makefile文件
  1. tar-zxf php-7.3.31.tar.gz
  2. cd php-7.3.31/
  3. ./configure --prefix=/opt/php --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli --with-zlib --with-curl --with-gd --with-openssl --enable-fpm --enable-mbstring --enable-ftp --enable-pdo --with-freetype-dir
复制代码
    **–prefix:**选择软件安装路径 **–with-mysql-sock:**选定MySQL数据库的socket文件位置,PHP将使用该文件与MySQL服务器通信 **–with-mysqli:**启用mysqli扩展,mysqli扩展提供了改进的功能,如预处理语句和更好的错误报告,用于与MySQL数据库进行交互 **–with-zlib:**启用了zlib压缩支持,zlib是一个广泛使用的数据压缩库 **–with-curl:**启用了cURL支持,cURL是一个用于传输数据的库,支持多种协议,如HTTP、FTP等 **–with-gd:**启用了GD库支持,GD库用于处理图像,比如生成缩略图、添加水印等 **–with-openssl:**启用了OpenSSL支持,OpenSSL是一个强大的安全库,用于加密和解密数据,以及生成和管理证书。 **–enable-fpm:**启用PHP-FPM,PHP-FPM是一个实现了FastCGI协议的PHP FastCGI管理器,用于提高PHP应用的性能 **–enable-mbstring:**启用了多字节字符串(mbstring)支持,mbstring函数库用于处理多字节字符编码,比如UTF-8 **–enable-ftp:**启用了FTP支持,允许PHP脚本通过FTP协议进行文件传输 **–enable-pdo:**启用了PDO(PHP Data Objects)扩展,PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,代码都可以通过一致的函数和方法来访问数据库 **–with-freetype-dir:**指定freetype的安装目录(yum安装的freetype,PHP在编译过程中可以自行查找到路径),FreeType 是一个广泛使用的开源库,用于处理和渲染字体
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-39.png


[Step8]: 编译安装PHP,大约需要等待9分钟,PHP尽量不删除源码包,方便后续缺少扩展时可以动态添加扩展
  1. make&&makeinstall
复制代码
[Step9]: 将源码目录下的php.ini-development文件拷贝到PHP安装目录下
  1. cp php.ini-development /opt/php/lib/php.ini
  2. vim /opt/php/lib/php.ini
  3. # 添加下列内容,指定MySQLi扩展用于连接MySQL服务器时默认使用的套接字(socket)文件路径
  4. mysqli.default_socket = /var/lib/mysql/mysql.soc
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-40.png


[Step9]: 修改php-fpm配置文件,修改php-fpm进程的运行用户,默认情况下运行用户为nobody
  1. cd /opt/php/etc/php-fpm.d
  2. cp www.conf.default www.conf
  3. vim www.conf
  4. # 修改user和group字段的值user=nginx
  5. group=nginx
复制代码
[Step10]: 将php进程服务配置文件重命名,删掉后缀default
  1. cd /opt/php/etc/
  2. cp php-fpm.conf.default php-fpm.conf
复制代码
[Step10]: 启动php
  1. /opt/php/sbin/php-fpm
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-41.png


[Step11]: 将php命令分别软链接到/usr/local/bin和sbin目录下
  1. ln-s  /opt/php/bin/* /usr/local/bin/
  2. ln-s /opt/php/sbin/* /usr/local/sbin
复制代码
[Step12]: 编辑nginx配置文件,让nginx支持php模块。
  1. vim /opt/nginx/conf/nginx.conf
  2. # 将下列参数取消注释
  3. location ~ \.php$ {
  4.             root           /www/php/;# PHP源码目录
  5.             fastcgi_pass   127.0.0.1:9000;
  6.             fastcgi_index  index.php;# 首页php的代码文件
  7.             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  8.             include        fastcgi_params;}
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-42.png


[Step13]: 检查nginx配置文件,重新加载nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step14]: 创建php测试网页
  1. vim /opt/nginx/html/index.php
  2. # 写入下列内容<?php
  3. phpinfo();?>
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-43.png


[Step15]: 查看PHP已经加载的扩展
  1. php -m
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-44.png


7. wecenter部署

节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
test192.168.110.3/24测试服务器
7.1 wecenter网站介绍

WeCenter诞生于中国,是一款基于PHP和MySQL构建的开源程序。它提供了类似知乎的功能,并整合了Digg和Wiki等多种特性,使得构建专业的知识库变得更加便捷。WeCenter不仅是一个简单的问答网站,更是一个集成了多种社交功能的综合性平台。wecenter是前后端不分离的网站,也就是静态数据和动态数据都存放在同一个目录下。
7.2 wecenter网站部署

[Step1]: 上传源码包,解压缩后进入目录
  1. mkdir /www/wecenter
  2. unzip WeCenter_V3.6.2.zip
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-45.png


[Step2]: 新建nginx虚拟主机配置文件
  1. vim /opt/nginx/conf/wecenter.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name www.wecenter.com;
  6.   root /www/wecenter/;
  7.   index index.php index.html;
  8.   location ~ \.php$ {
  9.             root           /www/wecenter/;
  10.             fastcgi_pass   127.0.0.1:9000;
  11.             fastcgi_index  index.php;
  12.             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  13.             include        fastcgi_params;}}
复制代码
[Step3]: 修改nginx配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http字段中include
  3. include wecenter.conf;
复制代码
[Step4]: 检查配置文件语法,重新加载Nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step5]: 给网页文件目录添加授权,将软件目录的属组和属主更改为nginx用户
  1. chown-R nginx.nginx /www/wecenter
复制代码
[Step6]: 新建数据库和用户,用于提供wecenter使用
  1. mysql -u root -pKylin2024> create database wecenter;# 创建数据库wecenter> create user wecenter@'127.0.0.1' identified by 'wecenter@123';# 新建用户wecneter,限制只能本地登陆> grant all privileges on wecenter.* to wecenter@'127.0.0.1';# 赋予wecenter用户对wecenter数据库的全部权限> flush privileges;# 刷新权限,只要设计到权限修改,都需要修改该值
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-46.png


[Step7]: 登录网站,查看服务器环境检查
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-47.png


全网最详细基于Kylin的Nginx服务部署与配置(2/2)-48.png


[Step8]: 配置系统,设置连接数据库相关的参数
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-49.png


[Step9]: 添加管理员
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-50.png


[Step10]: 设置完参数后,会提示删除install/index.php文件,防止入侵者通过该页面重置网页
  1. rm-rf /www/wecenter/install/index.php
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-51.png


8. WordPress部署

节点设计
主机网络信息说明
Kylin-1192.168.110.1/24Web服务器
test192.168.110.3/24测试服务器
8.1 WordPress网站介绍

WordPress诞生于2003年,最初是一个简单的博客平台,但随着时间的推移,它逐渐演变成一个多功能的CMS。作为一个开源项目,任何人都可以查看、修改和改进其源代码。这种开放性促进了其快速发展,并吸引了一个庞大的开发者社区。WordPress提供了直观和用户友好的后台界面,用户无需具备专业的编程知识,即可轻松添加内容、更改布局和管理网站功能。WordPress提供了数千种免费和付费的主题和模板,涵盖了各种行业和设计风格。用户可以根据自己的品牌形象和网站需求选择合适的主题,从而打造出独具特色的网站外观。
8.2 WordPress网站部署

[Step1]: 上传源码包,解压缩后进入目录
  1. mkdir /www &&cd /www
  2. unzip wordpress-5.9.3-zh_CN.zip
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-52.png


[Step2]: 新建nginx虚拟主机配置文件
  1. vim /opt/nginx/conf/wordpress.conf
  2. # 文件内容如下
  3. server {
  4.   listen 80;
  5.   server_name www.wordpress.com;
  6.   root /www/wordpress/;
  7.   index index.php index.html;
  8.   location ~ \.php$ {
  9.             root           /www/wordpress/;
  10.             fastcgi_pass   127.0.0.1:9000;
  11.             fastcgi_index  index.php;
  12.             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  13.             include        fastcgi_params;}}
复制代码
[Step3]: 修改nginx配置文件
  1. vim /opt/nginx/conf/nginx.conf
  2. # 在http字段中include
  3. include       wordpress.conf;
复制代码
[Step4]: 检查配置文件语法,重新加载Nginx
  1. nginx -t
  2. nginx -s reload
复制代码
[Step5]: 给网页文件目录添加授权,将软件目录的属组和属主更改为nginx用户
  1. chown-R nginx:nginx /www/wordpress
复制代码
[Step6]: 新建数据库和管理员用户,用于提供wecenter使用
  1. mysql -uroot -pKylin2024
  2. >createdatabase WORDPRESS;>createuser wordpress@'127.0.0.1' identified by'Kylin2024';>grantallprivilegeson WORDPRESS.*to wordpress@'127.0.0.1';> flush privileges;
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-53.png


[Step7]: 登录网站,完成初始化配置
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-54.png


全网最详细基于Kylin的Nginx服务部署与配置(2/2)-55.png


[Step8]: 运行安装程序,完成信息配置,用户密码:u#G#uvvqI0JmtSZRof
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-56.png


全网最详细基于Kylin的Nginx服务部署与配置(2/2)-57.png


[Step9]: 验证登录
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-58.png


[Step10]: 发布一篇博客
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-59.png


全网最详细基于Kylin的Nginx服务部署与配置(2/2)-60.png


全网最详细基于Kylin的Nginx服务部署与配置(2/2)-61.png

全网最详细基于Kylin的Nginx服务部署与配置(2/2)-62.png


[Step11]: 到数据库中查看该博客相关数据,博客数据是存储在wp_posts表中
  1. useWORDPRESS;
  2. select post_content from wp_posts;
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-63.png


[Step12]: 根据上述的查询结果,可以看到图片的存储路径在http://www.wordpress.com/wp-content/uploads/2024/10/pic.webp
  1. cd /www/wordpress/wp-content/uploads/2024/10/
复制代码
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-64.png


九、网站集群部署

1. 部署集群的必要性

根据以上WordPress案例为例,使用httpd工具包所提供的ab命令,对网站进行压测,可以看到PHP的占比迅速提升
  1. yum install-y httpd-tools
  2. ab -n1000-c100 http://www.wordpress.com/index.php        # 请求1000次,每次发出100次访问
复制代码
    **-n:**要执行请求的数量 **-c:**一次要发出的多个请求的数目
全网最详细基于Kylin的Nginx服务部署与配置(2/2)-65.gif
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表