GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI/CD ํŒŒ์ดํ”„๋ผ์ธ yml ํŒŒ์ผ
ยท
study
GitHub Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI/CD(์ง€์†์  ํ†ตํ•ฉ ๋ฐ ์ง€์†์  ๋ฐฐํฌ) ํŒŒ์ดํ”„๋ผ์ธ์„ ์„ค์ •ํ•˜๋Š” ์›Œํฌํ”Œ๋กœ์šฐ# ์›Œํฌํ”Œ๋กœ์˜ ์ด๋ฆ„ ์ง€์ •name: CI/CD#์›Œํฌ ํ”Œ๋กœ๊ฐ€ ์‹œ์ž‘๋  ์กฐ๊ฑด ์ง€์ •on: push: branches: [ main ]jobs: build: runs-on: ubuntu-latest #์‹คํ–‰ํ™˜๊ฒฝ ์ง€์ • #์‹คํ–‰ ์Šคํ… ์ง€์ • steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: distribution: 'corretto' java-version: '17' # ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ - name: Grant execute permissio..
OAuth2 ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ
ยท
TIL/Java
@RequiredArgsConstructor@Configurationpublic class WebOAuthSecurityConfig { // ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๊ธฐ๋Šฅ ๋น„ํ™œ์„ฑํ™” @Bean public WebSecurityCustomizer configure() { return (web) -> web.ignoring() .requestMatchers(toH2Console()) .requestMatchers("/img/**", "/css/**", "/js/**"); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { ..
Spring Security ํŒŒ์ผ ์„ค์ •ํ•˜๊ธฐ
ยท
TIL/Java
@Configuration@RequiredArgsConstructorpublic class WebSecurityConfig { private final UserDetailService userService; @Bean public WebSecurityCustomizer configure() { return (web) -> web.ignoring() .requestMatchers(toH2Console()) .requestMatchers("/static/**"); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception ..
9์›” ํšŒ๊ณ 
ยท
TIL/ํšŒ๊ณ 
์ด๋ ฅ์„œ์š”์ฆ˜ ์ด๋ ฅ์„œ๋ฅผ ๋‹ค๋“ฌ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ ์—ด์‹ฌํžˆ ํ•ด์™”๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ ๋ง‰์ƒ ์ ์œผ๋ ค๋‹ˆ ๊ทธ ๋ฌด์–ธ๊ฐ€๋“ค์€ ์–ด๋””๊ฐ”๋Š”์ง€ ๋ฌด์—‡์„ ์จ์•ผํ• ์ง€ ๋ง‰๋ง‰ํ•ด์ง„๋‹ค. ์ผ๋‹จ ์‹œ์ž‘ํ•ด๋ณด์ž  java ๊ณต๋ถ€java ๊ณต๋ถ€๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋™์•ˆ ์ž๊ฒฉ์ฆ ์ค€๋น„์— ์ง‘์ค‘ํ•˜๋Š๋ผ ์ž ์‹œ ์†์„ ๋†“์•˜๋˜ ํƒ“์ธ์ง€, ์žŠ์–ด๋ฒ„๋ฆฐ ๋ถ€๋ถ„๋“ค์ด ๋งŽ์•„ ๋‹ค์‹œ ์ตํžˆ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ณต์Šตํ•˜๋ฉด์„œ ์ด์ „์— ๋ฐฐ์› ๋˜ ๊ฒƒ๋“ค์„ ๋˜์ฐพ๊ณ  ์žˆ๊ณ , ๋” ๊นŠ์ด ์žˆ๋Š” ์ดํ•ด๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋” ๊พธ์ค€ํžˆ, ์ฒด๊ณ„์ ์œผ๋กœ ๊ณต๋ถ€ ๊ณ„ํš์„ ์„ธ์›Œ์„œ ์ง„ํ–‰ํ•  ๊ณ„ํš์ด๋‹ค. ์˜์–ด ๊ณต๋ถ€ ์ •๋ง ๋งค์ผ ํ•˜๊ณ  ์žˆ๋Š” ๊ณต๋ถ€! ์ด๋ฒˆ ๋‹ฌ๋„ ์˜์–ด ๊ณต๋ถ€๋Š” ๊ฐœ๊ทผ. ๊พธ์ค€ํžˆ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๊ฒŒ ์•ฑ๋‚ด ๋ฆฌ๊ทธ๋ผ๋Š” ์‹œ์Šคํ…œ์ด ์žˆ๋Š”๋ฐ ์ด๋ฒˆ๋‹ฌ์— ๋ฌด๋ ค ๋งˆ์ง€๋ง‰ ๋ฆฌ๊ทธ์ธ ๊ทธ๋žœ๋“œ๋งˆ์Šคํ„ฐ๊นŒ์ง€ ๋‹ฌ์„ฑํ–ˆ๋‹ค. ๋งค์ผ 30๋ถ„ ์ •..
aws Elastic Beanstalk 502 Bad Gatway ํ•ด๊ฒฐ๋ฐฉ๋ฒ•
ยท
์—๋Ÿฌ๋ชจ์Œ์ง‘
spring boot ํ”„๋กœ์ ํŠธ๋ฅผ aws Elastic ์œผ๋กœ ๋ฐฐํฌ ํ•˜๋ ค ์‹œ๋„ ํ•˜์˜€์œผ๋‚˜ ์œ„์™€ ๊ฐ™์€ 502 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.   aws Elastic Beanstalk ์€ ๊ธฐ๋ณธํฌํŠธ๋กœ 5000์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•จ. ๊ทธ๋ ‡๊ธฐ์— ํฌํŠธ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.   [๊ตฌ์„ฑ] ๋ฉ”๋‰ด๋กœ ๋“ค์–ด๊ฐ€ [์—…๋ฐ์ดํŠธ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊น…] ์˜ ํŽธ์ง‘ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ด๋™ํ•œ๋‹ค.  ํ™˜๊ฒฝ์†์„ฑ ๋ถ€๋ถ„์— ์•„๋ž˜์™€ ๊ฐ™์ด ํฌํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค.    ํ•ด๊ฒฐ์™„๋ฃŒ!  SERVER_PORT๋Š” ์™œ 5000์ผ๊นŒ์š”?Elastic Beanstalk๋Š” nginx๋ฅผ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํŠธ 80์˜ Elastic Load Balancing ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. Elastic Beanstalk๋Š” ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ž์ฒด ๊ตฌ์„ฑ์œผ๋กœ ์™„์ „ํžˆ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ nginx..
์–ธ๋ฆฌ์–ผ ํŽ˜์ŠคํŠธ 2024 ์ฐธ์—ฌ ํ›„๊ธฐ
ยท
study
https://epiclounge.co.kr/unrealfest24.php?utm_source=griff_db&utm_medium=click_newsletter&utm_campaign=egk_unreal_fest_2024_seoul&utm_content=register&utm_term=808 UNREAL FEST 2024 | SEOUL์–ธ๋ฆฌ์–ผ ํŽ˜์ŠคํŠธ(UNREAL FEST)๋Š” '์–ธ๋ฆฌ์–ผ ์„œ๋ฐ‹'์˜ ์ƒˆ๋กœ์šด ๊ธ€๋กœ๋ฒŒ ๋ธŒ๋žœ๋“œ์ž…๋‹ˆ๋‹ค.epiclounge.co.kr ์ตœ๊ทผ ๋น„๊ต์  ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ์ƒ๊ฒจ, ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ๋ถ„์•ผ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋˜ ์ค‘ ์ข‹์€ ๊ธฐํšŒ๋กœ ์–ธ๋ฆฌ์–ผ ํŽ˜์ŠคํŠธ์— ์ฐธ๊ฐ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.์˜จ๋ผ์ธ์œผ๋กœ ๋ฌด๋ฃŒ๋กœ ์‹œ์ฒญํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ง์ ‘ ํ˜„์žฅ์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ๋Š๋ผ๊ณ  ์‹ถ์–ด์„œ ์˜คํ”„๋ผ์ธ ํ–‰์‚ฌ์— ์ฐธ์„ํ•ด ๋ณด์•˜๋‹ค.์–ธ๋ฆฌ์–ผ ํŽ˜์ŠคํŠธ๋Š” ์–ธ๋ฆฌ์–ผ ์—”์ง„๊ณผ ์—ํ”ฝ๊ฒŒ์ž„์ฆˆ์˜..
OAuth ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ์‹œ ์•ก์„ธ์Šค ์ฐจ๋‹จ ์˜ค๋ฅ˜, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์„ค์ •ํ•˜๊ธฐ
ยท
์—๋Ÿฌ๋ชจ์Œ์ง‘
https://velog.io/@da_na/OAuth2-๊ตฌ๊ธ€-๋กœ๊ทธ์ธ-์—ฐ๋™-์—๋Ÿฌ-ํ•ด๊ฒฐ์ฑ…  ์•ก์„ธ์Šค ์ฐจ๋‹จ๋จOAuth ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ์„ค์ • ํ›„ ๋กœ๊ทธ์ธ์„ ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ์œ„์™€ ๊ฐ™์€ ๋กœ๊ทธ์ธ ๋ถˆ๊ฐ€ ํ™”๋ฉด์ด ๋‚˜์™”๋‹ค.  ์˜ค๋ฅ˜ 400: redirect_uri_mismatch  https://console.cloud.google.com/apis/dashboard Google ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ๋กœ๊ทธ์ธ Google ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์œผ๋กœ ์ด๋™accounts.google.com ๊ตฌ๊ธ€ ์ฝ˜์†” ๋Œ€์‰ฌ๋ณด๋“œ ํŽ˜์ด์ง€๋ฅด ๋“ค์–ด๊ฐ€ ์•„๋ž˜ ๋‚ด์šฉ์„ ํ™•์ธํ•ด๋ณด๋„๋ก ํ•œ๋‹ค.API ๋ฐ ์„œ๋น„์Šค → ์‚ฌ์šฉ์ž ์ธ์ฆ์ •๋ณด → OAuth ํด๋ผ์ด์–ธํŠธ ์ˆ˜์ • → ์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI  spring: security: oauth2: client: registra..
8์›”๋‹ฌ ํšŒ๊ณ 
ยท
TIL/ํšŒ๊ณ 
์ž๊ฒฉ์ฆ ์‹œํ—˜๊ณต๋ถ€์ œ๋ฐœ..!! ์ด๋ฒˆ์—๋Š”!!์˜์–ด๊ณต๋ถ€๊พธ์ค€ํžˆ ๋งํ•ด๋ณด์นด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์˜์–ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ํ•™๊ต ๋‹ค๋‹ ๋•Œ๋Š” ๊ณต๋ถ€ํ•˜๊ธฐ ์‹ซ์—ˆ๋Š”๋ฐ ์Šค์Šค๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ์–ด์ง€๋‹ค๋‹ˆ ์‹ ๊ธฐํ•˜๋‹ค. ์ด๋ฒˆ ๋‹ฌ๋„ ๋งํ•ด๋ณด์นด๋ฅผ ๊พธ์ค€ํžˆ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋‹ฌ ๊ฐœ๊ทผ! ์ทจ๋ฏธํ™œ๋™์ทจ๋ฏธ ํ™œ๋™์„ ๊พธ์ค€ํžˆ ํ•˜๊ณ  ์žˆ๋‹ค. ๋‘ ์นซ๋”ฐ์น˜ ๋ ˆ์Šจ์„ ์ฃผ 2ํšŒ ์ง„ํ–‰ํ•˜๊ณ , ์—ฐ์Šต์€ ์˜ค์ „ ์ผ์ฐ ์ฃผ 4ํšŒ 2์‹œ๊ฐ„์”ฉ ํ•˜๊ณ  ์žˆ๋‹ค. ๊ธฐ์™• ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ ์ž˜ ์น˜๊ณ  ์‹ถ๊ณ  ๋…ธ๋ž˜ ํ•˜๋‚˜๋ฅผ ์™„๊ณกํ•˜๊ณ  ์‹ถ์–ด์„œ ์—ฐ์Šตํ•˜๋Ÿฌ ๊ฐ„๋‹ค. ์ฒ˜์Œ์—๋Š” ์†๊ณผ ๋ฐœ์ด ๋ฒ„๋ฒ…๊ฑฐ๋ ธ์ง€๋งŒ ์ด์ œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์›€์ง์ด๊ณ  ๋ฐ•์ž๊ฐ์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ์žฌ๋ฏธ์žˆ๋‹ค.๋˜ ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ๋ฃจํ‹ด์œผ๋กœ ํ•„์‚ฌ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ์‹ ๋ฌธ ์ปฌ๋Ÿผ์„ ํ•„์‚ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ๋ฌธ์žฅ์„ ์™ธ์›Œ์„œ ํ•„์‚ฌ๋ฅผ ํ•˜๋Š”๊ฑด๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์ง€ ์•Š๋‹ค.  ์ปจํผ๋Ÿฐ์Šค์–ธ๋ฆฌ์–ผ ๋ถ„์•ผ ์ปจํผ๋Ÿฐ์Šค์— ์ฐธ์—ฌํ–ˆ๋‹ค. ์•„๋ž˜ ํ›„๊ธฐ  ์–ธ๋ฆฌ์–ผ..
๋ž˜๋‹ˆ
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก