位置: IT常识 - 正文

项目部署,一点也不难!(项目部署计划)

编辑:rootadmin
项目部署,一点也不难!

目录

一、部署前准备

(一)前端多环境准备

(二)后端多环境准备

二、项目部署

(一)原始部署

1、前端部署

2、前端部署测试

3、后端部署

(二)宝塔 Linux 部署

1、前端部署

2、后端部署

(三)Docker部署

三、绑定域名


推荐整理分享项目部署,一点也不难!(项目部署计划),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:项目部署,一点一点落实,项目部署步骤,项目部署步骤,一般项目部署在哪里,zheng项目部署,项目部署,一点一点落实,项目部署是什么,项目部署什么意思,内容如对您有帮助,希望把文章链接给更多的朋友!

        作为程序员,打代码是远远不够的,还要对项目进行部署,也就是上线。将本地开发好的项目部署在远程服务器上,使得任何机器都可以通过我们远程服务器的公网ip或者域名加上端口号访问到我们项目。本篇博客将详细讲解不同的项目部署方法,看完这篇文章,你一定会有所收获!

首先项目部署分一下几个步骤:

环境搭建:以springboot项目为例,需要将项目打成jar包,想要让jar包在服务器跑起来的话需要搭建环境,也就是jdk环境。tomcat不要安装,springboot自带。

数据库部署:在本地开发时,我们本地代码里的数据库连接的是本机的数据库且为localhost,这个项目只能访问自己电脑,只有自己能够访问;但如果项目部署到远程服务器上时,要想访问到数据库,应该先部署数据库,至于数据库连接就不能是本地数据库了,这里我部署的是云数据库。

以上方法实现后就可以把项目的jar包上传到服务器上执行java项目即可。

一、部署前准备

部署前的准备就不详细讲解了,本文主要讲解项目部署的方法!

(一)前端多环境准备

请求地址

开发环境:localhost:8080

线上环境:userManager-backend.code-nav.cn

启动方式

开发环境:npm run start(本地启动,监听端口,自动更新)

线上环境:npm run build(项目构建打包,可以使用server工具启动:npm i-g serve)

不同项目(框架)都有不同的配置文件,本次项目使用的是umi框架,其配置文件是config,可以在配置文件后添加对应环境名称后缀来区分开发环境和生产环境。

项目配置

开发环境:config-dev.ts

生产环境:config-prod.ts

公共配置:config.ts 不带后缀

(二)后端多环境准备

本次项目为springboot项目,springboot项目是通过application.yaml添加不同后缀名来区分配置文件

可以通过项目启动时传入环境变量:

java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

后端主要是更改:

依赖的环境地址

数据库地址

缓存地址

消息队列地址

项目端口号

服务器配置 

后端搭建好后,我们可以来测试一下是否可以运行项目,通过mvn打包:

在target内找到打包的项目,在该路径下的控制台内输入:

java -jar./user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

到这里,就可以看到后端代码是可以显示的啦!

二、项目部署

前后端准备好后,我们就开始最后的部署吧!!!

本次部署使用的服务器为linux服务器,建议是CentOS 8+ 或者7.6以上版本

(一)原始部署

所有环境都是自己部署!!

1、前端部署

使用web服务器:Nginx、Apache、tomcat(本次使用的为Nginx服务器)

安装Nginx服务器:

用系统自带的软件包管理器快速安装,比如 centos 的 yum

到官网安装

#下载Nginx安装包curl -o nginx-1.21.6.tar.gz http://nginx.org/download/nginx-1.21.6.tar.gz#解压tar -zxvf nginx-1.21.6.tar.gz#跳转至解压后端Nginx包里下载相关包yum install pcre pcre-devel -yyum install openssl openssl-devel -y#设置系统配置参数./configure --with-http_ssl_module --with-http_v2_module --with-stream#开始编译make#安装make install#加入环境变量ls /usr/local/nginx/sbin/nginxvim /etc/profile#在最后一行添加export PATH=$PATH:/usr/local/nginx/sbin#使文件生效source /etc/profile#最后输入命令nginx即可nginx#查看启动情况netstat -ntlp

 

2、前端部署测试

把Nginx搭建好后,我们就可以将前端项目放进服务器然后运行啦!!!

将打包好的项目传入服务器(在根目录下执行)

unzip dist.zip -d user-center-front#将dist内的文件全部移到user-center-front目录下 mv * ../

修改Nginx的配置文件:nginx.conf

将开启的用户设为root用户

将项目地址填入root后面

执行项目

nginx -s reload

在自己的浏览器输入自己服务器的IP地址即可进入,但会发现以下问题

这是因为修改的nginx.conf是没有执行成功的,运行nginx时,使用的是默认的nginx.conf配置文件,路径是不一样的,所以得修改默认路径下的nginx.conf!

项目成功启动啦!!!

3、后端部署项目部署,一点也不难!(项目部署计划)

配置java环境:jdk、maven

#安装jdkyum install -y java-1.8.0-openjdk*#安下载maven包curl -o apache-maven-3.8.5-bin.tar.gz https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz#解压tar -zxvf apache-maven-3.8.5-bin.tar.gz #进入解压后的maven文件跳转到bin文件可以看到该文件内的mvn执行文件#复制其地址/root/env/apache-maven-3.8.5/bin#配置环境变量vim /etc/profile#在最后一行的路径后面添加 : + 路径export PATH=$PATH:/usr/local/nginx/sbin:/root/env/apache-maven-3.8.5/bin#刷新环境source /etc/profile#测试mvn是否搭建成功mvn -vApache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)Maven home: /root/env/apache-maven-3.8.5#将后端项目传入服务器内#将项目打包构建,并跳过测试mvn package -DskipTests#打包完成后在target文件下可以看到user-center-backend-0.0.1-SNAPSHOT.jar#在当前目录下执行该jar包java -jar user-center-backend-0.0.1-SNAPSHOT.jar --spring.profile.active=prod#注意这样运行的话窗口会卡死,所以应该使其在后台运行nohup java -jar user-center-backend-0.0.1-SNAPSHOT.jar --spring.profile.active=prod &#执行后会看到运行该项目的端口号,然后按回车即可

 

到此,我们的原始部署已经完成了!!!

(二)宝塔 Linux 部署

如果是腾讯云的轻量应用服务器的话是自带宝塔Linux的,我用的是华为云的服务器,所以得从官网下载并配置。官网地址(宝塔面板下载,免费全能的服务器运维软件)

#Centos安装脚本yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec#堡塔云控平台安装脚本curl http://download.bt.cn/coll_free/install.sh|bash

安装完成后会显示控制面板的地址和账户密码,首先要先添加服务器的安全组,设置入栈规则允许访问该地址,然后在登录宝塔修改密码!!

进来后你会发现这简直就是新天地啊,全都是可视化界面了,想装什么就去搜一键安装!!!

nginx安装:

tomcat安装:

1、前端部署

在宝塔的控制页面直接点解网站,创建站点

创建完成之后,如图点击进入其目录

 

删除所有默认文件

将前端打包好的文件直接全部拖入该文件下

然后项目就部署完成啦!!!!太快了

 

2、后端部署

在宝塔控制面板点击文件,新建一个后端文件

点击网站,点击Java项目,添加java项目。项目执行路径一定要注意了!

 

注意,如果提交时报端口重复,大概率是tomcat占用了8080端口,只需要另起一个宝塔页面,在软件商店内搜索tomcat,然后将其关闭即可!

还没有解决的话,可以通过:netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令 :kill -9 PID

启动成功!

启动成功后要去看一下服务器有没有开启8080端口,如果没有的话就要去开启,宝塔内也要开启8080端口!!

 

(三)Docker部署

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

简单的说,docker就是一个容器,可以将项目的环境(比如java、nginx)和项目的代码一起打包成镜像,所有人都可以下载镜像,更加容易分发和移植。在启动项目时就不再需要敲过多命令,而是直接下载镜像,启动镜像即可。相当于软件的安装包!

Docker安装:

官网:Developers - Docker

直接使用宝塔软件商店进行安装

用于指定构建Docker镜像的方法是通过Dockerfile文件来完成的,Dockerfile一般都是去cv下来的,不需要太深入理解。

Dockerfile 编写:

FROM 依赖的基础镜像

WORKDIR 工作目录

COPY 从本机复制文件

RUN 执行命令

CMD / ENTRYPOINT(附加额外参数)指定运行容器时默认执行的命令

#后端DockfileFROM maven:3.5-jdk-8-alpine as builder# Copy local code to the container image.WORKDIR /appCOPY pom.xml .COPY src ./src# Build a release artifact.RUN mvn package -DskipTests# Run the web service on container startup.CMD ["java","-jar","/app/target/user-center-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]#前端的DockfileFROM nginxWORKDIR /usr/share/nginx/html/USER rootCOPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf#./dist 前端构建的代码包COPY ./dist /usr/share/nginx/html/EXPOSE 80CMD ["nginx", "-g", "daemon off;"]

直接在项目的根目录下创建该文件即可

根据 Dockerfile 构建镜像:

添加新文件后需要重新打包并重新上传打包好的项目

# 后端docker build -t user-center-backend:v0.0.1 .# 前端docker build -t user-center-frontend:v0.0.1 .

 

docker run 启动

# 前端docker run -p 80:80 -d user-center-frontend:v0.0.1# 后端docker run -p 8080:8080 user-center-backend:v0.0.1

虚拟化

端口映射:把本机的资源(实际访问地址)和容器内部的资源(应用启动端口)进行关联

目录映射:把本机的端口和容器应用的端口进行关联

三、绑定域名

前端项目访问:

用户输入网址 => 域名解析服务器(把网址解析为 ip 地址 / 交给其他的域名解析服务) => 服务器 =>(防火墙)=> nginx 接收请求,找到对应的文件,返回文件给前端 => 前端加载文件到浏览器中(js、css) => 渲染页面

后端项目访问:用户输入网址 => 域名解析服务器 => 服务器 => nginx 接收请求 => 后端项目(比如 8080端口)

本文链接地址:https://www.jiuchutong.com/zhishi/297534.html 转载请保留说明!

上一篇:clone下来的vue项目出现“An unknown git error occurred”,vue全局挂载axios及配置全局请求和响应拦截,uni-app的全局请求和响应拦截,对请求方法的封装(vue clonedeep)

下一篇:npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolve dependency

  • 淘宝新手推广如何获取关注度(新手做淘宝怎么做推广)

    淘宝新手推广如何获取关注度(新手做淘宝怎么做推广)

  • vivox70pro+怎么关闭自动更新(vivox70pro+怎么关电视)

    vivox70pro+怎么关闭自动更新(vivox70pro+怎么关电视)

  • 华为电视投屏功能怎么使用(华为电视投屏功能怎么放大屏幕)

    华为电视投屏功能怎么使用(华为电视投屏功能怎么放大屏幕)

  • 苹果手机怎么扫描图片变成文字(苹果手机怎么扫描文件)

    苹果手机怎么扫描图片变成文字(苹果手机怎么扫描文件)

  • 穿越火线烟雾头怎么调(穿越火线烟雾头盔怎么设置)

    穿越火线烟雾头怎么调(穿越火线烟雾头盔怎么设置)

  • 陌陌注销审核需要多久(陌陌 注销 审核)

    陌陌注销审核需要多久(陌陌 注销 审核)

  • 电脑怎么下载微信(电脑怎么下载微信到手机)

    电脑怎么下载微信(电脑怎么下载微信到手机)

  • 定位器定位不准怎么办(定位器为什么会没反应)

    定位器定位不准怎么办(定位器为什么会没反应)

  • qq密友是什么意思(qq密友值多少算正常)

    qq密友是什么意思(qq密友值多少算正常)

  • 笔记本连不上WIFI怎么办(笔记本连不上wifi是什么原因)

    笔记本连不上WIFI怎么办(笔记本连不上wifi是什么原因)

  • 软碟通u盘必须fat32格式吗(软碟通制作u盘启动盘之后能装其它文件吗)

    软碟通u盘必须fat32格式吗(软碟通制作u盘启动盘之后能装其它文件吗)

  • 手机后面pro什么意思(手机后面的pro和plus的区别)

    手机后面pro什么意思(手机后面的pro和plus的区别)

  • 钉钉视频会议找不到了(钉钉视频会议找不到视图)

    钉钉视频会议找不到了(钉钉视频会议找不到视图)

  • 苹果5s1530能不能用电信卡(苹果5s可以用ios13吗)

    苹果5s1530能不能用电信卡(苹果5s可以用ios13吗)

  • qq邮箱保存的文件在哪里(qq邮箱保存的文件 导出在哪里)

    qq邮箱保存的文件在哪里(qq邮箱保存的文件 导出在哪里)

  • 苹果8plus支持电信吗(苹果8plus支持电信volte吗)

    苹果8plus支持电信吗(苹果8plus支持电信volte吗)

  • 华为p20pro和华为p30pro的区别(华为p20pro和华为p20型号怎么看)

    华为p20pro和华为p30pro的区别(华为p20pro和华为p20型号怎么看)

  • oppo声音太大怎么办(oppo手机声音调大还是很小怎么办)

    oppo声音太大怎么办(oppo手机声音调大还是很小怎么办)

  • radeonvega8相当于什么显卡(amd radeon vega 8 graphics相当于)

    radeonvega8相当于什么显卡(amd radeon vega 8 graphics相当于)

  • hmaal00是华为什么型号(hmaaloo是华为什么型号)

    hmaal00是华为什么型号(hmaaloo是华为什么型号)

  • vue如何让照片全显示(vue如何调整图片顺序)

    vue如何让照片全显示(vue如何调整图片顺序)

  • 饿了么发票在哪里找(饿了么发票在哪儿看)

    饿了么发票在哪里找(饿了么发票在哪儿看)

  • 华为nova5pro有没有方舟编译器(华为nova5pro有没有高清通话)

    华为nova5pro有没有方舟编译器(华为nova5pro有没有高清通话)

  • 服务器拒绝访问的原因(服务器拒绝访问,企业许可无效怎么回事)

    服务器拒绝访问的原因(服务器拒绝访问,企业许可无效怎么回事)

  • cnqmax.exe进程的详细注解 cnqmax进程是病毒吗 安全吗

    cnqmax.exe进程的详细注解 cnqmax进程是病毒吗 安全吗

  • 稳岗返还资金最新账务处理
  • 公司注销前存货低价标准
  • 计提并结转所得税分录
  • 计提企业所得税会计科目
  • 企业所得税税负率怎么算出来的
  • 进项税额加计抵减会计分录
  • 附加税减半征收的条件
  • 买原材料怎么记账
  • 法人转钱入公户怎么做会计分录
  • 本年利润和利润分配未分配利润的区别
  • 分红款怎么记账
  • 进项税额在贷方怎么登明细账
  • 库存商品和固定资产
  • 招拍挂方式取得土地,应该取得土地后立项
  • 母公司吸收合并全资子公司土地增值税
  • 活动现金红包
  • 跨月作废发票怎么开
  • 年收入超过12万什么时候申报
  • 小规模纳税人的税率是多少
  • 中标服务费直接按开票金额付款吗
  • 跨区域施工增值税怎么交
  • 逃避的概念
  • 推迟确认收入的方法
  • 民办非企业单位和私营单位的区别
  • 广告传媒公司的成本是什么
  • 腾讯电脑管家中蓝牙在哪
  • phpserialize
  • Msssrv.exe - Msssrv是什么进程 有什么用
  • 贷款损失会计处理
  • 增值税 劳务费
  • 木星应该涂什么颜色
  • php图片叠加
  • 常用的前端大屏软件
  • 股东股权转让税务稽查案例
  • 执行企业会计制度的企业有哪些
  • php类的作用
  • 科技推广和应用服务业行业
  • elementui input无法输入
  • html在线小游戏
  • php设置title
  • php数学
  • 冲减预提成本分录
  • 运营费的税率
  • 织梦使用教程
  • 环保税的算法
  • sql server数据库连接端口1434
  • 坏账准备贷方表示什么
  • 购入农产品的增值税税率是多少
  • 存货取得长期股权投资
  • 资产减值损失如何计提
  • 公司库存现金提现流程
  • 上年的原材料发票可以算今年的成本吗
  • 单位买另一单位的保险
  • 管理费用有负数怎么结总账
  • 营业外支出明细账应该采用的格式是
  • 公司的日常费用支出能税前全部扣除吗?
  • 电汇凭证是什么会计科目
  • 农民工工资专户销户流程
  • 收到银联商务客户短信
  • xp系统控制面板在哪里打开
  • window组件在哪里
  • linux服务器dns配置
  • realjbox.exe - realjbox是什么进程 作用是什么
  • win8怎么样的
  • Win10怎么打开屏幕键盘
  • win10系统收不到wifi信号
  • win8超级按钮在哪
  • cocos2dx 2.2.2
  • real interval
  • shell判断文件是否存在且大小不为0
  • excel的最后一列
  • 输出中断
  • nodejs实战
  • 举例简介三国演义人物塑造的主要手法
  • Shell中使用scp命令实现文件上传代码
  • 安卓自定义app
  • Android-Universal-Image-Loader 图片异步加载类库的使用
  • 个人所得税税单去哪里打印
  • 广东省广州市国资委
  • 船舶吨税是中央税还是地方税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设