간단한 프로젝트(웹REST로 메모장앱 동기화)가 있는데 (firebase 할꺼 같으냐?)
웹서버야 한다면 PC에 돌리면 되는데 근데 그러면 노상 켜놔야되니까..
홈서버에 올려야한다 시놀로지 나스같은.. (우리집에는 있지만) 근데 이
시놀로지 나스가 돈이 부담이 된다. (제대로 갖추면 100만원 넘게 깨짐)
그래서 이런 ㅈ만한 프로젝트는 라즈베리파이에 다가 올려놔야 되는데..
메모리 대란때 가격이 올라가서 내려오질 않는다. (너까지 장난치냐??)
그래서 대안으로 찾은것이 오렌지파이 제로2이다 알리에서
(하여튼 짱꿔들은 이런거 잘해..) 구매사이트에서
이것저것(본체 쿨링케이스 전원공급 micro-sd카드) 다해서 5만원이면 된다.
micro-sd카드는 32gb class10 이상으로 다가.. read/write 커버 쳐줄라믄..
어째뜬 여기다가 사이드 프로젝트를 올리기 위해 asp닷넷을 시험해따.
(ㅅㅂ 개고생했음..)
결론부터 말하자면 asp.net core 3.1 이하는 하지말고 바로 닷넷 6로 점프해서
프로젝트를 만들어야 한다. 장기지원이고 openssl 3.0 버전을 사용해서
이슈가 별로없다. 나처럼 openssl 1.0 설치고 나발이고 개고생하기 싫으면 바로
프로젝트를 닷넷6로 가시길.. (마이그레이션 하셔.. ㅋㅋ 하지만~
닷넷6로 가기위해 vs2022가 필요하고 vs2022는 윈도우11이 필요하고
윈도우11은 TPM 2.0 이필요하고 그래서 컴퓨터를 새로하나 사야한다는건
함정.. 디아4 나왔으니까 하나 사셔 그냥.. -_-;; )
각설하고 오렌지파이제로2용 암비안OS는 여기서 다운로드 받는다. (다른OS하지마셈)
23년 현재 Bullseye 와 Jammy가 있는데
Jammy로 다운로드 해서 etcher로 플레싱 했다. (Bullseye는 실패함)
랜선연결하고 nmap같은툴로 ssh(22번)포트열고있는 아이피를 찾아서 putty로 연결한다.
(공유기 같은 DHCP 서버가 있는 단말기 밑에다가 둬야함)
처음연결하는 계정은 root 이고 비번 1234 이다.
이후 bash커맨드 설정하고 계정을 하나만들고
(헷갈리지 않기 위해서 orangepi / orangepi 로 했다)
타임존은 Asia/Seoul 로 설정하고 로케일은 ko_KR.UTF-8로 설정하고
orangepi 계정으로 재접속한다.
이넘들은 기본적으로 vi도 설치를 안해놓기 때문에
[기본 업데이트 & 기본유틸설치]
sudo apt-get update
sudo apt-get install vim
sudo apt install net-tools
sudo apt install apt-transport-https
sudo apt upgrade
요로코롬 해서 일단 업데이트하고 기본유틸까지 설정한다.
그리고 실행파일을 옮겨야되니까. ftp 데몬을 설치해야한다.
[ftp 데몬설치]
sudo apt-get install vsftpd
sudo vi /etc/vsftpd.conf
로 들어가서
local_enable=YES
write_enable=YES
로 주석제거하고 저장한다음
sudo service vsftpd restart
로 재실행한다.
그러면 이제 파일질라로 접속할수 있다. ㅇㅇ
이제 닷넷 6런타임을 설치해야한다.
그전에 서버에 올릴 파일을 배포상태로 빌드한후 준비한다.
(오렌지파이 암비안은 64비트 니까 target은 arm-linux64 이고 self-contain으로
의존성없이 빌드를 해놓는다.)
그리고 프로젝트에서 아예포트를 지정해서 빌드하는 것이 좋다.
appsettings.json 에서
"AllowedHosts": "*", 다음줄에 "Urls": "http://*:8080" 이렇게 써넣으면
8080번 포트로 열린다. (미리 해놓자 안하면 localhost로만 접속되는 불상사가 펼쳐진다)
[닷넷 6런타임설치]
이게 일반적인 우분투에서 닷넷환경 설치하는 방법으로는 힘들고
arm64용 닷넷 런타임을 바로 받아서 설치하는 방법으로 가야한다.
[파일받고 asp-dotnet runtime 6.0]
wget https://download.visualstudio.microsoft.com/download/pr/5fe35f73-59e4-462e-b7aa-98b5b8782051/74a27e03d896663a9483eb72bc59b275/aspnetcore-runtime-6.0.16-linux-arm64.tar.gz
[dotnet host설치 - /usr/bin/dotnet 에 등록까지 해줌..]
sudo apt install dotnet-host
[dotnet --info 해보면 알맹이가 없으까 아까 받은놈으로 압축풀어서 박아줌]
sudo tar -zxf aspnetcore-runtime-6.0.16-linux-arm64.tar.gz -C /usr/lib/dotnet
[이렇게하고 다음으로 확인해보면]
dotnet --info
------------------------------------------------
version: 6.0.16
architecture: arm64 ... 불라불라 하고 나옴 (닷넷런타임설치됨)
------------------------------------------------
[Bitmap 관련 라이브러리 써야되는 사람들은 지지지난 포스트처럼 설치하지말고 SixLabors.ImageSharp 라이브러리를 이용해서 이미지를 핸들링하게 코드를 변경 해야한다. 그러면 System.Drawing.Common 의 Image에 종속없이 이미지의 수정(회전, 리사이즈, 워터마크 등등)을 가할수 있다. 모노 프레임워크용 gdiplus는 우분투에서는 동작하지만 암비안에서 라이브러리가 작동하지 않는듯 하다.]
ftp로 실행화일을 [home/사용자이름/프로젝트이름] 으로 복사하고
프로젝트 폴더에서 dotnet 프로젝트명.dll 이라고 실행하면 서버시작되고
이렇게 하면 드디어 ㅜ.ㅜ 웹브라우저로 접속 가능하다~
nohup 으로 ssl 상에서 실행하고 나와도 되지만..
이렇게 해놓으면 껏다 켜지면 맨날 실행 시켜야되니까 데몬으로 만들어야한다.
[데몬으로 만들기]
먼저 service 파일을 만들어야 한다. 파일이름은 aspwebapp.service 이파일을
만든다. vi에디터로 만들어도 되지만 우리는 윈도우 메모장이 있으니까 PC에서..
당연히 커맨드보다 GUI가 편하고 빠르다.. (커맨드로치면 그냥 겉멋 든거야 -_-;)
이파일의 내용은 다음처럼 기술한다.
------------------------------------------------------------------------
[Unit]
Description=asp_webapp_service
[Service]
WorkingDirectory=/home/orangepi/프로젝트이름
ExecStart=/usr/bin/dotnet /home/orangepi/프로젝트이름/프로젝트이름.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=mywebapp-identifier
User=orangepi
Environment=ASPNETCORE_ENVIRONMENT=Development
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
------------------------------------------------------------------------
이렇게 작성하고 저장해서 ftp로 전달 전달~
ssl에 /home/orangepi 폴더로 다시 와서 이파일을 /usr/lib/systemd/system/ 로 복사
[서비스파일 복사]
sudo cp aspwebapp.service /usr/lib/systemd/system/aspwebapp.service
[서비스 상태확인]
systemctl status aspwebapp.service 라고치면 아랫줄에 Active: inactive 라고 나오면
잘복사된거임
[서비스 데몬시작]
sudo systemctl start aspwebapp.service
[장비가 켜지거나 프로세트가 죽을때 해당서비스 실행하기]
sudo systemctl enable aspwebapp.service
이렇게 실행시키고 장비 전원을 껏다가 켜졌을때 웹페이지 접속가능한지
확인을 하면 끝~~ -_-;; 에휴...
물론 nginx 웹서버를 전면부에 세우고 닷넷을 역프록시로 실행하면 인증서나 화이트리스트관리나 보안모듈을 처리할수 있지만.. 사이드프로젝트에서 그렇게 까지 하는사람은 없다고 생각한다. -_-;;


댓글 없음:
댓글 쓰기