前言
從事Java開發(fā)許久,從最初學(xué)習(xí)的JDK環(huán)境變量開始,到如今開發(fā)部署發(fā)布,已經(jīng)逐漸形成了自己的一套體系,當(dāng)然,其中也不少學(xué)習(xí)了網(wǎng)上各種資料總結(jié),接下來將在本文對Java項目開發(fā)到部署發(fā)布整個流程進行歸納梳理。
一、開發(fā)環(huán)境
關(guān)于開發(fā)環(huán)境,在之前寫的一篇文章里有詳細教學(xué),因為是比較基礎(chǔ)的部分,就不在這里過多贅述,如果各位看官需要翻閱可以點擊下面鏈接跳轉(zhuǎn)
Java開發(fā)環(huán)境搭建教程
二、項目搭建
環(huán)境配置好了,自然就是搭建項目框架,這里使用的是idea+maven方式,其他IDE大同小異
2.1 Maven創(chuàng)建項目
2.1.1 創(chuàng)建maven項目
首先file->new->project,注意圖中紅框的JDK版本
2.1.2 引入依賴
打開項目的pom.xml文件,在中配置每一個dependency,而springboot項目,需要添加父依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>***</version>
</parent>
<dependencies>
<dependency>
<groupId>***</groupId>
<artifactId>***</artifactId>
<version>**</version>
</dependency>
</dependencies>
2.1.3 maven常用命令
一般來說,maven常用命令用clean和install(package),idea為maven項目提供了按鈕操作,無需在terminal中使用mvn命令
三、SpringBoot基礎(chǔ)配置
server:
port: 6013 # tomcat端口
servlet:
context-path: /v1 # api context path
spring:
application:
name: TEST # app name
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&characterEncoding=UTF8
username: root
password: admin
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
logging:
config: classpath:log/logging.xml # 日志配置路徑
四、項目打包
因為是maven構(gòu)建的springboot項目,故這里僅講述maven打包的方式
4.1 打包jar
在pom.xml中配置build即可
<build>
<finalName>{自行指定打包名稱,不配置則默認項目名稱}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>{springboot項目入口,即main方法所在類class}</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
4.2 打包war
相對于jar包,打包war就需要排除springboot中內(nèi)嵌的tomcat
4.2.1 修改項目打包為war包
4.2.2 排除內(nèi)嵌的tomcat,引入外部tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
4.2.3 添加servlet-api依賴
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>
4.2.4 修改app入口方法,繼承SpringBootServletInitializer,記得重寫configure方法
@SpringBootApplication
@EnableCaching
public class TestApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(TestApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
4.2.5 和打包jar包一樣添加war包插件,其中warName就是項目啟動后訪問項目的contextPath,當(dāng)然這時候可以去tomcat里配置無需contextPath。默認訪問該項目
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceExcludes>src/main/resources/**</warSourceExcludes>
<warName>test</warName>
</configuration>
</plugin>
五、服務(wù)部署
5.1 winserver
winserver的部署和我們在電腦開發(fā)類似,打包cmd,運行java -jar jar包完整路徑即可
當(dāng)然,可以編寫bat腳本一鍵啟動等等,這些騷操作就不在這里過多講述,可自行發(fā)揮bat編寫
5.2 centos
和winserver類似,打包傳上去,java -jar jar包路徑
不過由于ssh session的關(guān)系,如果直接運行上面命令,會在session前臺運行,此時session要么關(guān)閉,要么看著jar包運行。如果需要后臺運行,則需要用到nohup命令
nohup java -jar **.jar &
控制臺輸出默認在nohup.out中
同winserver的bat一樣,jar包也通常不會再linux中直接運行,一般使用sh腳本或者寫入service中,通過腳本或systemctl等命令運行
六、Nginx相關(guān)配置
6.1 端口轉(zhuǎn)發(fā)
一般來說,我們開發(fā)的端口不會直接使用80,會使用域名轉(zhuǎn)發(fā)到我們的端口服務(wù)上,在nginx中,可以進行一下配置達到此效果
server {
listen 80;
server_name www.***.com;
charset utf-8;
location / {
proxy_pass http://127.0.0.1:8080/**;
}
error_page 404 400 401 402 403 /404.html;
location = /404.html {
root html;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root html;
}
}
6.2 HTTPS
https首先需要為自己的域名購買或生成證書,具體方法可自行百度或在各大云服務(wù)商購買
有了證書后,將證書中后綴為crt和key的兩個文件放入和ngxin的nginx.conf文件平級或者下級的目錄中,然后在需要https訪問的域名中配置如下
server {
# https 默認443端口
listen 443 ssl;
server_name www.***.com;
charset utf-8;
#證書文件名稱
ssl_certificate 1_www.***.com_bundle.crt;
#私鑰文件名稱
ssl_certificate_key 2_www.***.com.key;
ssl_session_timeout 5m;
#請按照以下協(xié)議配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#請按照以下套件配置,配置加密套件,寫法遵循 openssl 標(biāo)準(zhǔn)。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080/**;
}
error_page 404 400 401 402 403 /404.html;
location = /404.html {
root html;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root html;
}
}
6.3 靜態(tài)Web
靜態(tài)web的配置方式與端口轉(zhuǎn)發(fā)類似,只是將proxy_pass換成了root路徑文章來源:http://www.zghlxwxcb.cn/news/detail-768363.html
server {
listen 80;
server_name www.***.com;
charset utf-8;
location / {
root /usr/local/web/***;
index index.html;
}
error_page 404 400 401 402 403 /404.html;
location = /404.html {
root html;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root html;
}
}
6.4 靜態(tài)資源訪問
靜態(tài)資源和靜態(tài)web配置一致,只需要將web路徑換成資源路徑即可,訪問同樣按照web訪問資源文件文章來源地址http://www.zghlxwxcb.cn/news/detail-768363.html
server {
listen 80;
server_name file.***.com;
charset utf-8;
location / {
root /usr/local/file/***;
index index.html;
}
}
到了這里,關(guān)于【java】Java項目從開發(fā)到部署生產(chǎn)完整流程梳理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!