本次部署采用Docker方式进行部署,服务器为鲲鹏服务器,CPU架构为ARM64,操作系统版本信息为
# cat /etc/kylin-release
Kylin Linux Advanced Server release V10 (Tercel)
下载镜像
1、从hub.docker.com找到相关的镜像,这里找到的版本是
https://hub.docker.com/r/arm64v8/nginx/tags?name=1.27
选择比较新的版本1.27.3,地址为:https://hub.docker.com/layers/arm64v8/nginx/1.27.3-otel/images/sha256-7de3eec83e4236d9a25ff83e154273a18dda4de34ef7c8d908de76e60e9bebb1?context=explore
2、在服务器上拉取镜像(代理服务器,可以直接访问docker的)
docker pull arm64v8/nginx:1.27.3-otel@sha256:7de3eec83e4236d9a25ff83e154273a18dda4de34ef7c8d908de76e60e9bebb1
3、保存镜像
# 给镜像打标签
docker tag e845dff95154 arm64v8/nginx:1.27.3
# 保存镜像到代理服务器
docker save -o nginx-1.27.3-arm64v8.tar arm64v8/nginx:1.27.3
4、从代理服务器下载镜像到本地,也可以从这里直接下载nginx-1.27.3-arm64v8.tar
部署
1、将nginx-1.27.3-arm64v8.tar上传到代理服务器
2、加载镜像docker load -i nginx-1.27.3-arm64v8.tar
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
arm64v8/nginx 1.27.3 e845dff95154 8 days ago 204MB
3、如果无需将配置、静态文件映射到本地,创建实例使用如下命令:
docker run --name nginx -d --restart=always -p 80:80 arm64v8/nginx:1.27.3
4、如果需要将配置文件nginx.conf和html静态文件目录映射到本地,首先配置nginx.conf
vi /data/docker/nginx/conf/nginx.conf
内容如下:
user root;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /nacos {
proxy_pass http://10.16.31.100:8848;
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
本地新建存放静态文件目录mkdir /data/docker/nginx/html,并在html下新建文件index.htm
# cat html/index.htm
<html>
<body>
hello
</body>
</html>
5、创建实例
docker run --name nginx -d --privileged=true --restart=always -p 80:80 \
-v /data/docker/nginx/html:/etc/nginx/html \
-v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
arm64v8/nginx:1.27.3
6、实例是否启动
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec6b852b5ccd arm64v8/nginx:1.27.3 "/docker-entrypoint.…" 23 minutes ago Up 23 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp nginx
客户端访问
firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload
到这里nginx已经配置好了。