Reco Everything you wanna value. 자세히보기

[Recoeve.net]

Recoeve setting

kipid 2026. 10. 8. 17:14
# Recoeve setting ```[.lang-sh] ssh -i "C:\RecoeveNet\.ssh\Recoeve.net-medium-SSH.pem" ubuntu@ec2-43-202-241-148.ap-northeast-2.compute.amazonaws.com ssh -i "C:\RecoeveNet\.ssh\Recoeve.net-medium-SSH.pem" -L 5900:127.0.0.1:5900 ubuntu@ec2-43-202-241-148.ap-northeast-2.compute.amazonaws.com bash ~/.config/gitconfig.sh # Ubuntu 업데이트 하는 방법 sudo apt update sudo apt upgrade sudo apt autoremove sudo netstat -tulnp | grep 8080 sudo kill -9 [id] # 'recoeve'이라는 이름의 새 세션 시작 tmux new -s recoeve # Ctrl+b, d 키로 나올 수 있음. # or 'recoeve'라는 세션 입장 tmux attach -t recoeve cd ~/Recoeve ./run_gradlew.sh & cd ~/kipids-recoeve npm run build && npm start tail -f -n 3500 logs/log.txt ```/ ## PH
  • 2026-09-09 : Next.js 로 바꾸는 과정.
  • 2024-08-14 : Ubuntu server settings 추가.
## TOC ## 죽는 이유 분석 로그 확인: 인스턴스가 예기치 않게 멈춘 이유를 파악하려면 시스템 로그와 CloudTrail을 확인하세요: ```[.lang-bash] sudo journalctl -b -1 # 이전 부팅 로그 확인 ```/ CloudTrail에서 RebootInstances 이벤트를 검색해 누가/무엇이 재부팅을 유발했는지 확인. ## 주의사항 ### 서버 실행 ```[.lang-sh] ./run_gradlew.sh # at Ubuntu run_gradlew.bat # at Windows ```/ ### 따로 추가해야 할 파일들 (Secrets) ```[.lang-sh] gitconfig.bat gitconfig.sh source ./gitconfig.sh src/main/java/recoeve/db/Config.java ```/ RecoeveNet repo 도 비밀유지를 위해서는 .gitignore 해야겠지만 귀찮으니 private repo 로 그냥 파일 공유합시다. ### Windows 내부 Ubuntu (WSL: Windows Subsystem for Linux) 에서는 편집을 지양합시다. 편집은 Windows 에서 대부분 하고 git push 하는걸로... WSL 에서는 실행 테스트 용으로만 이용합시다. ## Ubuntu Server 에 setting 하기. Azure (Microsoft) portal.azure.com/#@Recoevenet.onmicrosoft.com 에서 Sidebar 에 있는 Connect 클릭. ### Remote Server (Virtual Server) 접속하기. #### CLI (Command Line Interface) Ubuntu WSL (Windows Subsystem for Linux) 을 켜고 ```[.lang-sh] ssh -i ~/RecoeveNet/.ssh/github-recoeve-rsa kipid@4.218.23.15 // Are you sure you want to continue connecting (yes/no/[fingerprint])? yes sudo -i // root 계정으로 전환. ```/ #### SFTP 설정 ```[.lang-sh] sshfs -i ~/.ssh/Recoeve.net-VM_key.pem kipid@4.218.23.15:/home/kipid/ ~/remote_storage/ ```/ #### RDP (Remote Desktop Protocol) from Windows 11
Win+R 로 rdpclip.exe 실행해야 복붙이 됨.
Remote desktop from windows to linux with xRDP / fix black screen: Remote desktop from windows to linux with xRDP / fix black screen, by UFO ACADEMY, at 2023 여기 Griffon's IT Library :: xRDP – xRDP shows only black screen after authentication windows – How To Fix !, 2021-04-12 가 제대로 설명 해놓은듯. ```[.lang-sh] sudo apt install xrdp -y sudo systemctl enable xrdp sudo systemctl restart xrdp sudo systemctl status xrdp su - kipid-rdp sudo adduser xrdp ssl-cert sudo ufw enable sudo ufw allow 3389/tcp sudo ufw reload sudo ufw status sudo ip -br a curl ifconfig.me // This command will display the public IP address of your server. sudo vim /etc/xrdp/startwm.sh unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR sudo systemctl restart xrdp ```/ #### Graphic card settings ```[.lang-sh] sudo lshw -c video *-graphics product: hyperv_drmdrmfb physical id: 1 logical name: /dev/fb0 capabilities: fb configuration: depth=32 resolution=1024,768 ```/ ### gitconfig.sh 만들기. ```[.lang-sh] curl -sS https://webi.sh/gh | sh // 이건 동작 안하는듯. ```/ ```[.lang-sh] cd ~/.config/ sudo touch gitconfig.sh sudo chmod u+rw gitconfig.sh // 소유자에게 읽기, 쓰기, 실행 권한을 부여하고 그룹과 다른 사용자에게 읽기 권한만 부여하려면: chmod 744 gitconfig.sh sudo vim gitconfig.sh ```/ 아래와 같은 명령어들을 넣어놓고 저장 (:wq) ```[.lang-sh] sudo git config alias.history "log --pretty=oneline" --global sudo git config user.name "kipid" --global sudo git config user.email "kipacti@gmail.com" --global sudo git config init.defaultBranch main --global ```/ ### git clone ```[.lang-sh] sudo git clone https://[password-token]@github.com/kipid/kipids-recoeve.git sudo git clone https://[password-token]@github.com/kipid/Recoeve.git Username for 'https://github.com': kipid Password for 'https://kipid@github.com': // 발급 받은 password 를 쳐야 함. 계정 pwd 가 아니라. sudo git clone https://[password-token]@github.com/kipid/PortableGit.git sudo git clone https://[password-token]@github.com/kipid/Recoeve.git sudo git clone https://[password-token]@github.com/kipid/RecoeveNet.git // 위처럼 해야 매번 로그인하라고 안물어봄. // sudo git clone https://[password-token]@github.com/[username]/[repo].git ```/ #### sudo git push/pull 매번 로그인하지 않게 만들어주기. Using ssh. ```[.lang-sh] ssh-keygen -t rsa -b 4096 -C "kipacti@gmail.com" // Follow the prompts to save the key in the default location (~/RecoeveNet/.ssh/github-recoeve-rsa). eval "$(ssh-agent -s)" ssh-add ~/RecoeveNet/.ssh/github-recoeve-rsa cat ~/RecoeveNet/.ssh/github-recoeve-rsa.pub cd ~/Recoeve/ sudo git remote set-url origin git@github.com:kipid/Recoeve.git cd ~/RecoeveNet/ sudo git remote set-url origin git@github.com:kipid/RecoeveNet.git cd ~/Recoeve/ sudo git config --global credential.helper cache ```/ ## AWS 및 깔아야할 Softwares. ### JAVA ```[.lang-sh] sudo apt install openjdk-21-jdk readlink -f $(which java) # 출력예시 : /usr/lib/jvm/java-21-openjdk-amd64/bin/java sudo vim ~/.bashrc # export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 # export PATH=$JAVA_HOME/bin:$PATH source ~/.bashrc ```/ ### MySQL ```[.lang-sh] sudo apt update sudo apt install mysql-server sudo mysql_secure_installation # 거의 모든 대답에 y (yes) 하면 됨. PASSWORD 는 2:STRONG 으로... ```/ #### 대소문자 구분 설정 (lower_case_table_names) 및 시간대 설정 (default-time-zone) ```[.lang-sh] sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 와 같이 파일수정을 켜고 다음과 같이 추가. [mysqld] # # * Basic Settings # user = mysql # pid-file = /var/run/mysqld/mysqld.pid # socket = /var/run/mysqld/mysqld.sock # port = 3306 # datadir = /var/lib/mysql lower_case_table_names = 2 # 2: 대소문자를 구분해서 저장하지만, 비교할 때는 구분 안 함 (macOS 기본). default-time-zone = '+00:00' ```/ mysql 재부팅 ```[.lang-sh] sudo systemctl restart mysql ```/ #### Ubuntu 의 시간대 설정 (timedatectl set-timezone) ```[.lang-sh] sudo timedatectl set-timezone UTC timedatectl # Time zone: UTC (UTC, +0000) 라고 나오면 성공입니다. ```/ #### root 계정의 비밀번호 설정 ```[.lang-sql] sudo mysql # 비번 없이 접속 됨. -- 1. 현재 root 계정의 비밀번호 설정 ALTER USER 'root'@'localhost' IDENTIFIED BY ''; -- 2. 변경 사항 즉시 적용 FLUSH PRIVILEGES; ```/ #### eve 계정 생성 및 비밀번호 설정 ```[.lang-sql] CREATE USER 'eve'@'localhost' IDENTIFIED BY ''; CREATE DATABASE `recoeve01`; -- recoeve01 데이터베이스에 대한 모든 권한 부여 GRANT ALL PRIVILEGES ON recoeve01.* TO 'eve'@'localhost'; FLUSH PRIVILEGES; ```/ #### Data 가져오기 (mysqldump, mysql, git-lfs (large file system)) ```[.lang-sh] # mysqldump --extended-insert=true -u root -p recoeve01 > mydump.sql sudo apt update sudo apt install git-lfs git lfs install git lfs pull sudo mysql -u root -p recoeve01 < mydump.sql ```/ ### SublimeText 특히나 sublime-snippet. ```[.linenums.lang-html] <!-- aWithBlank.sublime-snippet --> <snippet> <content><![CDATA[ <a target="${1:_blank}" href="${2}">${3}</a>${4} ]]></content> <tabTrigger>ab</tabTrigger> <scope>text.html</scope> <description>a tag with target _blank</description> </snippet> <!-- eq.sublime-snippet --> <snippet> <content><![CDATA[ <eq>${1}</eq>${2} ]]></content> <tabTrigger>eq</tabTrigger> <scope>text.html</scope> <description>eq tag (inline equation)</description> </snippet> <!-- eqq.sublime-snippet --> <snippet> <content><![CDATA[ <eqq> ${1} </eqq>${2} ]]></content> <tabTrigger>eqq</tabTrigger> <scope>text.html</scope> <description>eqq tag (outline equation)</description> </snippet> <!-- img.sublime-snippet --> <snippet> <content><![CDATA[ <img delayed-src="${1}"/>${2} ]]></content> <tabTrigger>img</tabTrigger> <scope>text.html</scope> <description>img tag with delayed-src</description> </snippet> <!-- iframe.sublime-snippet --> <snippet> <content><![CDATA[ <iframe delayed-src="${1}"></iframe>${2} ]]></content> <tabTrigger>iframe</tabTrigger> <scope>text.html</scope> <description>iframe tag with delayed-src</description> </snippet> ```/ ### Node.js 랑 Python 도 깔자. ```[.lang-sh] curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash # 자동으로 ~/.bashrc 에 다음과 같은게 추가 됨. export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion # ~/.bashrc 실행 source ~/.bashrc ```/ Ubuntu에는 기본적으로 Python 3가 설치되어 있습니다. 하지만 최신 버전을 깔거나 개발용 도구를 갖추는 과정이 필요합니다. 가상 환경 (venv) 사용법 (권장): Python 프로젝트마다 라이브러리 꼬임을 방지하기 위해 가상 환경 사용을 강력히 권장합니다. ```[.lang-sh] python3 --version sudo apt update sudo apt install python3 python3-pip python3-venv ```/ ### Nginx 설치 및 설정하는 법 ```[.lang-sh] sudo apt update sudo apt install nginx ```/ ### tmux 설치 ```[.lang-sh] sudo apt update sudo apt install tmux tmux -V nano ~/.tmux.conf # 아래 내용 입력 후 저장 set -g mouse on # 'recoeve'이라는 이름의 새 세션 시작 tmux new -s recoeve # Ctrl+b, d 키로 나올 수 있음. # or 'recoeve'라는 세션 입장 tmux attach -t recoeve ./run_gradlew.sh & tail -f -n 3500 logs/run_gradlew_2026-03-1 ```/ ### 부팅시나 재부팅시 자동으로 서버가 실행되도록 만드는 법 #### crontab 이용 (비추천) ```[.lang-sh] crontab -e # 다음과 같이 입력하고 저장. @reboot cd ~/Recoeve && /usr/bin/tmux new-session -d -s recoeve './run_gradlew.sh > ~/reboot_log.txt 2>&1' ```/ #### systemctl 이용 (추천)
sudo vim /etc/systemd/system/recoeve.service 로 다음과 같이 저장.
```[.lang-sh] [Unit] Description=Recoeve Tmux Service After=network.target mysql.service nginx.service [Service] Type=simple User=ubuntu Group=ubuntu WorkingDirectory=/home/ubuntu/kipids-recoeve # 이미 세션이 있으면 종료하고 새로 시작 (중복 방지) ExecStartPre=-/usr/bin/tmux kill-session -t recoeve # tmux 세션을 데몬(-d)으로 생성하고 명령어 실행 ExecStart=/usr/bin/tmux new -d -s recoeve 'npm run build && PORT=8080 npm start > /home/ubuntu/kipids-recoeve/logs/log.txt 2>&1' # 서비스 중단 시 tmux 세션 삭제 ExecStop=/usr/bin/tmux kill-session -t recoeve Restart=on-failure [Install] WantedBy=multi-user.target ```/
sudo vim /etc/systemd/system/kipids-recoeve.service 로 다음과 같이 저장.
```[.lang-sh] [Unit] Description=kipids Recoeve Service After=network.target [Service] Type=simple User=ubuntu Group=ubuntu WorkingDirectory=/home/ubuntu/kipids-recoeve Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # 이미 세션이 있으면 종료하고 새로 시작 (에러가 나도 무시하도록 '-' 유지) ExecStartPre=-/usr/bin/tmux kill-session -t recoeve # /bin/bash -c를 통해 빌드와 tmux 실행 명령어를 안전하게 순차 실행, tmux 세션을 데몬(-d)으로 생성하고 명령어 실행 ExecStart=/bin/bash -c "/usr/bin/tmux new -d -s recoeve './run_nextjs.sh &'" # 서비스 중단 시 tmux 세션 삭제 ExecStop=/usr/bin/tmux kill-session -t recoeve Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target ```/ ```[.lang-sh] sudo visudo ```/ 다음 줄을 추가하세요: ```[.lang-sh] ubuntu ALL=(ALL) NOPASSWD: /usr/bin/tmux ```/ 다음과 같은 명령어들로 부팅 시 자동 실행 설정. ```[.lang-sh] # 1. systemd 매니저에게 새 파일이 생겼음을 알림 sudo systemctl daemon-reload # 2. 부팅 시 자동 실행 설정 sudo systemctl enable kipids-recoeve.service # 3. 지금 즉시 서비스 시작 sudo systemctl start kipids-recoeve.service sudo systemctl status kipids-recoeve.service ```/ ### com.microsoft.playwright 설치 ```[.lang-sh] npx playwright install-deps npx playwright install # 이걸로는 ~/.cache/ms-playwright 폴더가 안생기는듯. # 클래스패스에 playwright jar가 포함된 상태에서 CLI 실행 java -cp "build/libs/*:lib/*" com.microsoft.playwright.CLI install # run_gradlew.sh 에서 다음과 같은 명령어를 추가 export PLAYWRIGHT_BROWSERS_PATH=$HOME/.cache/ms-playwright ```/ ## Windows 시스템 환경 변수 ```[.linenums] JAVA_HOME=C:\Program Files\Java\jdk-20 MYSQL_HOME=C:\Program Files\MySQL\MySQL Server 8.0 VERTX_HOME=C:\vertx RECOEVE_CLASS=C:\Recoeve CLASSPATH=.;%JAVA_HOME%\lib;%RECOEVE_CLASS%\classes;%RECOEVE_CLASS%\classes\javax.mail.jar;%RECOEVE_CLASS%\classes\mysql-connector-j-8.0.33.jar;%RECOEVE_CLASS%\classes\activation-1.1.1.jar;%VERTX_HOME%\conf;%VERTX_HOME%\lib\* ```/ ## Time error 나는거 해결해야 함. ```[.lang-sql] SET GLOBAL sql_mode = "ALLOW_INVALID_DATES"; SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode; ```/ ### Timezone ```[.lang-sql] mysql> status; -------------- mysql Ver 8.0.30 for Win64 on x86_64 (MySQL Community Server - GPL) Connection id: 41 Current database: recoeve01 Current user: root@localhost SSL: Cipher in use is TLS_AES_256_GCM_SHA384 Using delimiter: ; Server version: 8.0.30 MySQL Community Server - GPL Protocol version: 10 Connection: localhost via TCP/IP Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 TCP port: 3306 Binary data as: Hexadecimal Uptime: 4 days 2 hours 42 min 13 sec Threads: 3 Questions: 122383 Slow queries: 0 Opens: 537 Flush tables: 3 Open tables: 437 Queries per second avg: 0.344 -------------- ```/ ```[.lang-sql] mysql> SHOW variables like 'c%'; +----------------------------------------------+---------------------------------------------------------+ | Variable_name | Value | +----------------------------------------------+---------------------------------------------------------+ | caching_sha2_password_auto_generate_rsa_keys | ON | | caching_sha2_password_digest_rounds | 5000 | | caching_sha2_password_private_key_path | private_key.pem | | caching_sha2_password_public_key_path | public_key.pem | | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ | | check_proxy_users | OFF | | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8mb4_0900_ai_ci | | collation_server | utf8mb4_0900_ai_ci | | completion_type | NO_CHAIN | | concurrent_insert | AUTO | | connect_timeout | 10 | | connection_memory_chunk_size | 8912 | | connection_memory_limit | 18446744073709551615 | | core_file | OFF | | create_admin_listener_thread | OFF | | cte_max_recursion_depth | 1000 | +----------------------------------------------+---------------------------------------------------------+ 24 rows in set (0.14 sec) ```/ ```[.lang-sql] SELECT @@global.time_zone, @@session.time_zone; SET GLOBAL time_zone='+00:00'; SET time_zone='+00:00'; ```/ ## Windows firewall Windows firewall 에서 port 80, 443 access 를 풀어줘야 함. Inbound, Outbound 둘 다 풀어줌. AWS security group 에서도 Inbound Custom TCP port 80, 443 풀어줘야 함. Outbound 는 all traffic 을 풀어줘야 할듯? ## Console (cmd) 한글깨짐 문제 참고 . chcp 65001 (Changes the active console code page. UTF-8) 로 바꿔주는거고, regedit 눌러서 registry 도 변경해줘야 다시 실행했을때도 자동으로 잘 보이는듯. Font 도 한글 보이는 걸로 바꿔줘야 함. ## HTTPS 로 접속되게 ```[.lang-sh] # Certbot 설치 sudo apt install certbot python3-certbot-nginx # Certbot 실행하여 SSL 인증서 발급 및 Nginx 설정 자동 변경 sudo certbot --nginx -d example.com -d www.example.com ```/ ## RRA
  1. kipid's blog - JAVA Windows command (cmd) 한글 깨짐 문제해결
반응형