#はじめに
BEAR.Sundayに興味を持っていて、GW中にクイックスタートに取り組みはじめ、
開発者のKoriymさんのサポートのおかげでレンタルサーバー上で動かすことができました。
感謝!
拙いながらも、インストールから動かすまでをシェアしたいと思います。
#ゴール
・BEAR.SundayのQuick StartをレンタルサーバーXServer上にアップロードし、
ターゲットURL「http://{あなたのドメイン}/foo/api/hello」にアクセスすると
{
"greeting": "Hello BEAR.Sunday",
"_links": {
"self": {
"href": "/foo/api/hello"
}
}
}
が表示されること。
[ポイント] http://{あなたのドメイン}/foo/api/hello?name=bar」にアクセスすると
{
"greeting": "Hello bar",
"_links": {
"self": {
"href": "/foo/hello?name=bar"
}
}
}
が返って来る。
#公式サイト クイックスタート
https://bearsunday.github.io/manuals/1.0/ja/quick-start.html
ローカル開発環境
今回は2つのパターンで試して、どちらも動作しました。
・Windows7 CLI環境
・PHP 7.2.5 (cli) (built: Apr 25 2018 02:20:05) ( ZTS MSVC15 (Visual C++ 2017) x64 )
・Composer version 1.6.4 2018-04-13 12:04:24
・Docker(Windows7)& 公式PHP 7.2.5 に composerなどの関連ツールをインストール
#サーバー環境の準備 (xserverの場合)
・必要なもの
・SSHでの接続
・FTPでの接続
-------------------------------------------
参考: XServerの標準パス例
[ドメインルート]
URL
http://{あなたのドメイン名}/
サーバードメインルートパス:(ウェブ非公開フォルダ)
/home/{ユーザー名}/{あなたのドメイン名}/
ウェブ公開パス:
/home/{ユーザー名}/{あなたのドメイン名}/public_html/
-------------------------------------------
#BEAR.Sunday クイックスタートプロジェクトのインストール
・Windows版の場合
cd C:\temp\bear (作業フォルダ。環境によって変えてください、)
C:\temp\bear>composer create-project -n bear/skeleton MyVendor.MyProject
当方PCだと、10分くらいでインストール完了。
・Docker版は、任意のフォルダを作成し、
$ composer create-project -n bear/skeleton MyVendor.MyProject
を実行
#BEAR.Sundayのpublicフォルダ内にある 「.htaccess」を編集する。
下から2行目にある行を . を追加してカレントディレクトリのindex.phpを指すようにする
変更前 RewriteRule ^(.*)$ /index.php [QSA,L]
変更後 RewriteRule ^(.*)$ ./index.php [QSA,L]
[ポイント] 今回の「foo」みたいなサブディレクトにインストールするときは、
この作業が必要。通常は必要ない。
#PageリソースをMyVendor.MyProject\src\Resource\Page/Fooフォルダ内に作成する
cd Resource/Page
mkdir Foo
Hello.phpを作成する
/home/{ユーザー名}/{あなたのドメイン名}/app_bear/MyVendor.MyProjec/src/Resource/Page/Foo/Hello.php
<?php
namespace MyVendor\MyProject\Resource\Page\Foo;
use BEAR\Resource\ResourceObject;
class Hello extends ResourceObject
{
public function onGet(string $name = 'BEAR.Sunday') : ResourceObject
{
$this->body = [
'greeting' => 'Hello ' . $name
];
return $this;
}
}
※ポイント ここでは、アクセスURLに「foo」ディレクトリが含まれているので、
ソースの配置場所は、Fooディレクトリの下になる
※ポイント 配置ディレクトリにあわせて、、ソースの namespaceに「Foo」を追加すること
namespace MyVendor\MyProject\Resource\Page\Foo;
#MyVendor.MyProjectをzipファイルにまとめる(ローカル側)
MyVendor.MyProjectフォルダごとzipに圧縮
MyVendor.MyProject.zipができる
#サーバー側のアップロード先フォルダ「app_bear」の作成
・ウェブ非公開フォルダのドメインルートパスに、「app_bear」フォルダを作成
$cd /home/{ユーザー名}/{あなたのドメイン名}/
$mkdir app_bear
#FTPで 作成したzipファイルを、app_bearフォルダへ転送
転送先 /home/{ユーザー名}/{あなたのドメイン名}/app_bear/
[注意ポイント] アップロードするコードなどは、ウェブ非公開のフォルダに保存すること
#転送したtutorialファイルの展開
・サーバーへSSH接続後、
cd /home/{ユーザー名}/{あなたのドメイン名}/app_bear
unzip MyVendor.MyProject.zip
展開すると、MyVendor.MyProjectフォルダが作成され、そのなかに展開されたファイルが
/home/{ユーザー名}/{あなたのドメイン名}/app_bear/MyVendor.MyProject にファイルが設置される
・MyVendor.MyProjectのファイル全部を作成したapp_bearフォルダにアップロード
[ポイント] 1つ1つ転送するとものすごく時間がたくさんかかるので、
ローカル側で圧縮したファイルを送り、サーバー側で展開すると効率的
#web公開フォルダに、「foo」ディレクトリを作る
cd /home/{ユーザー名}/{あなたのドメイン名}/public_html/
mkdir foo
cd foo
#BEAR.Sundayのpublicフォルダ内にある 「.htaccess」と「index.php」にシンボリックリンクを貼る
ln -s /home/{ユーザー名}/{あなたのドメイン名}/app_bear/MyVendor.MyProject/public/.htaccess .
ln -s /home/{ユーザー名}/{あなたのドメイン名}/app_bear/MyVendor.MyProject/public/index.php .
#ブラウザでアクセス
http://{あなたのドメイン名}/foo/hello
表示が下記のようになれば成功です。
{
"greeting": "Hello BEAR.Sunday",
"_links": {
"self": {
"href": "/foo/hello"
}
}
}
クエリも試してみましょう。
http://{あなたのドメイン名}/foo/hello?name=bar
表示が下記のようになれば成功です。
{
"greeting": "Hello bar",
"_links": {
"self": {
"href": "/foo/hello?name=bar"
}
}
}
※ポイント エラーが出る場合は、「touch src」を実行するといいようです。
※ポイント Not FoundとJSONで返って来る場合、2箇所、再チェックする。
{
"message": "Not Found"
}
・最初のチェックポイント
var/log/ フォルダにエラーが記録されてないか確認しましょう。
$_SERVERなどの値が記録されているので、おかしくないか確認します
・2番目のチェックポイント
public/index.phpが呼ばれてるか確認するために、
ソース2行目に echo $_SERVER['REQUEST_URI']; を追加して、表示されるか調べる
先頭に、/foo/hello が表示されれば、index.phpは呼ばれているのでOK。
[注意] 追加した部分は元に戻して再アップロードしておくこと。
・3番目のチェックポイント
Resouce/Pageフォルダ内に、「Foo」フォルダが作成されているか、
そして、Hello.php内の namespaceが MyVendor\MyProject\Resource\Page\Foo に
なっているかチェック。
クラス名がHelloになっているか。
[ポイント] 「touch src」を実行すると生成コードがリセットされます。
エラーが出た時に試してみましょう。
$touch /home/{ユーザー名}/{あなたのドメイン名}/app_bear/MyVendor.MyProject/src
そうしないとエラー画面が表示されることがある。
その後、再度ブラウザでアクセスすればOK
#おつかれさまでした。
以上で終了です。
これでBEAR.Sundayの最初の扉を開けることができました。
BEAR.Sundayの開発者さまのみなさま、特に直接サポートしていただいたKoriymさんに感謝を申し上げます。