t-cool

AWS EC2でCommon Lisp

関西もくもく.lispにて。

tcool.connpass.com

この記事では、AWS EC2インスタンスCommon Lisp製アプリを動かす環境構築をまとめます。

AWSのアカウント作成

まず、AWSのアカウントを作成してください。

EC2インスタンスの作成

アカウントの作成後、サービスからEC2を選択肢して、Ubuntu 18.10 Serverのインスタンスを作成します。

グローバルIPの取得とEC2インスタンスへの設定

Elastic IPは、グローバルIPを取得するAWSのサービスです。

サービスからElastic IPを選択して、グローバルIPを取得します。

グローバルIPの取得後、EC2インスタンスグローバルIPをアタッチします。

独自ドメインの取得と設定

Route 53 は独自ドメインを購入できるAWSのサービスです。

Route 53 で独自ドメインを取得します。

ここでは、t-cool.org を取得しました。

t-cool.org の Aレコードに Elastic IP で取得した固定IPを設定します。

EC2インスタンスへの接続

EC2インスタンスSSHで接続するために、AWSのアカウントからpemファイルを作成してダウンロードします。

ローカルのPCの .bashrc にEC2インスタンスに接続するためにエイリアスを作成します。

alias ec2='ssh -i <pemファイルへのPATH> ubuntu@ec2-54-185-234-112.us-west-2.compute.amazonaws.com'

Terminal等のクライアントから、EC2インスタンスに接続します。

$ ec2
$ ubuntu@ip-172-32-17-144:~$ 

EC2インスタンスの環境設定

Roswellをインストール

EC2インスタンスにログインして、サーバの環境構築を行います。

$ ubuntu@ip-172-32-17-144:~$ sudo su -
$ root@ip-172-32-17-144:~$ 

ビルドするためにrootでbuild-essential等をインストールします。その後、Roswellをインストールします。

$ root@ip-172-32-17-144:~$ apt-get update
$ root@ip-172-32-17-144:~$ sudo apt-get -y install git build-essential automake libcurl4-openssl-dev
$ root@ip-172-32-17-144:~$ git clone -b release https://github.com/roswell/roswell.git
$ root@ip-172-32-17-144:~$ cd roswell
$ root@ip-172-32-17-144:~$ sh bootstrap
$ root@ip-172-32-17-144:~$ ./configure
$ root@ip-172-32-17-144:~$ make
$ root@ip-172-32-17-144:~$ sudo make install
$ root@ip-172-32-17-144:~$ ros setup

ローカル環境に戻し、再度、Roswellをインストールします。

$ root@ip-172-32-17-144:~$ exit
$ ubuntu@ip-172-32-17-144:~$ git clone -b release https://github.com/roswell/roswell.git
$ ubuntu@ip-172-32-17-144:~$ cd roswell
$ ubuntu@ip-172-32-17-144:~$ sh bootstrap
$ ubuntu@ip-172-32-17-144:~$ ./configure
$ ubuntu@ip-172-32-17-144:~$ make
$ ubuntu@ip-172-32-17-144:~$ sudo make install
$ ubuntu@ip-172-32-17-144:~$ ros setup
* 

ros scriptにPATHを通す

次にように.bashrcを編集してPATHを通します。

$ pwd
/home/ubuntu
$ vi .bashrc
export PATH=$PATH:/home/ubuntu/.roswell/bin/

.bashrc の変更を有効化します。

$ source .bashrc

ポートの開放

EC2のセキュリティポリシーを編集します。インバウンドにカスタムルールを追加します。

f:id:tcooooooool:20190818213533p:plain

Hello, Clack

Clackのインストール

ros installでclackをインストールします。

$ ros install fukamachi/clack

スクリプトを作成する

app.lispを作成して、次のように編集する。

$ ubuntu@ip-172-32-17-144:~$ vi app.lisp
(lambda (env)
  '(200 (:conent-type "text/plain") ("Hello, Clack!")))

clackup でサーバを起動する

$ ubuntu@ip-172-32-17-144:~$ clackup --address 0.0.0.0 --port 80 app.lisp 
Hunchentoot server is going to start.
Listening on 0.0.0.0:5000.

ブラウザで確認する

ブラウザからhttp://t-cool.orgにアクセスします。

Hello, Clackと確認できます。

まとめ

この記事では、Amazon EC2インスタンスCommon Lispの開発環境を構築する方法についてまとめました。

参考になれば幸いです。