Dokku は、デプロイツール (PaaS) として最もシンプルなものです。このコーナーでは、 Dokku で Haskell アプリケーションを、リモートサーバーへデプロイする方法を説明しています。
Dokku でデプロイするまでの手順は次のとおりです。なおローカルの環境は、macOSかLinuxであることを想定しています。
DokkuはGitHubを使います。そしてDokku にまつわるエラーで一番多いのが GitHubに登録した公開鍵の使い方のミスです。ここでは公開鍵を作成して、GitHubに登録する手順を説明します。
ターミナルを起動して、ホームディレクトリに移動します。
ターミナルに次のように入力して、.ssh
ディレクトリがあるかどうかを確認します。
ls-la
上記のように表示されれば、
・・・
drwx------ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .ssh
・・・
.ssh
ディレクトリが存在していて、
パーミッションも合っています。
.ssh
が存在していなければ、次のように入力して、.ssh
ディレクトリを作成して、パーミッションを設定します。
mkdir .ssh
chmod 700 .ssh
.ssh
がある場合でも、パーミッションが合っていなければ、
chmod 700 .ssh
でパーミッションを合わせてください。
.ssh
ディレクトリに移動してすでに公開鍵があるかどうかを確認します。
cd .ssh
各ファイルの説明
ls -la
-rw------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx id_rsa
-rw-r--r-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx id_rsa.pub
-rw-r--r-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx known_hosts
id_rsa
は、秘密鍵です。id_rsa.pub
が、公開鍵です。authorized_keys
という名前になっている場合もあります。known_hosts
は、
リモートサーバーへのアクセス履歴が記載されるファイルです。
リモートサーバーへのアクセスに失敗する場合、
このファイルを削除すると直る場合が結構あります。
秘密鍵と公開鍵がない場合は次の方法で作成します。known_hosts
は、
なくても構いません。
ssh-keygen -t rsa
保存先はどこにしますか?、パスフレーズ (パスワードのこと)は何にしますか、
と聞かれますが、全部エンターキーを叩いて無視して大丈夫です。
id_rsa
のパーミッションを次のように設定してください。
chmod 600 id_rsa
公開鍵 id_rsa.pub
を vi
か cat
で開いてその内容をどこかにメモしてください。
vi id_rsa.pub
もしくは
cat id_rsa.pub
公開鍵をGitHubに登録する前に、まずGitをインストールします。私の場合は下記サイトよりインストーラーをダウンロードしてインストールしました。
Linuxの場合は、下記コマンドでインストールできます。
Debian / Ubuntu
sudo apt-get install git
Fedra
yum install gi
もしくは
dnf install git
次に下記サイトにアクセスして GitHubのアカウントを取得します。
The world’s leading software development platform · GitHub
アカウントが設定できましたら、上記サイトにアクセスして「サインイン」します。
右上のメニューより「Settings」(設定)を選択します。
左のグループから「SSH and GPS keys」(SSHとGPSキー)を選択します。
「New SSH Key」(新しいSSHキー)をクリックします。
「Title」(タイトル)に、任意の名前を記入します。
「Key」(キー)に、先ほどメモした、公開鍵の内容をペーストします。
「Add SSH key」(SSHキーを追加する)をクリックします。
右上のメニューから「Sign Out」(サインアウト)を選択します。
ターミナルに戻って、次のように操作します。
ssh -T git@github.com
Are you sure you want to continue connecting (yes/no)?
「yes
」と入力します。
Hi appdesignjp! You've successfully authenticated, but GitHub does not provide shell access.
上記のように表示されれば、公開鍵の登録は成功しています。
公開鍵のメモは、 リモートサーバーの設定の時にも使いますので、残しておいてください。
今後、 SSH 接続や、Dokku のデプロイに失敗する場合、.ssh ディレクトリの known_hosts ファイルを削除すると直る場合があります。