見出し画像

サクラVPSで開発環境を整える

サクラVPSを借りた後やった初期設定〜開発環境を設定するところまで。以下、開発環境の要件

  1. ローカルマシンからデプロイ可能

  2. 開発環境はローカル環境で使用しているDockerfileを叩くことで起動可能


ユーザー作成

VPSにログインしたときにルートユーザーだと危険なので開発用ユーザーでログインし、ルートユーザーに切り替えられるようにする。ここでは開発ユーザー名を仮にdevとする。ルートユーザー名はdebianとする。

💡debianサーバを借りている場合はデフォルトでルートユーザー名がdebianです。

  • サクラのVPSにログインし使用するサーバを選択。電源操作 > 起動する

💡初期状態では当然サーバが停止しているため。

  • コンソール > シリアルコンソール

💡コピペができないためVNCコンソールは使いません。

  • シリアルコンソールにサーバ契約時に設定したルートユーザーでログイン

login: debian
Password:
  • 開発用ユーザー/パスワード作成

sudo adduser dev
sudo passwd dev

SSHセットアップ

シリアルコンソールでルートユーザーとしてログインした状態で作業を続ける。

  • sshをインストール

apt update
apt -y install ssh

💡sshがインストールされているかどうかは事前に以下のコマンドで確認可能です。おそらく入ってないはずです。
apt list --installed

  • sshd_configのセキュリテイ変更

sudo vi /etc/ssh/sshd_config

💡viの基本操作は通常のエディタとは異なり、ファイルを開くと読み取りモードになっており、上下左右で移動できます。aを押すと書き込みモード、xを押すとカーソルが当たっている文字が消えます。書き込みモードに入った時はESCを押すと読み取りモードに戻ります。読み取りモードで「:q」を押すとvi終了、編集されている場合は「:wq」で保存して終了、「:q!」で保存せずに終了。書き込みモードに入ったかどうかは一見して分かりにくいので、最初は何かあったらESCを押して「:q!」で保存せずに抜ける、という運用で良いでしょう。また、読み取りモード中に「/」を押すとファイル内検索ができます。「/」の後に検索したいキーワードを入力してください。以下、sshd_config内の設定を変更してください。

  • 変更対象は以下の通り。コメントアウトされているか、違う値が入ってるので以下のように変更する。ポート番号は1024以上であればなんでも良い。

Port 6543
PermitRootLogin no
PasswordAuthentication no
  • sshd_configの設定を反映

# 以下のコマンドでviを保存終了
:wq

# 以下のコマンドでSSHデーモン再起動。設定が反映される。
sudo systemctl restart ssh
  • パケットフィルターでポート許可。サクラのVPSにログインしてサーバを選択しパケットフィルター設定タブ > パケットフィルター設定 > パケットフィルター設定を追加するから以下の設定を追加

フィルターの種類:カスタム
プロトコル:TCP
ポート番号:6543
すべて許可

デフォルトのSSHポート 22は不要なのでバツボタンで削除。右下の設定を保存するボタンを押して設定を反映する。

SSHログイン設定

開発ユーザーでSSHログインできるようにする。前章でシリアルコンソールでルートユーザーとしてログインした状態で作業を続ける。

  • 開発ユーザーのホームディレクトリ作成

sudo mkdir /home/dev
sudo chown dev:dev /home/dev
  • ルートユーザー → 開発ユーザーへ切り替え

su dev
  • SSHの公開鍵認証用のディレクトリとファイルを作成

cd ~
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
  • ローカルマシンで公開鍵を作成し、公開鍵の内容をコピーする。公開鍵と秘密鍵のファイル名を仮にsakurassh, sakurassh.pub とする。

[ローカルマシン]
# 初めての場合はディレクトリがないので作成してください。
cd ~
mkdir .ssh

# sshディレクトリ内にて作業します
cd .ssh

# 公開鍵秘密鍵ペアを作成。パスフレーズなどは空のままでOK
ssh-keygen -t rsa -f sakurassh

# 秘密鍵の権限変更
chmod 600 sakurassh

# 公開鍵の内容が表示されるのでコピーしてください。
cat sakurassh.pub
  • VPSサーバのシリアルコンソールに戻り、開発ユーザーにてコピーしてきた公開鍵を貼り付ける。書き込みモードにしてからペーストするのをお忘れなく。

vi authorized_keys
  • SSH接続テスト。ホスト(xxx.xxx.xxx.xxx)はサクラのVPSのサーバの基本情報タブのIPv4を指定する。

[ローカルマシン]
ssh -i ~/.ssh/sakurassh -p 6543 dev@xxx.xxx.xxx.xxx

Docker設定

Dockerを使ってローカル環境でテストしていたのでリモート環境でも同じようにDockerを使用したい。以下その設定。

  • SSH接続しルートユーザーに昇格する。

su debian
  • Docker, unzipをインストール。unzipはローカルからリモートへサーバのプロジェクトディレクトリを圧縮してアップロードした後、それを展開するために使う。Github経由でデプロイするとかであれば不要。

apt install docker.io

# Dockerを開発ユーザーで使えるようにする
sudo usermod -aG docker dev

# デプロイしたzipファイルを解凍するため。
apt install unzip 
  • デプロイ用のスクリプトを作成する

ローカルマシンに以下のシェルスクリプトを作成。ファイル名はupload.shとする。

#!/bin/bash

# 引数のチェック
if [ "$#" -ne 5 ]; then
    echo "Usage: $0 <local_directory> <remote_user> <remote_host> <port> <private_key_path>"
    exit 1
fi

LOCAL_DIR=$1
REMOTE_USER=$2
REMOTE_HOST=$3
PORT=$4
PRIVATE_KEY=$5
REMOTE_DIR_INSTALL="/home/dev/projects"

# ZIPファイル名を作成
ZIP_FILE="$(basename "$LOCAL_DIR").zip"

# ディレクトリをZIP形式に圧縮
zip -r "$ZIP_FILE" "$LOCAL_DIR"

# SSHでリモートサーバにアップロード
scp -i "$PRIVATE_KEY" -P "$PORT" "$ZIP_FILE" "${REMOTE_USER}@${REMOTE_HOST}:~"

ssh -i "$PRIVATE_KEY" -p "$PORT" "${REMOTE_USER}@${REMOTE_HOST}" <<EOF
    # 解凍先のディレクトリがあれば削除
    if [ -d "$REMOTE_DIR_INSTALL" ]; then
        rm -rf "$REMOTE_DIR_INSTALL"
    fi
    mkdir -p "$REMOTE_DIR_INSTALL"

    # ZIPファイルを解凍
    unzip "$ZIP_FILE" -d "$REMOTE_DIR_INSTALL"

    # ZIPファイルを削除
    rm -rf "$ZIP_FILE"
EOF

# ローカルのZIPファイルを削除
rm "$ZIP_FILE"

echo "Upload and extraction completed."

ファイル内の以下にサーバ内のデプロイ先のディレクトリを指定する。/home/dev以下であれば開発ユーザーは権限があるのでどこでも良い。デフォルトではprojectsというディレクトリにしてある。サーバ上にあらかじめこのディレクトリを作っておく必要はない。

REMOTE_DIR_INSTALL="/home/dev/projects"
  • デプロイテスト
    スクリプト引数は以下の通り

    • 第一引数::アップロードしたいディレクトリのパス

    • 第二引数:ユーザー名。ここでは開発ユーザー

    • 第三引数:接続ホスト。ここではさくらVPSにあるサーバIPv4を入力

    • 第四引数:SSH秘密鍵のパス

[ローカルマシン]
# アップロード用のテストディレクトリとファイルを作成
mkdir -p testDir
touch testDir/success.txt

#スクリプト実行
./upload_wt_api.sh test dev xxx.xxx.xxx.xxx 6543 ~/.ssh/sakurassh

スクリプトを実行後、SSHでログインしファイルを確認する。

[ローカルマシン]
ssh -i ~/.ssh/sakurassh -p 6543 dev@xxx.xxx.xxx.xxx

# 以下のコマンドを実行して、success.txtが見つかれば成功。
ls projects/test







いいなと思ったら応援しよう!