Ubuntu上でSwiftサーバーサイドフレームワークのPerfectを動かしてみた

  • 31
    いいね
  • 5
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

11月末にSwiftのサーバーサイドフレームワークのPerfectが発表されました。さっそく試してみます。

image

まずは

ワクワクしながらSwiftでサーバサイドプログラムを書く with Perfect(導入編)を参考にMac上で動かしてみました。なるほど、簡単に動きますね。

次はXcodeを使わずにやってみたい!

ということでMac上でサクっとやりたいのですがmakeでこけます。残念。このイシューで同じ内容を指摘されていますので、このissueが解決されるのを待ちましょう。(え、自分で修正してプルリク送れよ、というツッコミはなしで)。ということでLinuxで試してみました。基本的に各種公式ドキュメントの手順をトレースしています。

試した環境

  • Ubuntu 15.10 (OSX ElCapitan 10.11.2上にのせてます)

Ubuntu15.10は、Ubuntu 15.10 日本語 Remix リリースからisoイメージをDLしてきてVirtualBoxで上で準備しました。本当はVagrantでbox使ってさくっとやりたかったのですが、色々ハマりまして。。。需要あれば環境準備手順もどこかにまとめます。一応少しだけまとめてあります->Ubuntu 15.10 日本語版をVirutualBox上にインストールする方法(sshできない罠も解消)あと、Perfectは今のところ15.10でしか動かないらしいです。appleさんは15.10だけでなくて14.04もswiftのサポートしてくれてるんでひょっとしたら動くかもですが。

ざっくり手順

1.Ubuntu上でSwiftを実行できるように
2.Perfectをclone
3.その他必要なものを準備
4.動作確認してみます

実際にやってみます

1.Ubuntu上でSwiftを実行できるように

公式ページのGetting Startedの手順にそってます。swiftをソースコードからビルドしたい方はapple/swiftからどうぞ。

1-1. Swift公式ページのDownload Swiftにアクセスし、Ubuntu 15.10 Swift 2.2 SnapshotをDL

image

1-2. clangをインストール

※clang(クラン)とはコンパイラです。詳しくはwiki参照。

sudo apt-get install clang

1-3. PATHを通す

export PATH=/path/to/Swift/usr/bin:"${PATH}"

1-4. 動作確認

これでswiftが実行できるようになりました。(とても簡単でしたね!)

対話型で実行してみると、、、動きます。
image

もちろん*.swiftも実行できます。公式ページによるとLinuxではGlibcをimportする必要があるとのことです。

image

image

2.Perfectをclone

まずはgitインストール

sudo apt-get install git

次はPerfectをcloneしましょう。

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

認証求められると思いますのでご自分のIDとPASSをいれてください。

3. 必要なものを準備

基本的に公式のREADMEの通り。

image

3.1 PerfectLibをbuild

# 必要なライブラリをinstall
sudo apt-get install libssl-dev libevent-dev

# build
cd {Perfectをcloneしたディレクトリ}/PerfectLib
make
sudo make install

自分では試せてないですが、ライブラリが足りずにmakeでこけるみたいです。
詳しくはubuntu15.10にswift+Perfect環境を作ろうとしたらmakeで結構怒られたのでメモを参照です。

3.2 PerfectServerをbuild

cd {Perfectをcloneしたディレクトリ}/PerfectServer
make

3.3 Apache2をinstall

デフォルトではapacheが入ってないのでinstall

sudo apt-get install apache2

4. 動作確認してみます

上手く動かなかったので、こちらの記事サーバーサイド Swift フレームワークである Perfect を Docker で動かせるようにしたを参考にさせていただきました。

4.1 PerfectServer起動

参考にした記事によるとperfectserverhttpを実行するディレクトリ内に、PerfectLibrariesディレクトリが必要でなおかつその中にsoファイルの実体もしくはシンボリックリンクが貼られてないといけないようです。

cd {Perfectをcloneしたディレクトリ}/Examples
# アプリケーションをコンパイル
make

mkdir PerfectLibraries
cd PerfectLibraries

# シンボリックリンクはります
ln -s {Perfectをcloneしたディレクトリ}/Examples/URL\ Routing/URLRouting.so .
cd ..
./perfectserverhttp

今回はURL Routingを試してみました。詳細はこちらをご参照いただきたいですが、名前の通りルーティングをどうするかを理解するためのサンプルのようです。もし他のアプリケーションを動かしたい場合は、シンボリックリンクの向き先を相当するsoファイルに向けてください。

ブラウザでアクセスしてみます

OKですね!
image

おわりに

一応うまく行きましたが、もう少し色々やってみたいので進捗あったら更新しますm(_ _)m

ご協力いただいた方々