前后端项目部署到云服务器总结

项目介绍

最近正在做一个关于线上刷题的社区,目前已经将题目模块,权限模块,oss模块以及微信登录验证模块基本完成,整个项目采用gateway网关来处理所有请求,网关根据设置好的路由规则来转发请求,并且鉴定权限的逻辑也放在网关层。今天打算先把这一部分的前后端都部署到云服务器上,中间也是遇到了一些问题,不过最终都得到了解决。

前端部署

因为今天是第一次部署这个项目,所以域名还没有准备好,所以目前打算通过ip地址加端口号的方式来访问,linux中我们需要准备好nginx,这个由docker进行管理。首先,我们需要将我们的前端项目在本地打包好,命令是npm run build,成功之后会在当前项目下生成一个dist文件夹,这里存放着前端项目的静态资源。

上图是我们在vscode中运行npm run build之后等待片刻的成功结果,dist文件默认在当前的前端项目下面。我们将这个dist文件通过xshell的文件传输功能传到云服务器上,我们放在/usr/share/nginx/html这个目录下,没有的话可以使用mkdir命令创建一下,位置无所谓,主要是后续的nginx配置文件中的地址要写对。紧接着,我们使用docker来管理nginx,这里使用nginx 1.12.2,所以输入命令docker pull nginx:1.12.2拉取镜像。然后考虑到万一docker被删了,数据也会随之消失的问题,我们做了数据挂载,我们在根目录下创建两个文件夹,分别是/data/nginx/conf,/data/nginx/logs,命令是mkdir -p /data/nginx/conf和mkdir -p /data/nginx/logs。然后我们来配置nginx配置文件,在/data/nginx/conf中创建nginx.conf文件,命令是touch nginx.conf,然后输入如下内容(根据我们的项目架构来配置的):

worker_processes  1;
 
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/json;
 
    sendfile        on;
    
    keepalive_timeout  65;
 
    server {
        #前端项目端口 指定为所需要的端口 这里前端项目使用的是5173端口
        listen       5173;
        # 指定前端项目所在的位置
        location / {
        #nginx挂载目录 dist为打包后的前端项目 如果名字不一致则需要修改dist为实际打包后的名字
            root /usr/share/nginx/html/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        location /auth/{
            proxy_pass http://服务器ip地址:端口号;//此为统一处理请求的网关地址
        }
        location /oss/{
            proxy_pass http://服务器ip地址:端口号;//此为统一处理请求的网关地址
        }
        location /subject/{
            proxy_pass http://服务器ip地址:端口号;//此为统一处理请求的网关地址
        }

    }
}

这里我来说一下我遇到的问题,因为我的项目所有的请求都会走gateway网关校验,所以之前借鉴的网上的都不管用,比如文件中的最后三个location,加上它们因为我们项目中目前有三个微服务要走网关,而其他的资料只写一个可能是没有是用网关,或者使用了网关并且配置了网关的前缀路径,而我们没有配置,所以需要额外配置三个微服务的路径并且将proxy_pass地址都指向网关地址。配置到这里,我们就可以来启动nginx并将数据挂载到云服务器本地了,命令如下:

docker run -d --name nginx -p 5173:5173 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx nginx:1.12.2

接下来我们从windows本地来访问一下我们的前端,结果如下:

 

可以看到前端已经能够正常显示,接下来是后端的部署。

后端部署

我们的后端项目采用idea开发,目前一共五个微服务,我们在idea面板的右侧maven选项中找打clean,先clean一下再install,这样可以得到对应的jar包。如下所示:

生成的jar包在target文件夹下。我们将所有的jar包都上传到对应的云服务器,并且后台启动,这边我们也做了数据挂载,用于监控微服务的运行情况,后续想法是和skyWalking做结合,目前是开发阶段,先做一个上线demo。后台启动并且输出日志的命令如下:

nohup java -jar jc-club-auth-starter.jar > jc-club-auth-starter.file 2>&1 &

具体参数的含义可以参考nohup的使用。这样我们的后端项目和前端项目就在云服务器部署完成了,我们就可以正常地从前端向后端发出请求并渲染出来了。这边我直接使用的是本地打包的方式,如果想要使用jenkins打包的话,可以查看我的上一篇博客,是关于jenkins构建部署的,这边没有使用这个方式,主要是微服务多起来了,然后云服务器的内存不够,启动jenkins比较占用内存,所以这边采用了本地打包上传的方式,如果对jenkins构建部署感兴趣的小伙伴也可以使用jenkins来构建部署。

总结

由于之前做的更多的是后端,如果有前端也是在本地上运行,这次正好需要上线部署到云服务器就部署了一下,关于nginx配置这块还是要非常细心的,不同的项目架构对应着不同的配置,如果是只有一个服务那location自然也不会出问题,但是现在的开发项目基本山是微服务形式的,而且所有的请求都会经过gateway,而有时候gateway可能不会去配置前缀路径,所以这时候需要将所有的微服务前缀路径写出然后映射到gateway的地址,这也算是一个小点吧,不注意的话请求不能正确到达对应的微服务。最后如果大家有什么疑问或者建议,欢迎评论区留言!!!

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
部署前后端分离项目到服务器的步骤如下: 1. 选择一个合适的服务器:可以使用云服务提供商如AWS、阿里云等,也可以使用自己的服务器。 2. 安装和配置服务器环境:根据项目的需求,安装所需的操作系统、数据库、Web服务器等组件,并进行相应的配置。 3. 后端部署: - 将后端代码上传至服务器,可以使用FTP、SCP等工具进行文件传输。 - 安装所需的依赖库和软件包,可以使用包管理工具如npm、pip等。 - 配置后端环境变量,例如数据库连接参数、API密钥等。 - 启动后端服务,可以使用命令行工具如pm2、supervisor等来管理进程和日志。 4. 前端部署: - 将前端代码打包成静态资源文件,例如使用Webpack或者Gulp等构建工具。 - 将打包生成的静态文件上传至服务器,可以使用FTP、SCP等工具进行文件传输。 - 配置Web服务器,将前端的访问路径映射到上传的静态文件所在的目录。 - 启动Web服务器,例如使用Nginx或Apache等。 5. 配置域名和SSL证书: - 绑定域名到服务器的IP地址。 - 安装和配置SSL证书,以启用HTTPS协议。 6. 测试和验证: - 访问域名或服务器IP地址,确认项目能够正常运行。 - 进行功能测试和性能测试,确保项目在服务器上表现良好。 以上是一般的部署步骤,具体的操作和配置可能会因项目的需求和服务器环境而有所不同。在部署过程中,注意保障服务器的安全性和稳定性,及时备份数据和代码,以防意外情况发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值