关于项目上线部署的一些记录

本文是一位新手后端开发者分享的项目上线部署经验,详细讲述了从打包jar或war,处理springboot内嵌tomcat,到服务器部署,包括前后端分离项目的部署策略。遇到问题时,通过查看错误日志解决问题。文章还提及了前端项目部署的几种常见方式,包括与后端项目一起放在tomcat,或使用nginx等。

最近我做的一个小项目要上线部署,团队很小,上线部署的重任自然就落到,我这个唯一一个后端开发身上(天知道,我还是个孩子啊!),经过这次上线,让我意识到,代码不是只在本地跑起来就可以了,与以往学习过程中的项目上线是不大相同的。正式生产项目上线,对于我这个新手来说无疑是惊心动魄的。

打包的类型jar还是war

言归正传,说回项目上线,如果服务器上只部署一个项目要简单很多,前后端一体项目也简单,如果没有其他要求的话,直接在本地确保项目没问题后直接打包,jar包或是war包都可,看你自己的需求,jar包的话,如果是springboot项目是使用内嵌的tomcat,一般来说,先看看你项目是打的什么包,确保是你想要的,看看pom.xml里有没有指定
在这里插入图片描述
创建项目是选的是jar包还是war包,jar包的话好说,如果你要打war包,则项目不能直接启动 ,这是springboot项目不再使用内嵌的tomcat了,切记要把打包类型改成war,排除springboot的内置tomcat

  • 1.排除依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除嵌入式tomcat插件 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
    1. 将scope设置为provided,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

你需要把war包放到你自己下的tamcat的webapps下,启动tomcat才能启动你的项目
在这里插入图片描述

打包命令

在idea里可以在用maven命令打包,切记打包之前先clean,养成好习惯,
package 或者install,你还可以在项目根目录,或者在idea底部直接打开命令行
在这里插入图片描述
直接mvn clean install 一步单位,这样使用的前提是你已经配置过,maven和idea的环境变量,这一步我就不在此细说了,不懂得可以去搜索一下,有时间我在补充。在这里插入图片描述

打包完成后可以在target目录下看到多出的jar包或war包
在这里插入图片描述
把jar包丢到服务器上,在项目根目录上进入命令行,java -jar (项目名).jar 即可,但如果世界上事情都这么简单就好了。
很多时候,在执行启动命令的时候会 报错,冷静,报错是最好的事情,有些东西远比报错要恐怖。报错之后把报错信息复制搜索引擎上找一下,一般都能解决, 我的项目就比较特殊,需要把项目lib包与jar包放在同一目录下,
java -Dloader.path=./lib -jar [你的项目名].jar 才可以启动。

前端项目部署

由于我的项目是强后端分离的,所以还需部署前端项目,没弄过,没办法,硬着头皮上。前后端分离部署方式,我了解的主要有这么几种

  • 前后端项目都放在tomca的webapps目录下,此时后端县项目要打成war包,排除内嵌tomcat,启动tomcat,看到有项目名出来,说明启动成功了。
    如果你的tomcat只有一个项目的话可以把前端项目直接放在root文件夹下,这样做直接输入127.0.0.1/8080就能访问,你在服务器部署127.0.0.1就换成你服务器IP即可

  • 或者你的后台代码不放在tomcat里,打成jar包,用命令单独启动就好
    但如果你要在tomcat上放多个项目,可以把前端代码放在webapps下,新建一个文件夹,以你项目名命名,例如叫tes,则你访问127.0.0.1/test
    这样做前端端口号要是8080的,不然路径就要加上端口号127.0.0.1:8081/test这样即可

  • 或者你使用nginx 部署项目也是可以的
    有时间我在整理把,网上的相关资料挺多的,先偷个懒。

如过你有相关方面的疑问,欢迎给我发邮件lin1462794003@gmail.com

### 项目部到生产环境的关键步骤 在将开发完成的项目部到生产环境时,需要考虑多个关键环节,包括环境准备、代码优化、服务配置、安全性设置以及性能调优等。以下是详细的部署流程和注意事项: #### 1. 确认生产环境配置 生产环境是用户实际使用的环境,与开发环境和测试环境不同,其配置需要更加稳定和安全。在部署之前,需要确保服务器具备以下基础条件: - 安装必要的运行时环境(如 Node.js、Python、Java 等) - 安装数据库(如 MySQL、PostgreSQL、MongoDB) - 配置 Web 服务器(如 Nginx、Apache) - 安装反向代理、负载均衡组件(如适用) 生产环境应尽量避免使用本地开发工具,确保其独立性和稳定性[^1]。 #### 2. 构建与打包项目部署之前,项目需要从开发状态转换为可部署状态。对于前端项目(如 React、Vue),通常需要执行构建命令生成静态资源: ```bash npm run build ``` 对于后端服务(如 Node.js、Flask、Django),需要确保依赖项已安装,并准备好运行脚本。 #### 3. 配置环境变量 项目在不同环境中可能需要不同的配置,例如数据库连接地址、API 请求地址等。通常使用 `.env` 文件或环境变量进行配置。例如: ```javascript // 是否是开发环境 export const isDev = process.env.NODE_ENV === "development"; // 创建 Axios 实例 const myAxios = axios.create({ baseURL: isDev ? "http://localhost:8101" : "改为自己的后端地址", timeout: 60000, withCredentials: true, }); ``` 在生产环境中,`NODE_ENV` 应设置为 `"production"`,并确保 API 地址指向公网可访问的后端服务[^3]。 #### 4. 部署服务 将项目部到服务器上可以采用多种方式,例如: - 直接上传代码并通过 `npm start` 或 `python app.py` 启动服务 - 使用 Docker 容器化部署,确保环境一致性 - 使用 CI/CD 工具(如 Jenkins、GitHub Actions)自动化部署 例如,使用 Docker 部署一个服务: ```bash docker build -t my-app . docker run -d -p 80:3000 my-app ``` #### 5. 配置域名与 HTTPS 为项目配置域名和 HTTPS 是上线的关键步骤。可以通过以下方式实现: - 注册域名并解析到服务器 IP - 使用 Nginx 或 Apache 配置反向代理 - 使用 Let's Encrypt 免费申请 SSL 证书并配置 HTTPS 例如,Nginx 配置示例: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` #### 6. 安全性与性能优化 生产环境部署后,还需要关注以下方面: - 设置防火墙规则,限制不必要的端口访问 - 启用日志监控,记录访问和错误信息 - 配置缓存策略(如 Redis、CDN) - 使用 PM2、systemd 等工具实现服务自启动和崩溃恢复 #### 7. 监控与维护 部署完成后,持续监控服务状态,确保其稳定运行。可以使用以下工具: - 日志分析工具(如 ELK Stack) - 性能监控工具(如 Prometheus + Grafana) - 崩溃报警系统(如 Sentry、New Relic) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值