Nginx 웹서버에 ssl을 연결하는 것을 시도하다가 에러를 만났다.

나중을 위해 오답노트를 작성해본다.

 

기존에 Certbot이라는 무료 인증서를 사용했지만 해당 인증서는 3개월마다 갱신해야하는 수고로움이 있었다.

자동화하는 방법도 있지만, 자동화하지 않고 3개월에 한 번씩 갱신을 했었는데,

 

해당 사이트를 위해 카페24에서 인증서를 구매했다는 사실을 최근에 알게되었다.

유료 인증서를 연결해보기로 했다.

우측 상단에  나의서비스관리 를 클릭하고

탭에서 인증서관리를 선택하면 인증서를 다운로드 받을 수 있었다.

아파치 웹서버는 아니지만, 상관없다.

개인키, 인증서, 중개자인증서, 체인인증서 이렇게 4개의 파일을 다운로드 받을 수 있다.

처음에는 4개 파일 모두 파일 다운로드 받아야한다고 생각했는데

개인키와 인증서 2개의 파일만 다운로드 받으면 된다~!

 

해당 파일을 다운로드 받고, FTP를 활용해서 서버로 옮겼다.

서버에서 적당한 위치에 인증서를 옮기고,

 

docker bind volume을 활용해서 Nginx 콘테이너까지 전달했다.

 

그런데, 계속 비밀키가 맞지 않다는 에러가 나는 것이다.

PEM_read_bio_PrivateKey() failed

 

나의 사수인 ChatGPT에게 물어봤고, SSL key에 암호화된 것을 풀면 된다는 솔루션을 알려줬다.

openssl rsa -in <key_file_path> -out <out_path>

rsa 방식으로 암호화 해지를 진행하니 비밀번호를 입력하라고 나오는 것이다.

 

처음에는 cafe24에 seal code라는게 있어서 그것을 해봤지만, 안되었고

cafe24 로그인할 때 사용했던 비밀번호를 입력하니 복호화가 되었다.

 

해당 파일을 다시 Nginx로 전달하니 드디어 성공할 수 있었다~!!

 

오늘도 하나 배웠당. 굳

2023년 8월 23일부터 25일까지 부산 코모도호텔에서 SW테스트 경진대회에 참가하고 장려상을 수상했다.


대회 당일, 아침부터 순천에서 부산으로 이동하게 되었다.

팀원을 픽업하고 부산으로 이동하면서, 대회에서 어떻게 해야할지 이야기를 나눴다.

운전을 하고 올라가면서 어떻게 효율적으로 테스트할 수 있을지 고민한 시간이 있어서 다행이다.

부산에 도착해서 부산의 명물인 밀면을 점심 메뉴로 선택했다.

많은 사람들이 줄을 서서 식사하는 모습을 보고 맛집의 기운을 느낄 수 있었다.


점심 식사 후, 부산 코모도 호텔로 이동했다. 

도착하여 접수를 한 후, 곧 있을 대회를 준비했다. 호남권으로 참가한 우리팀은 노란 티셔츠로 환복했다.

처음이라 떨리고 다소 긴장한 모습으로 입장 전 대기를 하고 있다.


첫번째로 테스트할 SW는 "Lingory" 라는 한국어 학습 어플리케이션이었다.

안드로이드 환경과 아이폰 환경에서 모두 테스트를 진행하고, 결함보고서를 작성하게 되었다.

팀원과 처음 호흡을 맞춰 작업하면서 당황도 많이 했고, 속도도 늦었다.

철저하게 더 연습했더라면, 더 좋은 성적을 낼 수 있었을 텐데라는 아쉬움이 남았다.

대회가 네트워크 문제로 1시간 딜레이되면서 밤 11시가 되서야 종료되었다.

호텔룸으로 복귀하여 어떤 부분에서 문제였는지 서로에게 피드백을 주고, 반성하는 시간을 가졌다.

중간중간 간식들과 주어지는 식사들이 아주 만족스러웠고, 호텔 시설과 서비스가 좋아서 편하게 휴식할 수 있었다.


둘째날 아침을 먹고, 대회장에 입성하게 되었다.

두번째로 테스트하는 소프트웨어는 "Beluv" 유아 용품 성분 분석 서비스와 육아 관련 콘텐츠 및 온라인 쇼핑몰이었다.

이미 서비스를 유지하고 투자까지 받은 서비스라서 그런지 정말 다양한 기능들이 있었고, 아이폰 환경은 테스트 안하고 안드로이드 환경만 테스트하는데도 시간이 모자를 정도로 기능들이 많았다.

이번 AI 기술들이 도입되면서 테스트를 전체적으로 진행하는 것 같았다.

첫째 날보다는 훨씬 작업하는 것이 수월했다. 전날 피드백을 바탕으로 작업과정을 더 효율적으로 수정했고, 캡쳐한 사진에서 어떤 부분이 잘못되었는지 마킹까지 하면서 디테일을 살렸다.

대회를 종료하면서, 첫째날과 둘째날 결함보고서를 상당한 내용으로 작성했다고 자체적으로 평가했다.


일단 이렇게 대회를 마치고 나서, 부산에서의 자유 시간이 주어졌다.

호텔에서 저녁 식사를 먼저 하고, 잠시 휴식을 취하다가 부산까지 와서 부산 음식을 안 먹어 볼 수 없었기 때문에 몸은 지쳤지만 밖으로 나갔다.

대회의 아쉬웠던 점과 결과가 어떻게 나올지 기대하는 마음으로 부산의 밤을 즐겼다.

부산의 포장마차에서 내리는 비를 보면서 꼬물꼬물 산낙지를 먹었다.


셋째 날, 강연을 듣고, 각 권역별로 레크레이션을 진행했다.

호남권역 인재들이 센스있게 잘 해줘서 재미있게 참여했고, 대회 스태프분들이 마지막 게임에서 정말 잘해주셔서 운이 좋게도 호남권에서 상품을 추가로 받을 수 있었다. 감사합니다~!!


이어서 시상식이 진행되었다.

상을 못받는 것은 아닌지 걱정을 많이 했다. 다행히도 장려상을 수상할 수 있었다.

장려상을 받았다는 건 순위상으로 전체 80개팀에서 10등 안에는 들었다라는 것이고, 처음 출전한 대회이지만 수상하게 되어 신나는 마음으로 시상대로 나갔다.


 

[회고]

- 테스트 경진대회는 고도의 집중력과 체력을 요구한다. 장시간 동안 몰두할 수 있는 힘이 있어야 한다. 물론 중간중간 쉴 수도 있었겠지만, 경진대회 진행 중에는 거의 쉬지 않고 몰두하게 되었다.

- 우리 팀의 테스트는 단순하고 1차원적인 테스트였던 점이 아쉽다. 철저히 사용자 위주의 테스트였다.

- 버튼을 클릭하고, 기능이 잘 구현되는지를 확인하는 것만으로도 시간이 부족했다.

- 다른 우수팀들은 어떻게 테스트를 하는지 궁금해졌다.

- 보안적인 이슈를 잡는다거나 테스트 결함 보고서를 작성하는 스킬이나 아쉬움이 남는다.

- 우리팀은 준비를 철저히 했다.

- 블루투스 키보드를 챙겨가서 휴대폰과 연결하고, 테스트를 더욱 수월하게 할 수 있었다.

- 클라우드를 활용해서 휴대폰 캡쳐가 되자마자 노트북으로 백업하여 에러 코드와 캡쳐 사진을 잘 관리할 수 있었다.

- 이런 테스트 대회를 진행하면서 고퀄리티의 인력으로 정밀 테스트를 받을 수 있다는 것이 놀라웠다. 언젠간 내가 만든 소프트웨어도 이런 대회나 전문가들에게 테스트를 받아볼 날이 오지 않을까라는 생각을 했다.

기회가 된다면, 다음에는 더 철저히 준비해서 다시 한 번 참가해보고 싶다!

준비해주신 스탭분들과 관계자분들 정말 감사드립니다. 좋은 경험으로 한층 성장할 수 있었습니다!!

전체 PDF 자료!

 

개발환경 세팅(WSL CUDA 설치).pdf
1.34MB

 

1. 문제의 발단

 

- 기존 프로젝트 개발을 클라우드 서버에서 Linux OS로 개발
- CUDA가 세팅 되어있는 가상 환경을 받아서 사용
- 개발 환경 세팅의 어려움없이 이용
- Windows OS PC에서 개발환경 설정 → 경로 오류 발생으로 개발 지연 발생

 

2. 사용된 하드웨어 스펙

- CPU: Intel i9-10850K
- GPU: NVIDIA GeForce RTX 3090
 

3. 문제해결을 위한 고민

- Windows OS에서도 동작 가능하도록 경로를 모두 수정하는 방법

- Linux OS의 가상머신(Virtual Machine)을 구축하는 방법

- WSL을 활용하여 Windows에서 Linux환경을 구축하는 방법

 

4. 문제해결 방법 선택

1. Windows OS에서도 동작 가능하도록 경로를 모두 수정하는 방법

 => 하드코딩 되어있는 부분이 많아 경로를 수정하는데 시간이 많이 소요

2. Linux OS의 가상머신(Virtual Machine)을 구축하는 방법

 => 가상머신 프로그램에서 Computing Cost가 과다하게 발생할 것으로 예상

3. WSL을 활용하여 Windows에서 Linux환경을 구축하는 방법

 => CUDA를 잘 설치할 수 있을까? 의문이 들었지만, 시도해보기로 결정!

5. WSL 설치 에러

- PowerShell에서  wsl --install” 하면 설치가 됩니다!
- WSL (Windows Subsystem for Linux) 설치 오류 발생 !
- Error: 0x80370102 필요한 기능이 설치되어 있지 않아 가상 머신을 시작할 수 없습니다.
[참고URL]

- 설치 하는 중 에러가 발생한다면 확인해야 할 것들!
- BIOS에서 가상화가 사용되고 있는지 확인
-BIOS에서 가상화가 사용되고 있는지 확인(추가 예시)
 
-SVM Mode 활성화로 변경 필요!
 

 

6. WSL 전용 그래픽 드라이버 설치

- Windows의 하위 시스템이므로 Windows에 설치된 그래픽 드라이버를 사용할 수 있을 줄 알았지만, 그것은 역시나 착각
- WSL 전용 그래픽 드라이버 설치 필요!!
[설치 링크]

8. GPU 인식 실패

- WSL 전용 그래픽 드라이버와, WSL 전용 CUDA를 설치 했지만,
 
- 매뉴얼대로 설정했으나, 그래픽 카드가 인식 실패?
 
- 아무리 해도 안 돼서 쉴 겸..

- 로스트아크 실행해보니, 렉이 발생하는 것을 확인
- 컴퓨터 사양에 렉이 걸리는 것에 이상함 감지!
- 장치 관리자 디스플레이 어댑터 목록에 외장 그래픽 카드가 표시되지만 설정이 안 되는 것을 확인!
-본체 뒷면을 확인해보니, 모니터 선이 내장 그래픽 포트에 연결된 것을 확인!
-외장 그래픽 포트에 연결하니 정상적으로 작동!!

 

9. torch.cuda.fail, nvidia-smi 명령어 안됨 현상

- 이제는 될 때가 되지 않았니??
- 여전히 torch.cuda.fail, nvidia-smi 안됨 현상
- 에러 메시지

 

[폭풍 구글링 후 참고 링크]
-https://pbsquid.tistory.com/entry/WSL-Cuda-WSL-환경에서-실행하기-1-WSL에서-Cuda-사용
 

[WSL] Cuda WSL 환경에서 실행하기-3 : WSL에서 Cuda 사용

1. Nvidia Container Toolkit 설치 우분투에서 아래명령어 차래대로 실행 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add..

pbsquid.tistory.com

- Windows 업데이트가 필요하다!
- 업데이트 링크[웹에서 최신 업데이트가 필요합니다. 해당 링크를 활용하세요!]
 

Windows 10 다운로드

Windows 10용 ISO 파일을 다운로드한 경우, 해당 파일은 선택한 위치에 로컬로 저장됩니다.컴퓨터에 타사 DVD 굽기 프로그램이 설치되어 있으며 해당 프로그램을 사용하여 설치 DVD를 만들려는 경우,

www.microsoft.com

 

10. torch.cuda.is_available() == True

-드디어 True!!
-느낀점

이렇게 다양한 에러를 경험했지만 끝까지 포기하지 않고 목표를 달성했습니다.

디버깅 과정을 상세히 기록하여 다음에도 활용할 수 있도록 했으며,

해당 문서가 다른 개발자 분들에게 도움이 되길 바랍니다.

 

부록. CUDA Out of Memory 개선

- 같은 스펙의 PC에서 프로그램이 정상적으로 동작했는데,
- 다른 PC에서는 CUDA Out of memory 발생
- cuda pin memory = False
 
[참고 링크]

https://discuss.pytorch.org/t/when-to-set-pin-memory-to-true/19723
 

When to set pin_memory to true?

From the imagenet example: train_loader = torch.utils.data.DataLoader( train_dataset, batch_size=args.batch_size, shuffle=(train_sampler is None), num_workers=args.workers, pin_memory=True, sampler=train_sampler) val_loader = torch.utils.data.DataLoader( d

discuss.pytorch.org



https://discuss.pytorch.org/t/using-pined-memory-causes-out-of-memory-error-even-though-batch-size-is-set-to-low-values/30602
 

Using pined memory causes out-of-memory error even though batch size is set to low values

I am fine-tuning on a custom dataset using ResNet. I have met with this strange issue. When I try to train the model, I see the following error message: THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1535491974311/work/aten/src/THC/THCCachingHostAlloca

discuss.pytorch.org



https://cvml.tistory.com/24
 

num_workers & pin_memory in DataLoader

pytorch를 이용해 딥러닝 모델을 학습시킬 때 custom dataset을 이용할 경우 torch.utils.data.Dataset으로 데이터셋을 정의하고(input data type, augmentation 등) torch.utils.data.DataLoader로 어떻게 데이터..

cvml.tistory.com

 
- cuda pin memory = False

연산을 빠르게 해주고, 미리 올려놓고 하는 방법으로 알고 있다.

개발환경 세팅 중 에러가 발생했다.

tensorflow 설치를 진행하고 프로그램 시작을 하니 다음과 같은 에러가 발생했다.

 

tensorflow.python.framework.errors_impl.AlreadyExistsError: Another metric with the same name already exists.

 

[해결방법]

tensorflow와 keras가 연동되어 버전이 맞지 않으면 발생하는 문제이다.

세팅한 개발환경에서는 tensorflow==2.6.0을 사용하였는데, keras도 2.6.0을 맞춰주었다.

pip install keras==2.6.0

 

[참고링크]

https://precommer.tistory.com/76

 

AlreadyExistsError: Another metric with the same name already exists.오류

환경 오류로 "Another metric with the same name already exists." 라는 오류가 뜨는 경우는 keras가 두개 이상 설치되어 있는경우이다. 해결 방법은 keras를 uninstall 하고나서 재 설치 하면 된다. 1. keras를..

precommer.tistory.com

 

hydralit을 사용하는 도중 불편한 것이 발견되어 오래 사투하게 되었다.

streamlit으로 spinner를 사용하면 불필요한 hydralit의 loader 3개씩이나 뜬다는 것이다!

관련 구글링을 아무리 해봐도 찾지 못해 답답했다.

우연히 함수들을 찾아보다가 발견해버렸다!

 

수정해야할 코드 위치

/opt/conda/lib/python3.8/site-packages/hydralit/loading_app.py

import streamlit as st
from hydralit_components import HyLoader, Loaders
from hydralit.app_template import HydraHeadApp

class LoadingApp(HydraHeadApp):

def run(self,app_target):

    try:
        app_title = ''
        if hasattr(app_target,'title'):
            app_title = app_target.title

        # with HyLoader("Now loading {}".format(app_title), loader_name=Loaders.standard_loaders,index=[3,0,5]):
        app_target.run()
  
    except Exception as e:
        raise e

 

 

[StackOverFlow에 답글 달아주기]

https://stackoverflow.com/questions/71652864/how-to-remove-the-animated-loader-from-hydralit-streamlit

 

How to remove the animated loader from hydralit (streamlit)?

I am using Streamlit to build a web app and with Hydralit I was able to use the multipage function. However, the function came with an animated loader that I would like to remove. What command can ...

stackoverflow.com

아무도 답변하지 않는 질문에 처음으로 댓글을 달아보았다.

도움이 되면 좋겠다.

Streamlit으로 프로토타입 구현 중 에러가 발생했다.

  File "/opt/conda/envs/lib/lib/python3.8/site-packages/streamlit/scriptrunner/script_runner.py", line 475, in _run_script
    exec(code, module.__dict__)
  File "/opt/ml/input/code/project/pipeline/zzolflix.py", line 4, in <module>
    import hydralit as hy
  File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/__init__.py", line 5, in <module>
    from hydralit.hydra_app import HydraApp
  File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/hydra_app.py", line 4, in <module>
    from hydralit.sessionstate import SessionState
  File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/sessionstate.py", line 8, in <module>
    from streamlit.script_run_context import get_script_run_ctx
ModuleNotFoundError: No module named 'streamlit.script_run_context'

라이브러리를 설치하고, hydralit까지 설치해서 가장 기본적인 앱을 실행시켰는데, 해당 에러가 나왔다.

hydralit은 streamlit에 영향을 받는 라이브러리인 것 같다.

streamlit에 버전에 따라 hydralit쪽에서 에러가 발생할 수 있다.

 

[해결방법]

File "/opt/conda/envs/lib/lib/python3.8/site-packages/hydralit/sessionstate.py", line 8, in <module>

이 경로로 이동한 뒤, 소스를 직접 수정해주어야 한다.

#v1.7.0
from streamlit.script_run_context import get_script_run_ctx
#v1.8.0
from streamlit.scriptrunner.script_run_context import get_script_run_ctx

내가 테스트 한 버전은 streamlit==1.9.0 이었다.

그래서 후자로 변경하였더니 에러가 해결되었다.

 

[참고링크]

https://discuss.streamlit.io/t/streamlit-script-run-context-gone-with-1-8/23526/2

 

Streamlit.script_run_context() gone with 1.8?

I have the same problem, it breaks this code here:

discuss.streamlit.io

https://stackoverflow.com/questions/70813915/error-importing-hydralit-modulenotfounderror-no-module-named-streamlit-repor

 

Error importing hydralit: "ModuleNotFoundError: No module named 'streamlit.report_thread'"

I installed Hydralit, but when I try to import I get the following error: "ModuleNotFoundError: No module named 'streamlit.report_thread'". Interestingly I can import and use

stackoverflow.com

 

pyaudio library 설치에서 에러가 발생했다.

pip install pyaudio

 

에러 메세지를 타이틀만 기록해서 상세한 에러 메세지는 stackoverflow에서 가지고 왔다.

Searching for pyaudio
Reading http://pypi.python.org/simple/pyaudio/
Reading http://people.csail.mit.edu/hubert/pyaudio/
Best match: pyaudio 0.2.4
Downloading http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.4.tar.gz
Processing pyaudio-0.2.4.tar.gz
Running PyAudio-0.2.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-0Tetss/PyAudio-0.2.4/egg-dist-tmp-PYy9T8
In file included from /usr/include/python2.7/Python.h:8:0,
                 from src/_portaudiomodule.c:30:
/usr/include/python2.7/pyconfig.h:1155:0: warning: "_POSIX_C_SOURCE" redefined
/usr/include/features.h:214:0: note: this is the location of the previous definition
src/_portaudiomodule.c:31:23: fatal error: portaudio.h: No such file or directory
compilation terminated.
error: Setup script exited with error: command 'gcc' failed with exit status 1

 

해결방법

apt-get install portaudio19-dev -y

 

참고 링크

https://stackoverflow.com/questions/5921947/pyaudio-installation-error-command-gcc-failed-with-exit-status-1

 

Pyaudio installation error - 'command 'gcc' failed with exit status 1'

I'm running Ubuntu 11.04, Python 2.7.1 and wanted to install Pyaudio. So I ran, $ sudo easy_install pyaudio in the terminal and the process exited with following error messages, Searching for py...

stackoverflow.com

 

최근 미니프로젝트를 진행하면서 electron을 사용하게 되었다.

일렉트론에서 console.log("한글") 과 같이 한글을 출력하고자 하였는데, 물음표로 cmd 창에 도배가 되었다.

문제의 화면이다.

일단 해결방법!

chcp 65001

해당 명령어를 electron 앱 시작 명령어를 치는 cmd 창에서 입력하면 된다!

그렇게 하면  Active code page :  65001 이라고 나타나게 된다.

chcp가 UTF-8로 적용된듯 하다.

 

기본적인 Nodejs에서는 한글 출력이 원활하였으나,

electron으로 앱을 제작했을 때, 한글이 출력되지 않아 당황스러웠다.

electron에서 한글 언어팩을 지원하지 않거나, 대략적으로 encoding 문제였을 것이라고 짐작하고 있었지만 해결방법을 몰라 2주정도 헤메이게 되었다.

stackoverflow에 글도 작성했다. ㅋㅋㅋ 

https://stackoverflow.com/questions/70999781/electron-app-console-log-output-is-question-marks-when-i-printed-korean-characte

 

Electron app console log output is question marks when i printed korean character

I faced some problems. I want to print out Korean character in my electron app. But it printed out only question marks.. Could you tell me how to print out different language in electron app? Here ...

stackoverflow.com

 

카카오톡 오픈채팅방에서 electron 개발 하시는 분들 단톡방에 들어가서 해결 방법을 알게 되었다.

[추가 검색 출처]

https://mins01.github.io/tech-916-post/

 

chcp (윈도우 cmd 창 언어셋 설정)

C:\>chcp /?Displays or sets the active code page number.

mins01.github.io

  • chcp 437 : 영문
  • chcp 949 : 한글(확장완성형)
  • chcp 65001 : UTF-8

 

+ Recent posts