BEAR.Sunday クイックスタートをレンタルサーバーではじめる方法

はじめに

 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

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さんに感謝を申し上げます。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.