お待ちください...

小波Note

四川 · 成都市13 ℃
日本語

サーバーにプロジェクトをデプロイするさまざまな方法

成都 (cheng du)2024/9/20 0:18:042.16k見積もり読書時間 7 分お気に入りCtrl + D / ⌘ + D
cover
IT FB(up 主)
バックエンド開発エンジニア
記事の要約
Github Copilot

記事の要約を読み込んでいます...

さまざまな方法でプロジェクトをデプロイする、ビルド、転送、デプロイ。

CI/CDなしの方法

鍵ペアを生成する

bash
        # デフォルト -> ~/.ssh/id_rsa
ssh-keygen -t rsa -b 4096 -C "xxx"
# ファイル名を指定 -> ~/.ssh/id_rsa_deploy
ssh-keygen -t rsa -b 4096 -C "xxx" -f ~/.ssh/id_rsa_deploy

    

サイトオーナーはデプロイ用に専用の鍵ペアを生成しているため、他の鍵ペアに影響を与えません。

id_rsa_deploy.pubの内容をサーバーの ~/.ssh/authorized_keysファイルに配置する必要があります。これにより、パスワードなしでログインできます。

デフォルトでは id_rsa 鍵が使用されますが、他の鍵を使用する場合は2つの方法があります。

  1. deploy.sh スクリプトで鍵ファイルを指定することができます。
deploy.sh
        #!/bin/bash
ssh -i ~/.ssh/id_rsa_xxx root@xxx.xxx.xxx.xxx [実行するコマンド]

    
  1. ~/.ssh/config ファイルを設定します。これにより、deploy.sh スクリプトで ssh deploy コマンドを直接使用できます。
~/.ssh/config
        # 特定のサーバーに特定の鍵を使用する
Host deploy
  HostName xxx.xxx.xxx.xxx
  User root
  IdentityFile ~/.ssh/id_rsa_deploy

    
deploy.sh
        #!/bin/bash
ssh deploy [実行するコマンド]

    

実行中にパスワードを入力する問題が発生します。このスクリプトは、SSH鍵のパスワードを3回入力する必要があります。Enter passphrase for key '/c/Users/Linux/.ssh/id_rsa_deploy': 問題は、ssh-add コマンドを使用して鍵を ssh-agent に追加することで解決できます。これにより、パスワードを再度入力する必要がなくなります。

bash
        # SSHエージェント
eval "$(ssh-agent -s)"
# 鍵を追加
ssh-add ~/.ssh/id_rsa_deploy
# 追加された鍵を表示
ssh-add -l
# SSHエージェントを終了
ssh-agent -k

    

完全な実行スクリプト、パスワードは一度だけ入力します。

deploy.sh
        #!/bin/bash

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_deploy

echo "プロジェクトを構築中"
pnpm run build

echo "ファイルを圧縮中..."
tar -zcvf .output.tar.gz .output

echo "サービスを停止中"
ssh deploy "cd /usr/local/app/node_run/it-fb && pm2 stop ecosystem.config.cjs && rm -rf .output.bak && mv .output .output.bak"

echo "ファイルをアップロード中..."
scp .output.tar.gz deploy:/usr/local/app/node_run/it-fb

echo "サービスを起動中"
ssh deploy "cd /usr/local/app/node_run/it-fb && tar -zxvf .output.tar.gz && pm2 start ecosystem.config.cjs && rm -rf .output.tar.gz"

echo "デプロイ完了"
rm -rf .output.tar.gz

ssh-agent -k

    

実行

package.json
        {
  "scripts": {
    "deploy": "sh ./deploy.sh"
  }
}

    
bash
        # Windowsではgit bashで実行する必要があります
pnpm run deploy