【实战攻略】手把手教你部署前后端分离项目到云服务器

本次博客的内容是将自己写的前后端分离项目部署到云服务器上

基于Nginx+Docker+redis+mysql

准备工作:

  • 自己的项目
  • 一台云服务器  阿里云 腾讯云等等  均有免费的试用期限
  • 连接工具  如xshell finallshell  xftp(文件传输)  软件都是一键式安装
  • 在云服务器上安装Docker

第一步: 准备一台云服务器   学生或者个人可以有三个月的免费试用

阿里云-计算,为了无法计算的价值

 因为我自己已经搞过了 无法提供具体的步骤  自己摸索一下 最后选择CentOS7.9的操作系统  付款是免费的

最后成功后会给你创建一个实例出来 稍等会就行 以下是一些服务器的相关信息

第二步:通过xshell 连接云服务器

复制 上图的公网IP  输入之前设置好的密码 成功连接上服务器
没有公网IP 的点一下 创建还是实例化  之后它会给你生成

顺便将XTFP 也连接上 方便后续上传文件 修改文件

第三步:  打开自己的项目 将自己的项目启动起来 我的后端已启动

 ps:这是我从git上拉的项目   此项目启动时需启动redis缓存数据库

前端已启动  找到前端项目下的package.json文件  点击dev 项目运行指令 或者在终端输入 npm run build  看你的项目是使用什么包管理的 如pnpm yarn

OK 此时我们的项目就在本地成功启动了 


接着我们开始打包前端  在这里点击打包运行 或者在终端输入指令

打包完成后 在此目录下面会多出一个dist目录

接着我们找到这个dist文件 将它拖到XFTP 云服务器中  还需要另外建两个文件
分别是  Dockerfile  nginx.conf  直接右击建就好了

下面是Dockerfile 文件中的内容 注释已经写好了

 # 从 nginx 镜像开始构建
FROM nginx

# 将项目根目录下的 dist 目录中的内容复制到容器的 /usr/share/nginx/html 目录中,作为静态文件目录
COPY ./dist /usr/share/nginx/html

# 将项目目录下的 nginx.conf 文件复制到容器的 /etc/nginx/nginx.conf 路径下,以配置 nginx
COPY nginx.conf /etc/nginx/nginx.conf

# 暴露 80 端口,使容器可以通过此端口对外提供服务
EXPOSE 80

# 启动 nginx,并以前台模式运行(-g "daemon off;" 表示在前台运行)
CMD ["nginx", "-g", "daemon off;"]

这是nginx.conf文件  注意下面的服务器名称要写自己服务器的公网IP

# 定义Nginx用户和工作进程数量
user  nginx;
worker_processes  1;

# 指定错误日志的位置和级别
error_log  /var/log/nginx/error.log warn;
# 存储Nginx进程ID的文件路径
pid        /var/run/nginx.pid;

# 事件模块配置
events {
    # 每个worker进程可以同时处理的最大连接数
    worker_connections  1024;
}

# HTTP模块配置
http {
    # 包含MIME类型定义文件
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    # 启用高效文件传输模式
    sendfile        on;

    # 设置keep-alive连接的超时时间
    keepalive_timeout  65;

    # 服务器配置
    server {
        # 监听端口
        listen       80;
        # 服务器名称
        server_name  这里需要写自己的;

        # 位置配置
        location / {
            # 网站文件的根目录
            root   /usr/share/nginx/html;
            # 默认索引文件
            index  index.html index.htm;
            # 尝试按顺序匹配请求的 URI,如果找不到则返回 index.html,适用于单页应用的路由
            try_files $uri $uri/ /index.html;
        }

        # 定义错误页面
        error_page   500 502 503 504  /50x.html;
        # 配置50x错误页面的路径
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

 接着我们需要借助Docker容器部署 

安装步骤教程我放在文章开头了 大家可以下载查看 安装步骤 基本莫有问题

然后我们需要拉取nginx的镜像 

docker pull nginx    默认拉取最新的版本

切换目录到有dist的文件夹中  我的是/root/Home 根目录下的root中的Home
 

执行构建镜像的代码

docker build -t 你想起的名字 .

查看是否构建成功 

docker images   #查看所有的镜像

创建容器

docker run -d -p 80:80 --name myvue vue_project
-d 以后台模式运行

-p 端口映射 将服务器的80端口映射到主机上的80端口

--name 起个名字

后面接镜像名

 成功构建

  此时我们打开浏览器  输入 http://你的服务器公网IP   就可以看到前端页面了  因为默认打开就是80端口 因此就不需要写
   前端的部署就此成功

后端部署 

同样地 先拉取Mysql 镜像  redis镜像 因为我们使用了这些技术

docker pull mysql

docker pull redis

分别实例化容器

接着打开我们的Idea  修改里面的配置

按两下Shift 可以进行搜索 将这两个文件中的localhost改为服务器的IP 还有设置Mysql的密码为你服务器创建容器的密码  Redis同理

这些工作做好了之后  点击右边的Maven 清除字节码之后打包成Jar包 找到对应的输出位置(即先双击clean 再点package)

找到对应的Jar包位置

 

一般在target目录下面

OK 我们将这个Jar包传输到 云服务器上  记住当前的目录 后续会用到

在此目录中新建一个文件 名为Dockerfile   里面的文件内容如下

# 使用OpenJDK官方镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 复制Jar包到容器   
COPY newsrec-admin.jar app.jar

# 暴露端口(根据实际配置调整)
EXPOSE 8080

# 启动命令(可配置JVM参数)
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=prod"]

 接着 打开服务器 命令行   切换到有Jar 的目录下  执行构建镜像操作

docker build -t rouyi .

实例化容器 

docker run -d --name rouyi -p 8080:8080 -e SPRING_DATASOURCE_URL="jdbc:mysql://你的IP:3306/ruoyi?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8" -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456 rouyi

#设置环境  mysql密码 时区等

查看容器日志  看到项目启动成功就可以啦

docker logs rouyi

就可以通过前端端口访问了 到此前后端的部署就成功了

本次的分享就到此结束 您的点赞和关注是我更新最大的动力  谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Serendipity_Carl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值