IBM Cloudの良さ
BluemixがIBM Cloudとして生まれ変わったそうです。
さらに、クレジットカード不要で様々な機能を試すことのできるライトアカウントというものも誕生しました。
これによって、「分からずに使ったら、課金されるかも…」という不安からも解消されてより手軽に試せるようになったのではないでしょうか。
無料による制限付きといえども、IBM Cloudの様々な機能が使えるのも魅力ですね
本題
ここからが本題です。
IBM Cloudを使ってlaraveのサンプルモジュールをデプロイする手順を書いていきます。内容は公式のブログを参考にしています。
前提
- IBM CloudのユーザーIDを持っていて、下記の様なダッシュボードが表示出来ている事。
- IBM Cloud CLIがインストールされている事。(インストーラはこちら
- composer等の環境などは既にあり、laravelの初期構築は問題なく出来る事。
IBM Cloud上でPHPが稼働する環境を構築する。
カタログよりPHP
と検索すると、Cloud Foundry アプリとしてPHPを選択できます。
laravel側の準備
laravelプロジェクトであればなんでも良いのですが、今回は新しくdemoForBlueMix
というサンプルを作りました。
コマンドはおなじみですが、
laravel new demoForBlueMix
ですね。念の為にローカル環境で問題なく画面が表示されるかどうか確認しておきましょう。
php artisan key:generate
もお忘れなく!
デプロイの準備
次にBluemix用にローカル側のディレクトリ構成を変更していきます。
まずは、デプロイ用のフォルダを作りましょう。(ここではdeploy
とします。)
manifest.ymlの作成
このdeploy
フォルダの配下にmanifest.yml
というファイルを作成して下さい。
これはIBM Cloud上にデプロイを行う為に必要な情報を定義しているものです。
下記がサンプルとなります。
applications:
- path: .
name: testLaravel
memory: 128M
domain: mybluemix.net
buildpack: https://github.com/cloudfoundry/php-buildpack
env:
APP_DEBUG: false
CF_STAGING_TIMEOUT: 15
CF_STARTUP_TIMEOUT: 15
nameには、先ほど作成したIBM Cloudのアプリ名を入れましょう。memoryは、デプロイ後に起動したときに割り当てるメモリです。
ちなみに、ライトアカウントでは上限が256MBとなっています。
domainについても、IBM Cloud上での環境作成時のdomainと合致させましょう。
buildpackはこのままコピーして大丈夫ですが、指定しないとlaravelは動きません。
オプションの詳細な内容を知りたい場合は、こちらを参照してみてください。
laravelディレクトリからのファイル移動
次に下記のファイルをlaravelのディレクトリからdeploy
ディレクトリ直下に移動して下さい。
- .gitignore
- composer.json
- composer.lock
.cfignoreの作成
deploy
フォルダ配下に.cfignore
という名前のファイルを作成して下さい。
記述内容例は下記の通りです。
composer.lock
vendor
node_modules
htdocs/vendor/
htdocs/bootstrap/cache
名前から推測できる通り、これはデプロイ時にアップロードしないフォルダやファイルを指定しています。
htdocsフォルダの作成とlaravelプロジェクトの移動
deploy
フォルダ配下にhtdocs
という名前のフォルダを作成して下さい。
このフォルダの配下にlaravelプロジェクトを移動させて下さい。
composer.jsonの更新
上記の作業でプロジェクトディレクトリがhtdocs
配下に移動となったので、それに伴ってcomposer.json
のディレクトリ指定も変更しましょう。(autoload等の指定時に、htdocsが付与されている事が確認できると思います。)
サンプル
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.0.1",
"laravel/framework": "5.5.*",
"fideloper/proxy": "~3.3",
"laravel/tinker": "~1.0",
"ext-mysqli": "*"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.0",
"symfony/css-selector": "3.1.*",
"symfony/dom-crawler": "3.1.*"
},
"autoload": {
"classmap": [
"htdocs/database"
],
"psr-4": {
"App\\": "htdocs/app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php htdocs/artisan key:generate"
],
"post-install-cmd": [
"mkdir -p /tmp/app/htdocs/bootstrap/cache",
"mkdir -p /tmp/app/htdocs/storage/framework/sessions",
"mkdir -p /tmp/app/htdocs/storage/framework/views",
"mkdir -p /tmp/app/htdocs/storage/framework/cache",
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php htdocs/artisan key:generate"
],
"post-update-cmd": [
"mkdir -p /tmp/app/htdocs/bootstrap/cache",
"mkdir -p /tmp/app/htdocs/storage/framework/sessions",
"mkdir -p /tmp/app/htdocs/storage/framework/views",
"mkdir -p /tmp/app/htdocs/storage/framework/cache",
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"cp /tmp/app/htdocs/.env.example /tmp/app/htdocs/.env",
"php htdocs/artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
}
}
.bp-configディレクトリの作成
deploy
フォルダの配下に.bp-config
という名前のフォルダを作成して下さい。さらにこのディレクトリの下にoptions.json
というファイルを作成して下さい。この指定は、php拡張(MySQLを使用する場合など)に必要となる指定です。他にも、PHPのバージョンやvendor
フォルダの場所の指定などがありますが、見たままですね。
サンプル
{
"PHP_VERSION": "{PHP_70_LATEST}",
"COMPOSER_VENDOR_DIR": "htdocs/vendor",
"WEBDIR": "htdocs/public",
"PHP_EXTENSIONS": ["bz2", "pdo", "zlib", "curl", "mcrypt", "mbstring", "mysqli", "gd", "zip", "pdo_mysql", "pdo_sqlite" ]
}
結果としてディレクトリ構成は下記の様になると思います。
deploy
配下
ここまでで、ローカル側の設定は完了です。
IBM Cloudにデプロイしてみる。
デプロイの方法については、ダッシュボード→上記の手順で作成したIBM Cloudのアプリ→開始で表示される画面の手順そのままです。
簡単に転記しておきます。
コードが置かれているディレクトリーに移動します。
cd your_new_directory
IBM Cloud に接続し、ログインします。
bluemix login -u userID -o org_name -s space_name
bluemix app push コマンドを使用して、your_new_directory からアプリを IBM Cloud に再デプロイします。
bluemix app push testLaravel
これにより、無事にデプロイが完了したかと思います。ワークスペース上の「アプリ URL にアクセス」よりアクセスしてみてください。
laravelの初期画面が表示されればOKです。
今回のQiitaでの説明で作成したソースは、githubに上げてあります。
こちらも併せて参照してみてください。