考试系统交接日记(二):nginx与项目启动

2021.4.25

考试系统的后台项目使用的是git,其中包含多个子系统;由于每个子系统提交的配置文件不统一,导致本地启动时费了半天时间。

简要记录如下:

 

一、考试系统后台启动流程

1.首先要按顺序install某些项目,在 target/generated-sources/ 下生成一些.java文件,才能启动项目。

2.然后要修改git上的配置文件,将[项目名-test.properties]中的dubbo的url改为本地,意思是使用本地dubbo生产者提供的服务,如[server1.dubbo.url=dubbo://localhost:20880]

3.考试系统分为6个模块;第一个要启动config-server模块,这个模块是用来从git上获取配置文件信息、然后提供给其它模块用的。(springcloudconfig)

启动时,需要修改application.properties,填写正确的git的url、用户名、密码(密码是gitlab中user settings->Access Tokens设置生成的),还要填写访问本模块需要的账号与密码(为了安全)。

如下:

spring.cloud.config.server.git.uri=http://gitlab.xxx.com/abc_user/mytest.git
spring.cloud.config.server.git.username=xxx
spring.cloud.config.server.git.password=alkdsjfDF@;aldskfj
spring.security.user.name=u1
spring.security.user.password=u1

4.第二个要启动portal模块,这个模块是用来提供基本信息的,与其他模块通过dubbo交互,属于生产者;该模块收到请求后,先找redis,如果有,则返回;如果没有,则找mysql数据库,把结果放入redis,并返回结果。

启动时,需要修改application.properties中的信息,要使用本地的配置中心config的url以及账号密码,才能获取到配置信息;要配置好端口port、服务名name以及context-path,要与nginx中的对应;要配置profile为test,表示使用[项目名-test.properties]的配置文件。

如下:

#与nginx对应
server.port=8880
server.servlet.context-path=/portal

#与本地的server-config对应
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=u1
spring.cloud.config.password=u1
spring.cloud.config.failFast=true

#表示使用的配置文件是master分支的
spring.cloud.config.label=master

#表示使用的配置文件是[portal-test.properties]之类的
spring.application.name=portal
spring.cloud.config.profile=test

5.第三个要启动tag模块,这个模块是用来管理考试题标签的。配置信息与第4步类似。

6. 剩下的3个模块不区分启动顺序,分别为:

exam-manage-pc:考试管理PC端,用来管理试题、试卷、考试。

exam-manage-mobile:考试管理移动端,功能与PC端相同。

exam:考试入口,供学员参加考试、获取试卷、提交答案、查看得分。

 

二、考试系统前端启动流程及nginx设置

1.先将前端项目编译好,然后将编译后的文件放到指定目录下(与nginx中的对应)

2.配置好nginx,注意事项如下:

(1)确认nginx.conf文件中是否包含了其它的配置文件,如果包含,需要放到指定位置,例如:

include D://dev//nginx-1.18.0//conf.d//*.conf;
include D://dev//nginx-1.18.0//conf//upstream.conf;

(2)由于包含了upstream.conf,所以要查看其中的配置信息,使得与后台项目启动的端口一致,例如:

upstream portal_cluster{
  server localhost:8880;
}

这个名称是自己起的,在其它的nginx配置文件中有其对应。例如:

location ~ /basic-api(.*) {
  set $name portal_cluster;
  proxy_set_header Host $http_host;
  proxy_pass http://$name/portal$1$is_args$args;
}

其中,

~是区分大小写匹配;

$name对应portal_cluster对应localhost:8880;

$1对应正则表达式匹配的第一个内容(.*);

$is_args的含义是,如果请求有参数,为?;如果请求没有参数,为空字符串;

$args的含义是请求中的参数。

因此,如果有请求:http://www.test.com/basic-api/a/b/c?key=value

会被转发到:http://localhost:8880/portal/a/b/c?key=value

3.启动nginx.exe,就可以访问前端页面了。

4.由于项目后台有验证签名操作(sign字段,内容根据当前ip与其他参数进行加密后得到),因此需要用工具类生成携带签名参数的url,才能正常访问前端页面与后台系统。

 

三、备注

1.遇到了项目不打印控制台日志的问题,需要修改1个文件:

logback-boot.xml

增加以下代码:

<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>info</level>
  </filter>
  <encoder>
    <pattern>${CONSOLE_LOG_PATTERN}</pattern>
  </encoder>
</appender>

<springProfile name="test,dev">
  <root level="INFO">
    <appender-ref ref="CONSOLE" />
    
    <appender-ref ref="INFO_WARN_FILE" />
    <appender-ref ref="ERROR_FILE" />
  </root>
</springProfile>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值