授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道
目录
一、AWS 产品类别选择
(1)应用服务器选择
(2)数据服务器选择
(3)存储云盘选择
二、前置准备
(1)域名准备、证书申请、网站备案、AWS 启动新实例、端口开放
(2)AWS 连接实例
(3)查看操作系统信息
三、EC2 实例安装 docker
(1)更新系统软件包
(2)安装 docker 所需的依赖项
(3)启动 docker 服务并设置开机自启动
(4)验证 docker 是否安装成功
(5)查看已安装的 docker 版本号
(6)查找 docker 可执行文件的实际路径
四、EC2 实例使用 docker 安装 jdk
(1)查找 Docker Hub 上的 Dragonwell JDK 镜像
(2)拉取 Dragonwell JDK 镜像
(3)运行 Dragonwell JDK 容器
(4)查看容器的状态
(5)启动容器并进入其交互式 shell 查看 jdk 版本
五、docker 安装 nginx、nacos、redis、sentinel
(1)安装:nginx
(2)安装:nacos
(3)安装:redis
(4)安装:sentinel
六、docker 启动 nginx、nacos、redis、sentinel
(1)启动:nginx
(2)启动:nacos
(3)启动:redis
(4)启动:sentinel
七、部署证书到 EC2 实例
(1)证书申请
(2)上传证书到服务器
八、EC2 实例部署前后端代码
(1)服务器创建存放前端代码的目录
(2)服务器创建存放后端代码的目录
九、设置 nginx 配置文件
(1)文件路径
(2)设置配置文件
① xxx.conf
② xxx443.conf
(3)EC2 实例重启 nginx 服务
十、浏览器访问网站
(1)访问:nacos
(2)访问:Sentinel Dashboard
(3)访问:医疗管理后台系统
一、AWS 产品类别选择
(1)应用服务器选择
用于部署网站应用前后端代码的服务器:开发/测试/预发布/正式环境 Linux 服务器
- 少部分用到的 Redis 缓存数据库,比如只适用于缓存 token、短信验收码接收次数这种,则无需单独设置 Redis 服务器,可以直接在应用服务器上!
『亚马逊云科技产品测评』活动征文|AWS 云服务器 EC2 实例类型及其适用场景详细说明https://gusanshang.blog.csdn.net/article/details/134263726
(2)数据服务器选择
用于部署数据库的服务器:MySQL、Redis ...
- Redis 如果是大数据的缓存需要,则需要独立服务器
- 而少部分用到的比如只适用于缓存 token、短信验收码接收次数这种,则无需单独设置 Redis 服务器,直接在上面的应用服务器部署即
『亚马逊云科技产品测评』活动征文|AWS 数据库产品类别及其适用场景详细说明https://gusanshang.blog.csdn.net/article/details/134554322
(3)存储云盘选择
用于扩展应用存储空间,挂载在应用服务器上的存储云盘,数据盘。
『亚马逊云科技产品测评』活动征文|AWS 存储产品类别及其适用场景详细说明https://gusanshang.blog.csdn.net/article/details/134558112
二、前置准备
(1)域名准备、证书申请、网站备案、AWS 启动新实例、端口开放
- 注册域名:由于 AWS 不提供网站备案操作,为了方便,本人使用阿里云注册域名。
- 申请证书:在阿里云注册域名之后,进行申请证书。
- 解析域名:在阿里云域名证书申请之后,使用阿里云解析域名
- 个人网站 ICP 备案:要在中国境内访问域名网站,必须完成网站备案,无需使用域名的,则可以不准备域名,直接使用应用服务器的公网 IP 加端口号访问即可。
- AWS 启动新实例:选择并购买合适的应用服务器、数据服务器、挂载存储云盘后,进入控制台启动新实例。
- AWS 端口开放:端口开放可以在启动新实例步骤中完成,后续也可以修改 “安全组” 添加新端口完成开放端口。
『亚马逊云科技产品测评』活动征文|AWS 域名注册、启动与连接 EC2 新实例、端口开放详细教程https://gusanshang.blog.csdn.net/article/details/134580241
【Linux】Centos 8 服务器部署:阿里云域名注册、域名解析、个人网站 ICP 备案详细教程https://gusanshang.blog.csdn.net/article/details/134033592
【Linux】Centos 8 服务器部署:阿里云域名申请免费 SSL 证书详细教程https://gusanshang.blog.csdn.net/article/details/134037311
- AWS 域名:如果无需中国境内访问网站,可以直接使用 AWS 完成域名注册、申请证书、域名解析,之后直接使用 AWS 域名,无需进行网站备案
- 阿里云域名:网站备案是中国境内要求的,所以如果中国境内需要访问域名网站,就需要完成备案,看个人需要选择,如果是国内访问,建议使用阿里云域名,阿里云域名能完成域名注册、申请证书、网站备案、域名解析全部操作,统一快捷方便,操作简单
(2)AWS 连接实例
AWS 启动新实例后,即可连接实例
(3)查看操作系统信息
- 操作系统发行版详细信息:
cat /etc/os-release
- 当前操作系统发行版信息:
cat /etc/system-release
CPU & 内存 | 1 核 (vCPU) 2 GiB |
---|---|
操作系统 | Amazon Linux release 2023 (Amazon Linux) |
详细信息 |
|
Linux 命令的系统版本为:Amazon Linux release 2023 (Amazon Linux)
这个和 Centos 用到的命令不同,全部命令会有专属的一套命令,所以启动新实例时,所选的 AMI 版本十分重要,每个版本都有其对应的 Linux 命令!
三、EC2 实例安装 docker
(1)更新系统软件包
sudo yum update -y
(2)安装 docker 所需的依赖项
sudo amazon-linux-extras install docker
(3)启动 docker 服务并设置开机自启动
sudo systemctl enable docker.service
sudo systemctl start docker.service
(4)验证 docker 是否安装成功
sudo docker run hello-world
(5)查看已安装的 docker 版本号
sudo docker version
(6)查找 docker 可执行文件的实际路径
which docker
- Docker 的默认安装路径可以根据不同的操作系统而有所不同,通常情况下,在大多数 Linux 系统上,Docker 的可执行文件和相关文件位于
/usr/bin/docker
路径下。- Docker 的数据目录(例如镜像、容器等数据)通常位于默认的
/var/lib/docker
路径下,如果想了解 Docker 数据的存储路径,可以检查 Docker 服务的配置文件,通常在/etc/docker/daemon.json
文件中。- 如果在安装 Docker 时选择了非默认路径或使用了其他定制方法,则 Docker 的安装路径可能会有所不同。
四、EC2 实例使用 docker 安装 jdk
根据需求安装指定版本,示例需要指定安装的 jdk 版本为:Dragonwell 11
(1)查找 Docker Hub 上的 Dragonwell JDK 镜像
sudo docker pull adoptopenjdk/dragonwell:8u292_10-jdk
需要拉取的镜像为:falconia/dragonwell11
(2)拉取 Dragonwell JDK 镜像
sudo docker pull falconia/dragonwell11
注意此处创建的容器名称为:falconia/dragonwell11
(3)运行 Dragonwell JDK 容器
容器名称为:falconia/dragonwell11
容器名称重命名为:dragonwell-jdk
【命令的详细解释】
- --name 参数指定容器的名称重命名为 dragonwell-jdk
- -v 参数将主机文件系统上的目录挂载到容器中,以便通过容器访问本地文件系统中的文件,例如,将 /home/user/myapp 目录挂载到容器的 /myapp 目录中:
- -d 参数指定容器在后台运行
这样,就可以使用 “/dragonwell-jdk” 作为容器名称运行 Dragonwell JDK 11 容器,并将本地目录 “/home/user/myapp” 挂载到容器的 “/myapp” 目录中。
sudo docker run --name dragonwell-jdk -v /home/user/myapp:/myapp -d falconia/dragonwell11:latest
(4)查看容器的状态
sudo docker ps -a
列出所有容器的状态:如果 “dragonwell-jdk” 容器的状态不是 “Up”,则表示容器没有运行。
(5)启动容器并进入其交互式 shell 查看 jdk 版本
sudo docker start -i dragonwell-jdk
可以查看到 jdk 版本号,并进入 shell 则代表安装 jdk 成功,版本号为:11.0.7.2
五、docker 安装 nginx、nacos、redis、sentinel
(1)安装:nginx
sudo docker search nginx
需要拉取的镜像为:nginx
sudo docker pull nginx
注意此处创建的容器名称为:nginx
(2)安装:nacos
sudo docker pull nacos/nacos-server
注意此处创建的容器名称为:nacos/nacos-server
(3)安装:redis
sudo docker pull redis
注意此处创建的容器名称为:redis
(4)安装:sentinel
sudo docker pull bladex/sentinel-dashboard
注意此处创建的容器名称为:bladex/sentinel-dashboard
六、docker 启动 nginx、nacos、redis、sentinel
注意:在这之前必须先开放自定义端口,前置准备步骤中的 “端口开放” 的端口会在此步骤中应用!!!
(1)启动:nginx
sudo docker run -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx/conf \
-d nginx
容器名称为:nginx
- 运行该命令将启动一个名为 “nginx” 的容器
- 并将容器的 HTTP 端口映射到主机的端口 80,HTTPS 端口映射到主机的端口 443
- 在运行命令之后,能够通过主机的相应端口访问 Nginx 服务;同时,可以在宿主机上编辑网页内容、查看日志和编辑配置文件
【命令的详细解释】
- -p 80:80 -p 443:443:将容器的端口 80 和 443 映射到主机的相应端口,可以根据需要进行端口映射的修改。
- --name nginx:指定容器名称为 “nginx”,可根据自己的需要自定义修改名称。
- -v /mydata/nginx/html:/usr/share/nginx/html:将宿主机上 “/mydata/nginx/html” 目录映射到容器中 Nginx 的 HTML 根目录 “/usr/share/nginx/html”,这样就可以在宿主机上编辑网页内容。
- -v /mydata/nginx/logs:/var/log/nginx:将宿主机上 “/mydata/nginx/logs” 目录映射到容器中 Nginx 的日志目录 “/var/log/nginx”,这样就可以在宿主机上查看 Nginx 的日志。
- -v /mydata/nginx/conf:/etc/nginx:将宿主机上 “/mydata/nginx/conf” 目录映射到容器中 Nginx 的配置目录 “/etc/nginx”,这样就可以在宿主机上编辑 Nginx 的配置文件。
- -d nginx:使用 nginx 镜像在后台模式下运行容器。
(2)启动:nacos
sudo docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true --restart=always -e MODE=standalone -e PREFER_HOST_MODE=hostname nacos/nacos-server
容器名称为:nacos/nacos-server
- 运行该命令将启动 nacos/nacos-server 容器,并将容器命名为 “nacos”
- 并将容器的端口 8848、9848 和 9849 映射到主机的相应端口
- 在运行命令之后,能够在主机的相应端口上访问 Nacos 服务
【命令的详细解释】
- --name nacos:指定容器名称为 “nacos”,可根据自己的需要自定义修改名称
- -d:在后台模式下运行容器
- -p 8848:8848 -p 9848:9848 -p 9849:9849:将容器的端口 8848、9848 和 9849 映射到主机的相应端口,可以根据需要进行端口映射的修改。
- --privileged=true:给容器赋予特权模式,以便容器内的进程可以访问主机的部分资源。
- --restart=always:设置容器总是在退出后自动重启。
- -e MODE=standalone:设置 Nacos 启动模式为单机模式。
- -e PREFER_HOST_MODE=hostname:设置容器主机名作为 Nacos 的拓扑节点名称。
- nacos/nacos-server:基于 nacos/nacos-server 镜像的启动容器。
(3)启动:redis
sudo docker run -d -p 6379:6379 --name redis -v /mydata/redis/data:/data redis redis-server --appendonly yes --requirepass GuSanShangMiMa
sudo docker run -d -p 6379:6379 --name redis -v /mydata/redis/data:/data redis redis-server --appendonly yes --requirepass 8888
容器名称为:redis
- 运行该命令将启动一个名为 “redis” 的容器
- 并将容器的端口 6379 映射到主机的端口 6379
- 注意:GuSanShangMiMa 需要替换成自己的 redis 服务器密码
- 执行命令后,能够通过主机的端口 6379 访问 Redis 服务,并且 Redis 数据会持久化到主机上指定的目录
【命令的详细解释】
- -d:在后台模式下运行容器。
- -p 6379:6379:将容器的 6379 端口映射到主机的 6379 端口。
- --name redis:指定容器名称为 "redis",可以根据自己的需求修改名称。
- -v /mydata/redis/data:/data:将主机上的 "/mydata/redis/data" 目录映射到容器中的 "/data" 目录,这样可以在主机上持久化 Redis 的数据。
- redis:使用 redis 镜像来运行容器。
- redis-server --appendonly yes --requirepass GuSanShangMiMa:在容器中运行 Redis 服务器,并开启持久化功能(AOF 方式);此外,还设置了 Redis 的密码为 "GuSanShangMiMa",可以根据需要修改密码。
(4)启动:sentinel
sudo docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard
容器名称为:bladex/sentinel-dashboard
- 运行该命令将启动一个名为 “sentinel” 的容器
- 并将容器的端口 8858 映射到主机的端口 8858
- 执行命令后,能够通过主机的端口 8858 访问 Sentinel Dashboard,并监控 Sentinel 集群
【命令的详细解释】
- --name sentinel:指定容器名称为 “sentinel”,可以根据自己的需要修改名称。
- -d:在后台模式下运行容器,使其在后台持续运行。
- -p 8858:8858:将容器的端口 8858 映射到主机的端口 8858,可以根据需要进行端口映射的修改。
- bladex/sentinel-dashboard:使用 bladex/sentinel-dashboard 镜像的最新版本来运行容器,如果想使用特定的版本,可以修改为相应的镜像标签。
七、部署证书到 EC2 实例
(1)证书申请
- 由于 AWS 不提供网站备案操作,为了方便,本人使用阿里云注册域名,因此域名申请证书也在阿里云域名控制台完成。
- 在阿里云域名平台下载证书文件,上传 EC2 服务器即可生效。
【Linux】Centos 8 服务器部署:阿里云域名申请免费 SSL 证书详细教程https://gusanshang.blog.csdn.net/article/details/134037311
(2)上传证书到服务器
- 为了方便操作,这里使用远程连接工具 FinalShell 进行操作:【FinalShell】win 10 / win 11:FinalShell 远程连接 Linux 服务器https://gusanshang.blog.csdn.net/article/details/121360151
- 将证书上传到 linux 服务器的 Nginx 路径下:/mydata/nginx/conf/cert
八、EC2 实例部署前后端代码
为了方便操作,这里使用远程连接工具 FinalShell 进行操作:
【FinalShell】win 10 / win 11:FinalShell 远程连接 Linux 服务器https://gusanshang.blog.csdn.net/article/details/121360151
(1)服务器创建存放前端代码的目录
(2)服务器创建存放后端代码的目录
九、设置 nginx 配置文件
(1)文件路径
nginx 配置文件路径:/mydata/nginx/conf
(2)设置配置文件
修改 2 个证书内容,并将上传的域名证书的路径配置上:
- xxx.conf
- xxx443.conf
① xxx.conf
② xxx443.conf
(3)EC2 实例重启 nginx 服务
docker restart nginx
十、浏览器访问网站
配置完成后,成功访问网站则代表前后端代码分离的网站已成功完成设置。
(1)访问:nacos
启用完成后,可以用 ESC 应用服务器 ip 加上 nacos 端口看是否支持访问:
http://服务器 ip:8848/nacos/#/login
【默认账号】
用户:nacos
密码:nacos
(2)访问:Sentinel Dashboard
启用完成后,可以用 ESC 应用服务器 ip 加上 sentinel 端口看是否支持访问:
http://服务器 ip:8858/#/login
【默认账号】
用户:sentinel
密码:sentinel