基于Flexus X实例搭建Nginx网站服务

88 阅读10分钟

一、华为云Flexus X实例介绍  

                      

1. Flexus X实例简介  

Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器,可智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。相较于Flexus应用服务器L实例,Flexus云服务器X实例的优势包含:提供丰富的公共镜像、可灵活自定义vCPU内存配比、智能感知业务动态升降配,负载范围更高等。

2. 应用场景  

·电商直播:基于Flexus X实例搭建电商交易平台,可以从容面对电商市场瞬息万变对的业务压力变化。

·企业建站:面向博客、论坛,和企业门户等业务场景,帮助企业传播价值信息,促进信息共享和交流,支撑用户建设多功能的传播和交互平台。

·个人开发测试:开发者在开发、测试过程中需要的环境资源,可以选择从云上提供。基于Flexus云服务器X实例搭建开发测试环境,更加便利,成本更优。

·游戏服务器:适用于搭建游戏后台服务器,强大算力轻松应对千人同时在线,同时平滑扩容可快速应对服务器玩家数量上涨诉求,超强的网络加速能力提升用户体验。    

3. 产品优势  

·提供丰富的公共镜像,可灵活自定义镜像版本。

·智能感知业务动态升降配,负载范围更高。

·支持灵活自定义vCPU、内存实例规格。

·支持按需计费更精细和灵活的定价模式,可基于实际负载画像智能推荐规格。

              

二、购买Flexus云服务器X实例  

            

1.购买Flexus云服务器X实例方法  

以下是根据我个人的需求选购基础配置,可以参考如下进行购买:

              

             
(1)计费模式:选择包年/包月模式。              
(2)区域和可用区:选择华北—北京四,可用区可以随机选择。              
(3)实例规格:选择自定义配置,建议选择4核心CPU和12GB内存。              
(4)镜像:选择公共镜像,推荐使用Huawei Cloud EulerOS 2.0 Standard 64 bit(10GiB)。可选一种服务加速(免费),可根据需要选择。              
(5)存储:系统盘选择通用型SSD,建议选择100GB容量。              
(6)网络:默认配置即可。              
(7)安全组:默认配置即可。              
(8)弹性公网IP:选择“现在购买”,带宽选择3Mbps。              
(9)云服务器名称:可以自定义命名,也可以选择默认名称。              
(10)登录凭证:设置自定义密码。              
(11)云备份:暂不购买;

各位如有其它需求可自行增减配置              
如图所示:                            

这边我已经成功连接!

2. Flexus云服务器X实例的基本管理  

①关机与重启  

·首先进入到控制台,然后找到想要操作的云服务器资源。                

点进来后我们可以看到我们所拥有的资源,并可以对其进行开关机\更改密码、配置等一系列操作                

②续费设置  

·我们可以在更多这里看到费用选项可以根据个人需求进行续费或关闭操作,以避免不必要的消费。

三、本次实践说明  

1. 本次环境介绍  

云服务器厂商云服务器类别操作系统版本Docker版本部署项目内网IP地址Docker Compose版本
华为云Flexus X实例Rocky Linux 9.027.1.1Nginx192.168.0.130v2.29.1

2. Nginx介绍  

              

①Nginx简介  

Nginx是一款高性能的Web服务器、反向代理服务器及电子邮件代理服务器,由Igor Sysoev开发,用于解决高并发连接问题,广泛应用于互联网领域。

②主要特点  

·高性能的异步非阻塞模型:采用事件驱动的异步非阻塞I/O模型,能高效处理大量并发连接,如在高流量网站中可轻松应对众多用户请求。

·出色的负载均衡能力:可将请求均匀分配到多个后端服务器,提高整体系统性能和可靠性,适用于大型分布式系统。

·灵活的反向代理功能:能隐藏后端服务器的真实IP,增强安全性,同时可根据规则转发请求,常用于优化网站架构。

·轻量级且资源占用少:相比其他服务器,占用系统资源较少,在资源有限的环境中也能稳定运行,适合小型项目或嵌入式设备。

·强大的稳定性和可靠性:具有良好的容错机制,在面对异常情况时能保持稳定运行,保障服务不间断,是企业级应用的可靠选择。

·热部署和快速重启:支持在线配置修改和快速重启,不影响正在运行的服务,方便进行服务器的维护和更新。

·丰富的模块扩展:拥有大量的第三方模块,可根据需求扩展功能,如实现URL重写、访问控制等,满足多样化的应用场景。

③主要使用场景  

1.网站托管与服务:作为Web服务器直接提供网站内容的访问服务,以其高性能和稳定性保障网站的快速响应和可靠运行。

2.负载均衡架构:在多台服务器组成的集群环境中,负责将用户请求均衡分配到各后端服务器,提高系统整体处理能力。

3.反向代理与缓存:位于客户端和后端服务器之间,实现请求转发、缓存静态资源,提升访问速度和减轻后端服务器压力。

4.API网关:为微服务架构中的API提供统一的入口和管理,包括认证、授权、流量限制等功能。

5.流媒体服务:可用于直播、视频点播等流媒体应用的分发和传输,优化媒体流的传输效率和质量。

6.安全防护:通过配置规则阻挡恶意请求和攻击,保护后端服务器的安全,如防止DDoS攻击等。

7.企业内部应用:在企业内部网络中,为各种内部应用系统提供可靠的Web访问服务和接口管理。

四、部署Nginx项目  

1. 拉取YesPlayMusic镜像  

·我们需要提前拉取  YesPlayMusic镜像,方便后续快速部署Docker应用。

[root@xiaoge888 ~]#  docker pull  nginx:latest              
latest: Pulling from library/nginx              
302e3ee49805: Pull complete              
cd986b3703ae: Pull complete              
34a52cbc3961: Pull complete              
d1875670ac8a: Pull complete              
af17adb1bdcc: Pull complete              
97182578e5ec: Pull complete              
67b9310357e1: Pull complete              
Digest: sha256:4bd4d71918d2585145328193e1ac62d37d4a3d2dd16e6b7bf1fa265358eece86              
Status: Downloaded newer image for nginx:latest              
docker.io/library/nginx:latest

2. 新建Nginx配置文件  

·创建以下Nginx挂载目录

mkdir -p /home/docker/nginx/{conf,conf.d,html,logs}

·在挂载目录/home/docker/nginx/conf目录下,新建nginx.conf 配置文件,内容如下:

user  nginx;              
worker_processes  auto;              

error_log  /var/log/nginx/error.log notice;              
pid        /var/run/nginx.pid;              


events {              
worker_connections  1024;              
}              


http {              
include       /etc/nginx/mime.types;              
default_type  application/octet-stream;              

log_format  main  'remoteaddrremote_addr - remote_user [timelocal]"time_local] "request" '              
'statusstatus body_bytes_sent "httpreferer"                              "http_referer" '                                     '"http_user_agent" "$http_x_forwarded_for"';              

access_log  /var/log/nginx/access.log  main;              

sendfile        on;              
#tcp_nopush     on;              

keepalive_timeout  65;              

#gzip  on;              

include /etc/nginx/conf.d/*.conf;              

}

在挂载目录/home/docker/nginx/conf.d目录下,新建default.conf 配置文件,内容如下:

server {              
listen       80;              

location / {              
root   /usr/share/nginx/html;              
index  index.html index.htm;              
}              

error_page   500 502 503 504  /50x.html;              
location = /50x.html {              
root   /usr/share/nginx/html;              
}              

# proxy the PHP scripts to Apache listening on 127.0.0.1:80              
#              
#location ~ .php {                   #    proxy_pass   http://127.0.0.1;                   #}                                 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000                   #                   #location ~ \.php {              
#    root           html;              
#    fastcgi_pass   127.0.0.1:9000;              
#    fastcgi_index  index.php;              
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;              
#    include        fastcgi_params;              
#}              

# deny access to .htaccess files, if Apache's document root              
# concurs with nginx's one              
#              
#location ~ /.ht {              
#    deny  all;              
#}              
}

3. 编辑测试网页内容  

在/home/docker/nginx/html目录下编辑测试网页内容,如下所示:

echo hello > html/index.html

4. 创建Nginx容器  

·Docker命令方式创建容器:

 docker run -d --name nginx  --restart always -p 8002:80  -v  /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v/home/docker/nginx/conf.d:/etc/nginx/conf.d  -v  /home/docker/nginx/html:/usr/share/nginx/html  -v  /home/docker/nginx/logs:/var/log/nginx  nginx              

·使用 docker compose方式创建容器,docker-compose.yaml文件如下:

version: '3.9'              
services:              
nginx:              
image: nginx              
volumes:              
- '/home/docker/nginx/logs:/var/log/nginx'              
- '/home/docker/nginx/html:/usr/share/nginx/html'              
- '/home/docker/nginx/conf.d:/etc/nginx/conf.d'              
- '/home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf'              
ports:              
- '8002:80'              
restart: always              
container_name: nginx              

·在存放docker-compose.yaml文件的目录下,执行 docker compose up -d 命令,创建Nginx容器。

[root@xiaoge888 nginx]# docker compose up -d              
WARN[0000] /home/docker/nginx/docker-compose.yaml: the attribute version is obsolete, it will be ignored, please remove it to avoid potential confusion              
[+] Running 1/1              
✔ Container nginx  Started                                                                                                                              0.2s

3. 查看容器状态  

当创建Nginx容器完成后,我们需要检查该容器是否正常运行。执行以下命令,可以很方便查询Nginx容器是否正常运行。

[root@xiaoge888 nginx]# docker compose ps              
WARN[0000] /home/docker/nginx/docker-compose.yaml: the attribute version is obsolete, it will be ignored, please remove it to avoid potential confusion              
NAME      IMAGE     COMMAND                  SERVICE   CREATED         STATUS          PORTS              
nginx     nginx     "/docker-entrypoint.…"   nginx     7 minutes ago   Up 14 seconds   0.0.0.0:8002->80/tcp, :::8002->80/tcp

五、安全组及防火墙设置工作  

1. 设置防火墙和selinux  

由于在测试环境,我们直接关闭防火墙和selinux。

sudo systemctl stop firewalld              
sudo systemctl disable firewalld

sudo setenforce 0              
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2. 设置安全组规则  

在华为云Flexus X实例的安全组设置页面,我们直接在入方向上放行8002端口。确认放行后,效果如下图所示。

              

              

六、访问Nginx服务  

在本地浏览器:http://服务器IP地址:8002,使用我们Flexus X实例弹性公网IP地址替换后,即可正常访问到网站测试内容。

七、添加静态网站  

7.1 添加静态网站内容  

在宿主机/home/docker/nginx/html目录下,上传测试的静态网站内容。

[root@xiaoge888 html]# pwd              
/home/docker/nginx/html              
[root@xiaoge888 html]# ll              
total 56              
-rw-r--r-- 1 root root   873 Sep 28 10:56 contactengine.php              
-rw-r--r-- 1 root root  1922 Sep 28 10:56 contactthanks.html              
-rw-r--r-- 1 root root   184 Sep 28 10:56 contactthanks.php              
drwxr-xr-x 2 root root  4096 Sep 28 10:56 css              
drwxr-xr-x 3 root root  4096 Sep 28 10:56 fonts              
drwxr-xr-x 2 root root  4096 Sep 28 10:56 images              
-rw-r--r-- 1 root root 22233 Sep 28 10:56 index.html              
drwxr-xr-x 2 root root  4096 Sep 28 10:56 js              
-rw-r--r-- 1 root root  1877 Sep 28 10:56 readme.txt

7.2 重启容器  

·重启Nginx容器

[root@xiaoge888 html]# docker restart nginx              
nginx

7.3 访问网站内容  

在本地浏览器:http://服务器IP地址:8002,重新刷新页面后,可看到网站内容。

              

八、感受与总结  

在基于华为云Flexus云服务器X实例搭建Nginx网站服务的实践过程中,我切实感受到了华为云的卓越之处。Flexus X实例的柔性算力表现出色,为搭建工作提供了强大而稳定的支撑,使得整个过程高效顺畅。其便捷的操作和出色的性能,让Nginx网站服务得以快速且可靠地部署。华为云以其专业的品质和优质的服务,为中小企业和开发者提供了极具价值的云计算解决方案,无疑是我们在数字化征程中的得力助手,让我们能够更加自信地在云端拓展业务,实现更多可能。