# 项目部署

# 打包代码

你可以执行以下命令或直接通过IDEA Maven页签的clean install快捷执行方式来打包代码。代码打包后在您的maven仓库中。

mvn clean install
1

# 上传代码和配置文件

上传jar包和application.yml文件到您的服务器中。组织成下面这样的目录结构。

app
|  application.yml
|  myapp.jar
|  files
1
2
3
4

本地文件存放路径默认情况下项目/files,所以部署目录中还需存在files目录。

# 启动服务

通过nohup命令启动服务,使服务在后台运行。

nohup java -jar myapp.jar &
1

执行成功后使用Ctrl + C关闭nohup进程(此时服务依然运行在后台)。服务启动日志将输出到nohup.out文件中。

为什么不采用springboot官网推荐的active方式进行生产环境配置

无论是测试环境还是生产环境,Eva并不推荐您将各个环境的配置文件放置在项目中,因为这样将暴露各个环境的配置信息,其中也会包含一些敏感信息,如数据库密码,缓存密码,加密密钥等。这无疑增加了项目的运营风险。所以,Eva将各个环境的配置信息放置在不同环境的服务器上,可以尽可能的减少这类风险。

# 配置Nginx








 
 
 


server {
    listen 80;
    server_name www.yourdomain.com;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    # 接口代理
    location /api {
        proxy_pass http://localhost:10010/;
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 负载均衡

为了提供服务的稳定性,我们可能需要为服务部署多台机器。这样某一台服务宕机时其它服务可以继续顶上。此时需要nginx的upstream介入完成负载均衡。

注意

由于多台服务存在会话不共享的问题,所以只有在构建框架时,缓存策略选配了Redis才可以进行负载。如果您使用的是Eva内置的内存式缓存,可以通过升级来使用其他缓存策略。详见自动升级

upstream servers {
  server 172.17.230.1:10010; # 服务1
  server 172.17.230.2:10010; # 服务2
}
server {
  listen 80;
  server_name www.yourdomain.com;
  add_header Access-Control-Allow-Credentials true;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  # 接口代理
  location /api {
     proxy_pass http://servers/;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16