0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actionsでレンタルサーバにsshしてpullする方法

Posted at

ここ数日で大量にGitHub Actionsを用いたphpファイルの自動デプロイを行っていました。特に1つのサーバで複数の自動pullは試行錯誤したので、備忘録として残そうと思います。少しでも役に立てれば幸いです。

仕様

・Ubuntu18.04
・レンタルサーバ(無料枠内でOK)
 └ hoge.com
 └ special.hoge.com
・GitHub

手順(準備)

初めに、必要なファイルを作成します。
私のように、一つのサーバで複数のホームページを運用したい場合などは、GitHub Actionsをしたいプロジェクトの数だけ鍵を作成するようにしましょう。

・公開鍵と秘密鍵

$ssh-keygen -t rsa
Generating public/private rsa key pair. 
Enter file in which to save the key (~/.ssh/id_rsa): id_rsa_hoge #指定せず[Enter]を押すと()内のファイル名になります。
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]

$ssh-keygen -t rsa
Generating public/private rsa key pair. 
Enter file in which to save the key (~/.ssh/id_rsa): id_rsa_special_hoge
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]

・config

Host github-hoge
    hostname github.com
    user git
    Identify ~/.ssh/id_rsa_hoge

Host github-special-hoge
    hostname github.com
    user git
    Identify ~/.ssh/id_rsa_special_hoge

次に、.ssh/authorizationに公開鍵を追記しておきます。

$cat ~/.ssh/id_rsa_hoge.pub >> ~/.ssh/authorization
$cat ~/.ssh/id_rsa_special_hoge.pub >> ~/.ssh/authorization

次に、サーバでpullしたいディレクトリなどを決め、cloneしていきます。
Gitのインストールは下記コマンド。

$sudo apt install git

なお、cloneする場合は保存先ディレクトリ(公開しているホームページのディレクトリ)は空にする必要があるため、WinSCPなどでファイルをバックアップしておいてください。

$git clone git@github.com/[userName]/[projectName].git [deployDirectory]

例えば、Godというユーザが作成した場合は、下記のようになります。

$git clone git@github.com/God/hoge.git ~/hoge.com
$git clone git@github.com/God/special.hoge.git ~/special.hoge.com

ディレクトリを指定しなかった場合は、現在居るディレクトリにプロジェクト名でフォルダが作成されます。

手順(GitHub Actions)

まず、デプロイ(サーバにpullしたいプロジェクト)したいプロジェクトで環境変数と公開鍵の設定を行います。

PORT=22
HOST=[サーバのIPアドレス]
HOST_NAME=[サーバのユーザ名]
PRIVATE_KEY=[秘密鍵をコピー]

※秘密鍵の貼り付けですが、改行を\nに置き換えて1行にする方法もありますが、私はwindows標準搭載のメモ帳からのコピペで動きました。なので下記のようになります。

-----BEGIN OPENSSH PRIVATE KEY-----↓
*******************↓
-----END OPENSSH PRIVATE KEY-----↓
[EOF]

環境変数の設定が終わったら、次に公開鍵を設定します。
→Deploy Key

ここまでで設定は終わりです。次にGitHub Actionを作成します。

manual.yml
circle: deploy
build

さて、いよいよテストです。
pushして動くか試してみましょう。もしエラーが出る場合はサーバに戻ってgithubへログインできるか確認してみます。

$ssh -T git@git-hoge
Hello git@github.com:God/hoge.com.

これでうまくいかない場合はサーバのファイアウォールの確認や、エラー文をネットで検索してデバッグしてください。

~Fin~

これで1つのサーバから複数のホームページでも自動的にpullできるようになり、開発がとても容易になりました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?