# π SSH λ°°ν¬ κ°μ΄λ (v9) **λͺ©ν**: SSHλ‘ μ격 μλ²μ μ§μ μ μνμ¬ λ°°ν¬ **νκ²½**: hz-prod-01 (κ³΅μΈ IP 178.104.200.7 / λ΄λΆ IP 172.17.0.1) --- ## π μ¬μ μ€λΉ ### 1. SSH ν€ μ€μ (μ΅μ΄ 1ν) #### 1.1 λ‘컬μμ SSH ν€ μμ± ```bash ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" ``` #### 1.2 κ³΅κ° ν€λ₯Ό μ격 μλ²μ λ±λ‘ ```bash ssh-copy-id -i ~/.ssh/id_ed25519.pub kjh2064@178.104.200.7 ``` #### 1.3 SSH μ°κ²° ν μ€νΈ ```bash ssh -i ~/.ssh/id_ed25519 kjh2064@178.104.200.7 "echo 'β μ°κ²° μ±κ³΅'" ``` --- ## π Step 1: νκ²½ νμ ### μ격 μλ² μ 보 νμΈ ```bash ssh kjh2064@178.104.200.7 << 'EOF' # 1. μμ€ν μ 보 echo "=== μμ€ν μ 보 ===" hostname uname -a lsb_release -a # 2. λ°°ν¬ κ²½λ‘ echo -e "\n=== λ°°ν¬ κ²½λ‘ ===" ls -la /home/kjh2064/quantengine_active/ || echo "μμ§ μμ (첫 λ°°ν¬)" ls -la /home/kjh2064/quantengine_backup/ # 3. μλΉμ€ μν echo -e "\n=== quantengine μλΉμ€ ===" sudo systemctl status quantengine --no-pager # 4. Nginx μ€μ echo -e "\n=== Nginx /quant μ€μ ===" cat /etc/nginx/sites-available/gitea-ip.conf | grep -A 10 "location /quant" # 5. ν¬νΈ μν echo -e "\n=== ν¬νΈ μν ===" sudo netstat -tuln | grep -E ":80|:443|:5000" # 6. λμ€ν¬ μν echo -e "\n=== λμ€ν¬ ===" df -h EOF ``` ### μμ νκ²½ ``` β Linux (Ubuntu 20.04+) β nginx 1.28.3 (reverse proxy) β /home/kjh2064/quantengine_active/ λ°°ν¬ κ²½λ‘ β quantengine systemd μλΉμ€ β ν¬νΈ 5000μμ .NET μ± μ€ν β sudo κΆν (quantengine μλΉμ€ μ μ΄) ``` --- ## ποΈ λ°°ν¬ μν€ν μ² ``` ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β μ¬μ©μ (μΈλΆ μΈν°λ·) β β http://178.104.200.7/quant/ β βββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ β κ³΅μΈ IP (ν¬νΈ 80) βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ β Nginx (reverse proxy) β β /etc/nginx/sites-available/gitea-ip.conf β β location /quant/ β proxy_pass http://127.0.0.1:5000/ βββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ β localhost:5000 βββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ β quantengine (systemd μλΉμ€) β β /home/kjh2064/quantengine_active/ β β QuantEngine.Web.dll (μ€ν μ€) β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ ``` --- ## π¦ Step 2: Release λΉλ ```bash # λ‘컬 κ°λ° λ¨Έμ μμ μ€ν cd /c/Temp/data_feed # Release λΉλ dotnet publish -c Release \ -o src/dotnet/QuantEngine.Web/publish # κ²°κ³Ό νμΈ ls -lh src/dotnet/QuantEngine.Web/publish/ du -sh src/dotnet/QuantEngine.Web/publish/ ``` --- ## π Step 3: λ°°ν¬ λ°©λ² ### λ°©λ² 1: μλ λ°°ν¬ μ€ν¬λ¦½νΈ (κΆμ₯) ```bash # μ€ν¬λ¦½νΈμ μ€ν κΆν λΆμ¬ chmod +x deploy-production.sh # λ°°ν¬ μ€ν ./deploy-production.sh # λλ ./deploy-manual.sh 178.104.200.7 ``` **μ€ν¬λ¦½νΈκ° μλμΌλ‘:** - β SSH μ°κ²° νμΈ - β μ격 νκ²½ νμ - β μλΉμ€ μ€μ§ - β λ°±μ μμ± - β νμΌ μ μ‘ (rsync) - β νμΌ κ²μ¦ - β μλΉμ€ μμ - β ν¬μ€ μ²΄ν¬ ### λ°©λ² 2: μλ λ°°ν¬ (λ¨κ³λ³) #### Step 2-1: SSH μ μ ```bash ssh -i ~/.ssh/id_ed25519 kjh2064@178.104.200.7 ``` #### Step 2-2: μλΉμ€ μ€μ§ λ° λ°±μ ```bash # μ격 μλ²μμ μ€ν: set -e SERVICE_NAME="quantengine" DEPLOY_PATH="/home/kjh2064/quantengine_active" BACKUP_PATH="/home/kjh2064/quantengine_backup" BACKUP_NAME="quantengine_$(date +%Y%m%d_%H%M%S)" # μλΉμ€ μ€μ§ sudo systemctl stop $SERVICE_NAME sleep 2 echo "β μλΉμ€ μ€μ§" # λ°±μ μμ± mkdir -p $BACKUP_PATH if [ -d $DEPLOY_PATH ]; then cp -r $DEPLOY_PATH "$BACKUP_PATH/$BACKUP_NAME" echo "β λ°±μ : $BACKUP_PATH/$BACKUP_NAME" else mkdir -p $DEPLOY_PATH echo "β οΈ μ²« λ°°ν¬" fi ``` #### Step 2-3: SSH μ’ λ£ ```bash exit ``` #### Step 2-4: νμΌ μ μ‘ (λ‘컬μμ) ```bash rsync -avz --delete \ -e "ssh -i ~/.ssh/id_ed25519" \ src/dotnet/QuantEngine.Web/publish/ \ kjh2064@178.104.200.7:/home/kjh2064/quantengine_active/ ``` #### Step 2-5: μλΉμ€ μμ ```bash ssh -i ~/.ssh/id_ed25519 kjh2064@178.104.200.7 << 'EOF' SERVICE_NAME="quantengine" DEPLOY_PATH="/home/kjh2064/quantengine_active" # νμΌ κ²μ¦ if [ -f $DEPLOY_PATH/QuantEngine.Web.dll ]; then echo "β νμΌ νμΈλ¨" else echo "β νμΌ μμ" exit 1 fi # μλΉμ€ μμ sudo systemctl start $SERVICE_NAME sleep 3 # μν νμΈ if sudo systemctl is-active --quiet $SERVICE_NAME; then echo "β μλΉμ€ μμλ¨" else echo "β μλΉμ€ μμ μ€ν¨" exit 1 fi EOF ``` --- ## β Step 4: λ°°ν¬ κ²μ¦ ### HTTP μν νμΈ ```bash # κ³΅μΈ IPλ‘ μ κ·Ό (μΈλΆ μ¬μ©μ κΈ°μ€) curl -I http://178.104.200.7/quant/ # κΈ°λ: HTTP/1.1 200 OK # localhost:5000 μ§μ νμΈ (μλ²μμ) ssh kjh2064@178.104.200.7 'curl -I http://127.0.0.1:5000/' # κΈ°λ: HTTP/1.1 200 OK ``` ### MudBlazor 리μμ€ νμΈ ```bash curl -s http://178.104.200.7/quant/ | grep -c "MudBlazor" # κΈ°λ: > 0 ``` ### νμ΄μ§ μ λͺ© νμΈ ```bash curl -s http://178.104.200.7/quant/ | grep -o "