[Swift 3.0] Server Side Swift PerfectをAWSのEC2で稼働させてみました

[Swift 3.0] Server Side Swift PerfectをAWSのEC2で稼働させてみました

Clock Icon2016.09.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Server Side Swift Perfect

こんにちは!
モバイルアプリサービス部の田中孝明です。

WWDC 2016のGoing Server-side with Swift Open Sourceでも語られているとおり、SwiftはServer Sideの言語としても注目されてきています。
今回はServer Side Swift用のfremeworkの一つPerfectを使用してみようと思います。

PerfectはAWSで稼働できるように整備されたAMIを提供しており、簡単にWebServerとして試してみることができます。

AWS Buildpack for Perfect and Swift

AWS向けのパッケージに関してはAWS Buildpack for Perfect and Swiftに記載されています。

AWSのマネージメントコンソールにログインし、EC2のAMIからus-east-1リージョンにあるパブリックイメージからperfect-ubuntu-1510を検索します。

IMA

検索したインスタンスに対し任意のキーペアセキュリティグループを選択し起動します。

Instance

セキュリティグループのインバウンドルールに「HTTP」を忘れずに追加しておきます。
Inboundrule

起動したインスタンスにログインします。

sudo ssh -i ~/.ssh/xxxxx.pem [email protected]


サーバーの設定

サーバーの動作確認にPerfectTemplateを使用して動作確認をします。

執筆時点でビルドにはるSwift 3.0のDEVELOPMENT-SNAPSHOT-2016-08-26-aが必要でした。
初期でインストールされているのがSwift 2.2になりますので、ビルドするためにサポートされているSwift 3.0のSNAPSHOTを取得します。

wget https://swift.org/builds/development/ubuntu1510/swift-DEVELOPMENT-SNAPSHOT-2016-08-26-a/swift-DEVELOPMENT-SNAPSHOT-2016-08-26-a-ubuntu15.10.tar.gz
tar xzf swift-DEVELOPMENT-SNAPSHOT-2016-08-26-a-ubuntu15.10.tar.gz


SwiftのPATHを通しておきます。

export PATH=./swift-DEVELOPMENT-SNAPSHOT-2016-08-26-a-ubuntu15.10/usr/bin:"${PATH}"


今回動作確認に使用するPerfectTemplateを取得します。

git clone https://github.com/PerfectlySoft/PerfectTemplate.git


取得したソースコードをビルドします。

cd PerfectTemplate
swift build


動作確認

ビルドした結果のファイルを実行します。
swift buildで何も指定しない場合はdebugビルドになります。

.build/debug/PerfectTemplate


あとは起動しているEC2インスタンスのパブリックDNSのポート8181にブラウザからアクセスしてみます。

http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8181

HelloWorld


PerfectTemplate動作結果である、Hello, world!が表示されたことを確認しました!

まとめ

今回は起動して、WebServerとしてできるところまで試行しました。
PerfectはMySQLやPostgreSQLを始めとした各DBのConnectorも提供されていますので、機会があれば実際にWebAPIを作成してDBへの読み書きを行って見たいと思います。

参考文献

Perfect
AWS Buildpack for Perfect and Swift
Swift WebフレームワークKituraをDocker on Amazon EC2で動かしてみた

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.