우선 정확한 원인이 무엇인지 몰랐으나 책을 따라서 우선 배포 스크립트를 만들어서
그대로 진행을 해봤습니다.
물론 배포 스크립트 과정에서 gradlew build를 해야했기 떄문에 결론적으로 똑같이 에러가 발생했으나
그 덕분에 원인을 얼추 찾게 되었습니다.
org.springframework.beans.factory.BeanDefinitionStoreException:
Failed to parseconfiguration class [com.awse.commerce.CommerceApplication];
nested exception is java.io.FileNotFoundException: class path resource [application-pay.properties]
cannot be opened because it does not exist
제 프로젝트는 현재 결제 API를 연동시켜 놓았고 해당 API에서 사용되는 private key 와 applicationId를
properties 파일을 만들어서 gitignore로 숨겨놓은 상태였습니다.
그래서 서버에서 프로젝트를 빌드하게 되면 해당 파일이 숨겨놓은 상태로 없기 때문에
읽을 수 없어서 파일을 찾을수 없다는 예외가 발생했던 것.
그래서 책을 따라서 서버단에 application-pay.properties 파일을 따로 생성해뒀다.
-rwxrwxrwx 1 root root 175 Jun 10 19:00 application-pay.properties
drwxrwxr-x 3 ec2-user ec2-user 95 Jun 10 20:39 step1
이후 배포 스크립트에서는 깃을 pull 한 다음 해당 파일의 classpath에 파일을 복사시켰다
( -Dspring.config.location 으로 파일의 경로를 지정해서 쓸수 있겠지만 우선 했다)
// 두 스크립트 변수는 내가 지정해둔 파일경로와 프로젝트 명칭이다
cd $REPOSITORY/$PROJECT_NAME/src/main/resources
cp $PAY_FILE_PATH $PAY_FILE
이런식으로 파일경로를 지정했다..
nohup java -jar -Dspring.config.location=classpath=application.properties\
-Dspring.config.location=classpath=application-pay.properties\
$REPOSITORY/$JAR_NAME 2>&1 &
이번에는 DB관련 설정이 없다는 에러가 나타났다.
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
책을 따라서 DB관련 properties 파일들을 만들고 배포스크립트에 집어넣었다.
nohup java -jar -Dspring.config.location=classpath=application.properties\
-Dspring.config.location=classpath=application-pay.properties\
-Dspring.config.location=classpath=application-oauth.properties\
-Dspring.config.location=classpath=application-real.properties\
-Dspring.config.location=classpath=application-real-db.properties\
-Dspring.profiles.active=real\
$REPOSITORY/$JAR_NAME 2>&1 &
하지만 그대로 DB설정에 관한 에러는 나왔으며 profiles로 설정한 값이 real 만 나오게 되었다.
여기서 계속 삽질을 하다가 도저히 안되겠어서
직접 블로그로 들어가서 책의 예제 + pay.properties 파일을 넣어봤다.
nohup java -jar -Dspring.config.location=classpath:application.properties,classpath:application-pay.properties,classpath:application-real.properties,/home/ec2-user/app/application-oauth.properties,/home/ec2-user/app/application-real-db.properties\
-Dspring.profiles.active=real\
$REPOSITORY/$JAR_NAME 2>&1 &
그 결과...
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.5)
2021-06-11 15:07:06.260 INFO 4294 --- [ main] com.awse.commerce.CommerceApplication : Starting CommerceApplication using Java 1.8.0_282 on commerce-ec2 with PID 4294 (/home/ec2-user/app/step1/commerce-0.0.1-SNAPSHOT.jar started by ec2-user in /home/ec2-user/app/step1)
2021-06-11 15:07:06.264 INFO 4294 --- [ main] com.awse.commerce.CommerceApplication : The following profiles are active: real,oauth,real-db,pay
2021-06-11 15:07:09.602 INFO 4294 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-06-11 15:07:09.890 INFO 4294 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 273 ms. Found 7 JPA repository interfaces.
2021-06-11 15:07:12.356 INFO 4294 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-06-11 15:07:12.377 INFO 4294 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-06-11 15:07:12.378 INFO 4294 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.45]
2021-06-11 15:07:12.537 INFO 4294 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-06-11 15:07:12.537 INFO 4294 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 6067 ms
2021-06-11 15:07:13.842 INFO 4294 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2021-06-11 15:07:13.994 INFO 4294 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.30.Final
2021-06-11 15:07:14.324 INFO 4294 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2021-06-11 15:07:14.515 INFO 4294 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2021-06-11 15:07:14.641 INFO 4294 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2021-06-11 15:07:14.681 INFO 4294 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
2021-06-11 15:07:17.551 INFO 4294 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-06-11 15:07:17.569 INFO 4294 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-06-11 15:07:19.690 WARN 4294 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
Execute To PasswordEncoder com.awse.commerce.domains.util.config.SecurityConfig.passwordEncoder()executed.. 63
Execute To JPAQueryFactory com.awse.commerce.domains.util.config.QuerydslConfiguration.jpaQueryFactory()executed.. 16
2021-06-11 15:07:22.182 INFO 4294 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@367795c7, org.springframework.security.web.context.SecurityContextPersistenceFilter@253c1256, org.springframework.security.web.header.HeaderWriterFilter@77e80a5e, org.springframework.security.web.authentication.logout.LogoutFilter@49d98dc5, org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter@4604b900, org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter@3961a41a, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@d4602a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@503fbbc6, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@67fe380b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@d2387c8, org.springframework.security.web.session.SessionManagementFilter@240139e1, org.springframework.security.web.access.ExceptionTranslationFilter@2d140a7, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@74a195a4]
Execute To Docket com.awse.commerce.domains.util.config.SwaggerConfig.api()executed.. 31
2021-06-11 15:07:22.931 INFO 4294 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-11 15:07:23.082 INFO 4294 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2021-06-11 15:07:23.840 INFO 4294 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2021-06-11 15:07:23.848 INFO 4294 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
2021-06-11 15:07:23.884 INFO 4294 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
2021-06-11 15:07:23.914 INFO 4294 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
2021-06-11 15:07:24.361 INFO 4294 --- [ main] com.awse.commerce.CommerceApplication : Started CommerceApplication in 19.565 seconds (JVM running for 21.052)
서버가 켜지는데 20초나 걸리는 현상이 나타났으나..
최초로 서버에서 프로젝트 구동이 완료되었다.
The following profiles are active: real,oauth,real-db,pay
profiles 활성화 또한 설정한 파일들이 전부 구동되는 상태가 되었다..
Dspring.config.location 설정시에 스크립트를 붙여서 써야 정상작동이 되는지 그런것에 대한 개념이 없다보니
스크립트를 다르게 작성한 나머지 시간을 꽤 썻다.
어렵긴 어렵다. 서버관련된 이슈들은 무조건적으로 작성해서 익혀놓는게 좋을것같다..
서버를 켜서 들어가보니 타임리프 템플릿 경로 관련 문제가 발생해서 이제 이쪽부분을 건드리면 된다..
'DevOps > AWS' 카테고리의 다른 글
EC2) 서버 도메인 OAuth2.0에 등록 (0) | 2021.06.11 |
---|---|
EC2) org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/fragment/fragment] (0) | 2021.06.11 |
./gradlew test 실패 이후 2번째 (0) | 2021.06.10 |
EC2 - ./gradlew test 실패 (0) | 2021.06.09 |
AWS EC2 -bash: fork: Cannot allocate memory (0) | 2021.04.24 |