8
11

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.

IBM CloudにLaravelをデプロイする方法

Last updated at Posted at 2018-01-24

IBM Cloudの良さ

BluemixがIBM Cloudとして生まれ変わったそうです。
さらに、クレジットカード不要で様々な機能を試すことのできるライトアカウントというものも誕生しました。

これによって、「分からずに使ったら、課金されるかも…」という不安からも解消されてより手軽に試せるようになったのではないでしょうか。
無料による制限付きといえども、IBM Cloudの様々な機能が使えるのも魅力ですね:bangbang:

本題

ここからが本題です。
IBM Cloudを使ってlaraveのサンプルモジュールをデプロイする手順を書いていきます。内容は公式のブログを参考にしています。

前提

  • IBM CloudのユーザーIDを持っていて、下記の様なダッシュボードが表示出来ている事。dashuboad.png
  • IBM Cloud CLIがインストールされている事。(インストーラはこちら
  • composer等の環境などは既にあり、laravelの初期構築は問題なく出来る事。

IBM Cloud上でPHPが稼働する環境を構築する。

カタログよりPHPと検索すると、Cloud Foundry アプリとしてPHPを選択できます。
phpcatlog.PNG

必要な情報を入力して「作成」しましょう。
uploading-0app.PNG

下記の画面に遷移すれば成功です。
uploading-0app2.PNG

laravel側の準備

laravelプロジェクトであればなんでも良いのですが、今回は新しくdemoForBlueMixというサンプルを作りました。
コマンドはおなじみですが、

laravel new demoForBlueMix

ですね。念の為にローカル環境で問題なく画面が表示されるかどうか確認しておきましょう。
php artisan key:generateもお忘れなく!
app3.PNG

デプロイの準備

次に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と合致させましょう。
:exclamation: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フォルダの場所の指定などがありますが、見たままですね。:sweat_smile:
サンプル

{
    "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配下
app4.PNG

htdocs配下
app5.PNG

ここまでで、ローカル側の設定は完了です。

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に上げてあります。
こちらも併せて参照してみてください。

8
11
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
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?