신규 플젝에 투입되면서 공통 웹 개발파트를 맡게 되었다. 그놈의 웹개발은 그만하고 싶긴 한데, 하라면 해야지 뭐. 아무튼, 공통부라길래 그냥 공통 컴포넌트 정도 만지작거릴 줄 알았는데 그게 아니었고, 이번에 많이 배우는 듯 싶다.
서론 . tiles 추가하기에 앞서
현재 전자정부 프레임워크 4.2 버전을 사용중이다.
SI를 하건 뭘 하건 대부분의 웹 페이지는 다음과 같은 레이아웃 구조를 가지고 있다.
저기서 상단의 Header , 좌측의 Nav, 하단의 Footer는 고정형 이미지이며 Body는 개발자들이 만들어내는 업무페이지라고 보면 된다. 처음에는 Header / Nav / Footer에 해당하는 JSP를 각각 만들고 Include하는 방식으로 생각했었는데 이거 아무리봐도 나이스하지가 않단말이다. 무슨 말이냐 하면,
1
2
3
4
5
6
7
8
9
10
11
<divclass="root-container">
<%@ include file="/WEB-INF/jsp/commons/commLeft.jsp"%><!-- 좌측 메뉴 -->
<divclass="container-wrap">
<%@ include file="/WEB-INF/jsp/commons/commNav.jsp"%><!--슬라이드 메뉴 -->
</div>
<!-- 요약을 많이 했지만 jsp 화면 컴포넌트가 여기들어감. -->
<divclass="footer-container">
<%@ include file="/WEB-INF/jsp/commons/commFooter.jsp"%><!-- 하단 푸터 -->
이렇게 모든 공통 레이아웃들을 저렇게 주저리주저리 include해야 한다. 우리는 상단의 이미지와 같이 심플한 구조가 아니라 공통 헤더, 공통 타이틀, 공통 네비게이터, 공통 슬라이드 네비게이터, 공통 인피니트탭, 공통 푸터 까지 있으니 위와 같은 방식으로 include file하려면 여섯개는 더 있어야 한다.
가장 큰 문제는 무어냐, 저 포맷을 고대로 갖다 써서 수많은 div태그를 뚫고 업무 화면을 그려내면 좋으련만, 저건 아주 극도로 축약한 div 태그들일 뿐이고 실제로는 약 100여줄에 가까운 태그들이 난무를 하고 있다는거다.
그럼 당연히 개발자의 실수 하나로 레이아웃이 모조리 깨지기도 하고 가독성도 너무 구려서 개발 난이도가 올라간다. 이럴때 무엇을 쓴다? apache tiles다.
tiles를 적용함으로 인해 공통으로 사용하는 레이아웃은 그대로 공통부에서 처리하고 업무 화면을 지정한 div태그의 어딘가에 끼워넣는 개념이라고 보면 된다. 즉, tiles로 사전에 레이아웃을 설정하고 특정 영역만 호출하는 개념이다. 이마리야.
1. tiles 적용 - pom.xml
tiles를 적용하기에 앞서 기본적인 레이아웃에 대한 작업은 퍼블리셔분께서 작업해주셨다고 가정한다. 이것까지 하다간 난 죽을지도 모른다. 아무튼, pom.xml에 다음과 같이 추가했다. GPT는 몇개 안넣어줬는데 돌려보니 계속 오류가 나서, 보태보태 병에 걸려 저렇게까지 추가하고 성공함.
dispatcher-servlet에 tiles관련 설정을 넣어준다. 동시에, 모든 view호출은 tiles 우선으로 처리하도록 (그래야 레이아웃이 먹으니) p:order를 0으로 주고, 기존의 view Resolver설정을 유지함과 동시에 후순위(나는 3순위로)로 설정한다.
이게 끝이 아니다. 우리는 Controller 에서 url을 호출하는 부분도 수정해야 한다.
5. 공통 컨트롤러 수정
나는 위에서 site/*/*/* 형태로 설정했다. 이 말은, ModelAndView 에서 return 하는 uri에 대해 tiles definition이 가로채서 WEB-INF/jsp/{1}/{2}/{3}.jsp 에 있는 jsp를 리턴해준다는 의미이다.
기존에 설정된 viewResolver도 동일하다. 하지만 내가 설정한 것은 site/를 반환하도록 되어있으니, 공통부 ModelAndView에서도 site/ 형태로 반환해야 한다.
그냥 별거 없이, ModelAndView return시 "site/"를 StringBuilder 에서 append해주면 된다. 이건 개발자 구현 나름이니까.
그래서 최종 형태는 다음과 같아야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public ModelAndView commonVie(HttpServletRequestreq, HttpServletResponse resp
얼마전 알리익스프레스에서 yaml 기반으로 동작하는 매크로 키보드를 구매해서 사용하다가, 본격적으로 커스텀 매크로를 작성해서 사용하면 어떨까? 하는 욕심이 올라왔다. 해당 키보드의 경우에는 키 하나에 대략 5가지의 조합키를 매핑할 수 있었지만, shift 라거나 마우스 클릭과 같은 특수동작 매핑은 불가능했다. 그러다가 결국, 오래전부터 알고지낸(?) QMK/VIA 커스텀 키보드까지 알아보게 되었다.
87배열의 QMK/VIA 커스텀 키보드를 새로 추가해서 사용하기에는 부담스러웠고 그냥 자그만한 매크로 키보드를 구매하고자, 알리익스프레스를 뒤져보았더니 15키 + 3노브 커스텀 키보드가 존재했다. 좋아, 이번 장난감은 이거다.
3Knob+9Key, 1Knob+6Key, 3Knob+15Key 키보드 외에 회사에 1Knob+3Key 키보드도 있다. 대체 커스텀 키보드가 몇개인지원.
이번에는 RGB 뿜뿜하면서 화려하게 즐기고 싶어, 투명 아크릴 하우징으로 된 3Knob + 15Key 조합으로 구매, 말로만 듣던 VIA 부터 세팅해보려고 했으나 여러 문제에 닥치게 되었고, 이하 기본적인 QMK/VIA, VIAL 사용기를 나중에 리마인드하기 위해 작성해보고자 한다.
0. 개념잡기
QMK , VIA, 조금 더 깊게 들어가면 VIAL에 QMK toolbox에 QMK Configurator, 등등 오만잡다한것들이 많다. 일단 기본적인 용도와 개념을 잡고 진행하고자 한다. ( 어느정도 틀린 부분이 있어도 너그럽게 이해 부탁드립니다. )
1. QMK MSYS * Windows 기반 - 키보드 펌웨어 소스코드의 빌드, 이후 결과물은 *.hex 파일이 생성된다 - Mac 기반에서는 QMK MSYS 없이 직접 빌드할 수 있다. 이건 집에서 해봐야지
2. QMK ToolBox - QMK MSYS에서 빌드한 hex 파일을 키보드에 업로드하여Flash(설치) 하기 위한 툴. 키보드의 OS/SW를 설치하는 개념으로 이해하면 편하다
3. VIA / VIAL - https://usevia.com 이라는 VIA 설정 웹 사이트가 있으며, VIAL은 https://vial.rocks 이 존재한다. VIAL 웹사이트 속도가 조금 느려 난 직접 클라이언트를 설치하여 사용중 - VIA 에서 조금 더 기능이 확장된 것으로 VIAL이 존재한다. 일단 직접적인 체감상으로는 VIAL 에서 조금 더 세부적인 설정이 가능했고, 마우스의 키 이벤트를 설정할 수 있다는 점에서 대표적으로 달랐다. - 탭댄스나 콤보와 같은 부가 기능들도 VIAL 에서 설정이 가능했다. - 여기서부터는 사용자가 사용하기 위한 키보드의 설정 단계로, 복잡한거 싫다면 그냥 VIA 에서 직접 설정하고 끝내는것이 제일 좋은듯
4. QMK Configurator - https://config.qmk.fm/ - 키보드의 기본 hex 파일을 생성하는 웹사이트 - QMK MSYS에서 직접 빌드하다가 꼬여서 기본 펌웨어도 못올릴 때, 이 사이트에서 디폴트 hex 파일을 생성해서 QMK ToolBox로 Flash하면 된다 - 물론 여기서도 부가적인 키 매핑등을 이용할 수 있지만, QMK 보다는 VIA가 기능이 더 많고, VIA 보다는 VIAL이 기능이 더 많다
QMK MSYS를 설치하고 실행하면 터미널 창이 하나 열린다. 여기에서 다음과 같이 명령어를 입력한다.
[KimFish@KimFishs-ThinkPad13 ~]$ qmk setup
해당 명령어는 기본적인 qmk 설치를 위한 준비단계로, 꽤 오랜 시간동안 설정이 진행된다.
setup 단계는 대략 다음과 같이 진행된다.
Welcome to QMK MSYS! * Documentation: https://docs.qmk.fm * Support: https://discord.gg/qmk
If you have not already done so, run qmk setup to get started. run qmk compile -kb <keyboard> -km default to start building. run qmk config user.hide_welcome=True to hide this message. [KimFish@KimFishs-ThinkPad13 ~]$qmk setup ☒ Could not find qmk_firmware! Would you like to clone qmk/qmk_firmware to C:/Users/KimFish/qmk_firmware? [y/n] y '/c/Users/KimFish/qmk_firmware'에 복제합니다... Updating files: 0% (145/21779) Updating files: 1% (218/21779) Updating files: 1% (258/21779) Updating files: 1% (340/21779)
(중략)
Updating files: 99% (21728/21779) Updating files: 100% (21779/21779) Updating files: 100% (21779/21779), 완료. 'lib/chibios' 경로에 대해 'lib/chibios' (https://github.com/qmk/ChibiOS) 하위 모듈 등록 'lib/chibios-contrib' 경로에 대해 'lib/chibios-contrib' (https://github.com/qmk/ChibiOS-Contrib) 하위 모듈 등록 'lib/googletest' 경로에 대해 'lib/googletest' (https://github.com/qmk/googletest) 하위 모듈 등록 'lib/lufa' 경로에 대해 'lib/lufa' (https://github.com/qmk/lufa) 하위 모듈 등록 'lib/lvgl' 경로에 대해 'lib/lvgl' (https://github.com/qmk/lvgl.git) 하위 모듈 등록 'lib/pico-sdk' 경로에 대해 'lib/pico-sdk' (https://github.com/qmk/pico-sdk.git) 하위 모듈 등록 'lib/printf' 경로에 대해 'lib/printf' (https://github.com/qmk/printf) 하위 모듈 등록 'lib/vusb' 경로에 대해 'lib/vusb' (https://github.com/qmk/v-usb) 하위 모듈 등록 '/c/Users/KimFish/qmk_firmware/lib/chibios'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/chibios-contrib'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/googletest'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/lufa'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/lvgl'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/pico-sdk'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/printf'에 복제합니다... '/c/Users/KimFish/qmk_firmware/lib/vusb'에 복제합니다... Submodule path 'lib/chibios': checked out 'be44b3305f9a9fe5f2f49a4e7b978db322dc463e' Submodule path 'lib/chibios-contrib': checked out '77cb0a4f7589f89e724f5e6ecb1d76d514dd1212' 'lib/chibios-contrib/ext/mcux-sdk' 경로에 대해 'ext/mcux-sdk' (https://github.com/NXPmicro/mcux-sdk) 하위 모듈 등록 '/c/Users/KimFish/qmk_firmware/lib/chibios-contrib/ext/mcux-sdk'에 복제합니다... Submodule path 'lib/chibios-contrib/ext/mcux-sdk': checked out '102c27d7cc2aaac87c133702e7829a105e0cb433' Submodule path 'lib/googletest': checked out 'e2239ee6043f73722e7aa812a459f54a28552929' Submodule path 'lib/lufa': checked out '549b97320d515bfca2f95c145a67bd13be968faa' Submodule path 'lib/lvgl': checked out 'e19410f8f8a256609da72cff549598e0df6fa4cf' Submodule path 'lib/pico-sdk': checked out 'a3398d8d3a772f37fef44a74743a1de69770e9c2' Submodule path 'lib/printf': checked out 'c2e3b4e10d281e7f0f694d3ecbd9f320977288cc' Submodule path 'lib/vusb': checked out '819dbc1e5d5926b17e27e00ca6d3d2988adae04e' Ψ Successfully cloned https://github.com/qmk/qmk_firmware to C:/Users/KimFish/qmk_firmware! Ψ Added https://github.com/qmk/qmk_firmware as remote upstream. Ψ QMK Doctor is checking your environment. Ψ CLI version: 1.1.6 Ψ QMK home: C:/Users/KimFish/qmk_firmware Ψ Detected Windows 11 (10.0.26100). Ψ QMK MSYS version: 1.10.0 Ψ Userspace enabled: False Ψ Git branch: master Ψ Repo version: 0.27.1 Ψ - Latest master: 2024-12-09 07:34:07 +0100 (847257c3c7) -- Addition of EC TKL X (#24647) Ψ - Latest upstream/master: 2024-12-09 07:34:07 +0100 (847257c3c7) -- Addition of EC TKL X (#24647) Ψ - Latest upstream/develop: None Ψ - Common ancestor with upstream/master: 2024-12-09 07:34:07 +0100 (847257c3c7) -- Addition of EC TKL X (#24647) Ψ - Common ancestor with upstream/develop: None Ψ All dependencies are installed. Ψ Found arm-none-eabi-gcc version 13.3.0 Ψ Successfully compiled using arm-none-eabi-gcc Ψ Successfully tested arm-none-eabi-binutils using arm-none-eabi-size Ψ Found avr-gcc version 14.2.0 Ψ Successfully compiled using avr-gcc Ψ Successfully tested avr-binutils using avr-size Ψ Found avrdude version 7.3-2024041 Ψ Found dfu-programmer version 1.1.0 Ψ Found dfu-util version 0.11 Ψ Submodules are up to date. Ψ Submodule status: Ψ - lib/chibios: 2024-02-17 19:20:06 +0000 -- (be44b3305f) Ψ - lib/chibios-contrib: 2024-04-03 20:39:24 +0800 -- (77cb0a4f) Ψ - lib/googletest: 2021-06-11 06:37:43 -0700 -- (e2239ee6) Ψ - lib/lufa: 2022-08-26 12:09:55 +1000 -- (549b97320) Ψ - lib/vusb: 2022-06-13 09:18:17 +1000 -- (819dbc1) Ψ - lib/printf: 2022-06-29 23:59:58 +0300 -- (c2e3b4e) Ψ - lib/pico-sdk: 2023-02-12 20:19:37 +0100 -- (a3398d8) Ψ - lib/lvgl: 2022-04-11 04:44:53 -0600 -- (e19410f8) Ψ QMK is ready to go [KimFish@KimFishs-ThinkPad13 ~]$
2. QMK MSYS - Git Clone
QMK MSYS 의 설정이 모두 끝났다면 Git에 등록된 키보드 오픈소스 펌웨어를 로컬 리포지토리에 복제해야한다. git 사이트에서 zip으로 압축받는 것은 하위 상관관계의 라이브러리 종속성 문제가 있을 수 있으니 꼭 다음 명령어를 통해 git clone을 수행해야 한다. 다운로드 받고자 하는 경로로 가서 아래의 명령어를 수행한다.
여기까지 했다면 QMK MSYS의 기본 설정과 QMK/VIA 키보드의 펌웨어 준비단계까지 모두 완료된 셈이다.
3. VIA/VIAL 펌웨어 빌드
준비단계가 모두 끝났다면 QMK MSYS에서 펌웨어를 빌드한다. 내가 작업할 키보드는 winry315 키보드로, git 저장소 내에 다음과 같이 펌웨어 소스코드가 존재한다. 다른 키보드도 git에 소스코드가 있다면 같은 방식으로 펌웨어를 찾을 수 있을 것이다.
git clone 경로는 위에서 pwd로 보여지는 경로의 하위에 생성되며, 나의 경우에는 C:\Users\KimFish 에서 git Clone을 수행했기 때문에 해당 경로 하위에 vial-qmk 디렉토리가 생성되어있다. vial-qmk 하위에 keyboards/winry/winry315/keymaps 디렉토리를 찾으면 defaults, left_numpad, vial 디렉토리가 존재하는데 이는 기본 키맵 펌웨어, 왼손 넘버패드 펌웨어, vial 전용 펌웨어로 이해할 수 있다.
각 펌웨어의 설정은 다음 단계에서 알아보기로 하고, 이번에는 VIAL 빌드를 수행한다.
컴파일 명령어는 다음과 같다. 주의할 점은 vial-qmk 디렉토리에서 수행해야 한다는 점이다.
qmk compile -j 8 -kb winry/winry315 -km vial
[KimFish@KimFishs-ThinkPad13 vial-qmk]$ qmk compile -j 8 -kb winry/winry315 -km vial C:/Users/KimFish/vial-qmk/lib/python/qmk/decorators.py:20: UserWarning: cli._subcommand has been deprecated, please use cli.subcommand_name to get the subcommand name instead. if cli.config_source[cli._subcommand.__name__]['keyboard'] != 'argument': C:/Users/KimFish/vial-qmk/lib/python/qmk/decorators.py:40: UserWarning: cli._subcommand has been deprecated, please use cli.subcommand_name to get the subcommand name instead. if cli.config_source[cli._subcommand.__name__]['keymap'] != 'argument': Ψ Compiling keymap with make --jobs=8 --output-sync=target -r -R -f builddefs/build_keyboard.mk -s KEYBOARD=winry/winry315 KEYMAP=vial KEYBOARD_ FILESAFE=winry_winry315 TARGET=winry_winry315_vial VERBOSE=false COLOR=true SILENT=false QMK_BIN="qmk"
avr-gcc.exe (GCC) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Size before: text data bss dec hex filename 0 27306 0 27306 6aaa winry_winry315_vial.hex
구매하고나서는 셀러에게 연락해서 별도 키보드 매핑 프로그램을 전송해달라고 요청해야하는데, 이게 뭐 악성코드가 있을 줄 알고 조마조마한게 한두번이 아닌데다, 프로그램에 따라 다른데 해당 매크로 키보드의 USB 전원을 뽑기라도 하면 그냥바로 초기화가 된다거나 하는 문제가 발생하는게 한두번이 아니다.
내가 구매한 키보드는 다음과 같은 3Key 1Knob 제품이다.
그래서 구글을 뒤져보니 해외 능력자 형님께서 깃헙에 프로그램과 대략적인 사용설명서를 올려두셨다. 깃헙 바로 가보자.
One of the configured repositories failed (Unknown), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the packages for the previous distribution release still work).
3. Run the command with the repository temporarily disabled yum --disablerepo=<repoid> ...
4. Disable the repository permanently, so yum won't use it by default. Yum will then just ignore the repository until you permanently enable it again or use --enablerepo for temporary usage:
yum-config-manager --disable <repoid> or subscription-manager repos --disable=<repoid>
5. Configure the failing repository to be skipped, if it is unavailable. Note that yum will try to contact the repo. when it runs most commands, so will have to try and fail each time (and thus. yum will be be much slower). If it is a very temporary problem though, this is often a nice compromise:
이 내용을 참조하여 신규 서버에 PostgreSQL을 설치한 후, tar 파일을 업로드 한 이후, 다음의 과정을 수행한다.
#자세히 보면 서버가 다르다 [root@93e37f9f73ea lib]# ls alternatives dbus games misc private rpm-state systemd dav dnf httpd pgsql_back.tar portables rpm selinux tpm [root@93e37f9f73ea lib]# [root@93e37f9f73ea lib]# tar -xvf pgsql_back.tar pgsql/ pgsql/.bash_profile pgsql/.bash_history pgsql/.psql_history pgsql/13/ pgsql/13/data/
(중략)
[root@93e37f9f73ea lib]# ls alternatives dbus games misc pgsql_back.tar portables rpm selinux tpm dav dnf httpd pgsql private rpm-state systemd [root@93e37f9f73ea lib]# cd pgsql/13/data [root@93e37f9f73ea data]# ls PG_VERSION log pg_ident.conf pg_replslot pg_stat_tmp pg_wal postmaster.opts base pg_commit_ts pg_logical pg_serial pg_subtrans pg_xact postmaster.pid current_logfiles pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.auto.conf global pg_hba.conf pg_notify pg_stat pg_twophase postgresql.conf
# 이전 서버에서 접속포트를 18081로 설정했는데, 그대로 잘 압축해제 되었는지 확인 # 의도적으로 18081 에서 8084로 변경후 실행해본다. [postgres@93e37f9f73ea data]$ vi postgresql.conf
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) port = 8084 # (change requires restart)
# PostgreSQL 서버 실행 [postgres@93e37f9f73ea data]$ /usr/pgsql-13/bin/pg_ctl -D /var/lib/pgsql/13/data start pg_ctl: another server might be running; trying to start server anyway waiting for server to start....2024-08-21 07:36:04.797 UTC [6143] LOG: redirecting log output to logging collector process 2024-08-21 07:36:04.797 UTC [6143] HINT: Future log output will appear in directory "log". done server started
뭐 그런데 결과가 당연하게도, 잘 구동 되었다.
문제는 기존 PostgreSQL 설정파일의 위치나 데이터베이스 파일, 테이블 스페이스 경로 등이 커스텀화 되지 않았는지 파악하는것이 가장 중요하다.
다음에는 직접 PostgreSQL 서버에 접속 후, 각종 테이블스페이스와 데이터베이스 설정 위치들을 쿼리를 통해 알아볼 예정이다.
The files belonging to this database system will be owned by user "postgres". This user must also own the server process.
The database cluster will be initialized with locale "C.UTF-8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /var/lib/pgsql/13/data ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... Etc/UTC creating configuration files ... ok running bootstrap script ... ok performing post-bootstrap initialization ... ok syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
Docker에서 PostgreSQL을 구동시켰으니 호스트PC인 Windows 에서 DBEaver를 통해 접속하려 한다. 꽤 많은(?) 삽질이 필요했는데, 아래의 방법을 진행하여 연결에 성공했다.
5-1. 접속 포트 설정
현재 Docker는 18081 포트로 포트포워딩이 설정된 상태이다. postgreSQL은 5432 포트가 기본포트이므로, 아래의 설정파일을 편집한다. 모든 과정은 postgres 계정으로 진행한다.
아래 항목 중, listen_address 항목을 모든 IP주소인 '*' 로 설정하고, port는 5432 에서 변경할 포트인 18081로 수정한다.
기본적으로 주석처리가 되어있으므로 주석 또한 해제한다.
postgresql 서버를 재시작해야 설정이 적용된다.
[postgres@82559cbe0973 data] cd/var/lib/pgsql/13/data [postgres@82559cbe0973 data] vi postgresql.conf
(중략)
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) port = 18081 # (change requires restart)
5-2. 외부 접근 허용 정책 설정
외부 접근을 허용하는 정책을 설정하기 위해 같은 디렉토리에 있는 pg_hba.conf 파일을 열어준다.
# replication privilege. local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust host all all 0.0.0.0/0 md5 host all all ::/0 md5
5-3. 기본계정 postgres 비밀번호 설정
어디에선가 본 것으로는 postgres 계정의 비밀번호는 postgres라던데 사실 아니었나보다 -_-;
그래서 직접 접속 후, postgres 계정의 비밀번호를 설정해준다.
위 5-1. 항목에서 5432 포트를 18081로 변경하였기 때문에, 기본 접속 명령어인 psql 명령어가 오류가 나게 된다.
이럴 때에는 당황하지 말고 변경한 포트설정 옵션을 넣어주어야 한다.
(오류 예시) [postgres@82559cbe0973 data]$ psql psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/run/postgresql/.s.PGSQL.5432"?
(포트변경 후 옵션 설정) [postgres@82559cbe0973 data]$ psql -h localhost -p 18081 psql (13.16) Type "help" for help.
postgres=#
접속이 되었다면 아래의 쿼리를 입력하여 비밀번호를 설정해주자.
postgres=# alter user postgres password 'test1!'; ALTER ROLE
그리고 DBEaver 에서 접속하면 정상적으로 접속됨을 확인할 수 있다.
DB를 로컬 Windows PC에는 많이 설치해보고 개발용으로 설정한 적은 많아도, Docker Linux에 세팅한 후 접속해보는 건 처음인것 같다. 여러모로 설정이 많아 헷갈리기도 하고 조금 많이 어렵기도 했다. 실제 Linux 서버에 설치하는건 조금 다를것이고, 보안을 고려한다면 외부 접속 설정 정책 부분도 손을 좀 더 봐야 할 것으로 예상된다. 뭐, 그래도 해본게 어딘가 싶긴 하지만 말이다.