2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-07

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?