LoginSignup
2
3

More than 5 years have passed since last update.

Laravel PHP を Heroku へ deploy してみた

Last updated at Posted at 2017-02-15

HerokuLaravel を deploy してみたメモ

前提条件

  • Heroku アカウント取得済み
  • heroku toolbelt を導入済み
  • Composer を導入済み
  • git 導入済み

composer で Laravel Project を作成

create-project
$ composer create-project laravel/laravel
Installing laravel/laravel (v5.4.9)
  - Installing laravel/laravel (v5.4.9) Downloading: 100%
Created project in /Users/tabe/working/php/laravel/test/laravel
> php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 59 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-mbstring (v1.3.0) Downloading: 100%
  - Installing symfony/var-dumper (v3.2.3) Downloading: 100%
  - Installing jakub-onderka/php-console-color (0.1) Downloading: 100%
  - Installing jakub-onderka/php-console-highlighter (v0.3.2) Downloading: 100%
  - Installing dnoegel/php-xdg-base-dir (0.1) Downloading: 100%
  - Installing nikic/php-parser (v3.0.4) Downloading: 100%
  - Installing psr/log (1.0.2) Downloading: 100%
  - Installing symfony/debug (v3.2.3) Downloading: 100%
  - Installing symfony/console (v3.2.3) Downloading: 100%
  - Installing psy/psysh (v0.8.1) Downloading: 100%
  - Installing vlucas/phpdotenv (v2.4.0) Downloading: 100%
  - Installing symfony/css-selector (v3.2.3) Downloading: 100%
  - Installing tijsverkoyen/css-to-inline-styles (2.2.0) Downloading: 100%
  - Installing symfony/routing (v3.2.3) Downloading: 100%
  - Installing symfony/process (v3.2.3) Downloading: 100%
  - Installing symfony/http-foundation (v3.2.3) Downloading: 100%
  - Installing symfony/event-dispatcher (v3.2.3) Downloading: 100%
  - Installing symfony/http-kernel (v3.2.3) Downloading: 100%
  - Installing symfony/finder (v3.2.3) Downloading: 100%
  - Installing swiftmailer/swiftmailer (v5.4.6) Downloading: 100%
  - Installing paragonie/random_compat (v2.0.4) Downloading: 100%
  - Installing ramsey/uuid (3.5.2) Downloading: 100%
  - Installing symfony/translation (v3.2.3) Downloading: 100%
  - Installing nesbot/carbon (1.22.1) Downloading: 100%
  - Installing mtdowling/cron-expression (v1.2.0) Downloading: 100%
  - Installing monolog/monolog (1.22.0) Downloading: 100%
  - Installing league/flysystem (1.0.35) Downloading: 100%
  - Installing erusev/parsedown (1.6.1) Downloading: 100%
  - Installing doctrine/inflector (v1.1.0) Downloading: 100%
  - Installing laravel/framework (v5.4.11) Downloading: 100%
  - Installing laravel/tinker (v1.0.0) Downloading: 100%
  - Installing fzaninotto/faker (v1.6.0) Downloading: 100%
  - Installing hamcrest/hamcrest-php (v1.2.2) Downloading: 100%
  - Installing mockery/mockery (0.9.8) Downloading: 100%
  - Installing symfony/yaml (v3.2.3) Downloading: 100%
  - Installing sebastian/version (2.0.1) Downloading: 100%
  - Installing sebastian/resource-operations (1.0.0) Downloading: 100%
  - Installing sebastian/recursion-context (2.0.0) Downloading: 100%
  - Installing sebastian/object-enumerator (2.0.0) Downloading: 100%
  - Installing sebastian/global-state (1.1.1) Downloading: 100%
  - Installing sebastian/exporter (2.0.0) Downloading: 100%
  - Installing sebastian/environment (2.0.0) Downloading: 100%
  - Installing sebastian/diff (1.4.1) Downloading: 100%
  - Installing sebastian/comparator (1.2.4) Downloading: 100%
  - Installing doctrine/instantiator (1.0.5) Downloading: 100%
  - Installing phpunit/php-text-template (1.2.1) Downloading: 100%
  - Installing phpunit/phpunit-mock-objects (3.4.3) Downloading: 100%
  - Installing phpunit/php-timer (1.0.8) Downloading: 100%
  - Installing phpunit/php-file-iterator (1.4.2) Downloading: 100%
  - Installing sebastian/code-unit-reverse-lookup (1.0.0) Downloading: 100%
  - Installing phpunit/php-token-stream (1.4.9) Downloading: 100%
  - Installing phpunit/php-code-coverage (4.0.5) Downloading: 100%
  - Installing webmozart/assert (1.2.0) Downloading: 100%
  - Installing phpdocumentor/reflection-common (1.0) Downloading: 100%
  - Installing phpdocumentor/type-resolver (0.2.1) Downloading: 100%
  - Installing phpdocumentor/reflection-docblock (3.1.1) Downloading: 100%
  - Installing phpspec/prophecy (v1.6.2) Downloading: 100%
  - Installing myclabs/deep-copy (1.6.0) Downloading: 100%
  - Installing phpunit/phpunit (5.7.13) Downloading: 100%
symfony/var-dumper suggests installing ext-symfony_debug ()
symfony/console suggests installing symfony/filesystem ()
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
psy/psysh suggests installing hoa/console (A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit.)
symfony/routing suggests installing doctrine/annotations (For using the annotation loader)
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/dependency-injection (For loading routes from a service)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/browser-kit ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
ramsey/uuid suggests installing ircmaxell/random-lib (Provides RandomLib for use with the RandomLibAdapter)
ramsey/uuid suggests installing ext-libsodium (Provides the PECL libsodium extension for use with the SodiumRandomGenerator)
ramsey/uuid suggests installing ext-uuid (Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator)
ramsey/uuid suggests installing moontoast/math (Provides support for converting UUID to 128-bit integer (in string form).)
ramsey/uuid suggests installing ramsey/uuid-doctrine (Allows the use of Ramsey\Uuid\Uuid as Doctrine field type.)
ramsey/uuid suggests installing ramsey/uuid-console (A console application for generating UUIDs with ramsey/uuid)
symfony/translation suggests installing symfony/config ()
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-copy (Allows you to use Copy.com storage)
league/flysystem suggests installing league/flysystem-dropbox (Allows you to use Dropbox storage)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (~3.0).)
laravel/framework suggests installing doctrine/dbal (Required to rename columns and drop SQLite columns (~2.5).)
laravel/framework suggests installing guzzlehttp/guzzle (Required to use the Mailgun and Mandrill mail drivers and theping methods on schedules (~6.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (~1.0).)
laravel/framework suggests installing league/flysystem-rackspace (Required to use the Flysystem Rackspace driver (~1.0).)
laravel/framework suggests installing nexmo/client (Required to use the Nexmo transport (~1.0).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (~3.0).)
laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (~1.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).)
laravel/framework suggests installing symfony/dom-crawler (Required to use most of the crawler integration testing tools (~3.2).)
laravel/framework suggests installing symfony/psr-http-message-bridge (Required to psr7 bridging features (0.2.*).)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.4.0)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
> php artisan key:generate
Application key [base64:*********] set successfully.

Procfile を準備

Procfile
$ cd laravel
$ ls
app             composer.json   database        public          routes          tests
artisan         composer.lock   package.json    readme.md       server.php      vendor
bootstrap       config          phpunit.xml     resources       storage         webpack.mix.js
$ echo 'web: vendor/bin/heroku-php-apache2 public' >> Procfile

git 初期化

git-init
$ git init
Initialized empty Git repository in /****/laravel/.git/

Heroku App を作成

heroku-create
$ heroku create
Creating app... done, ⬢ afternoon-shelf-58335
https://afternoon-shelf-58335.herokuapp.com/ | https://git.heroku.com/afternoon-shelf-58335.git

.gitignore 作成

gitignore
$ gibo dump Composer Laravel >> .gitignore
$ echo .env.example >> .gitignore

.gitignore 内の bootstrap/cache/# をつけて、注釈しておく

git commit

git
$ git add -A && git commit -am 'Laravel test'
[master (root-commit) d9bbe8a] Laravel test
 79 files changed, 6281 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 Procfile
 create mode 100644 app/Console/Kernel.php
 create mode 100644 app/Exceptions/Handler.php
 create mode 100644 app/Http/Controllers/Auth/ForgotPasswordController.php
 create mode 100644 app/Http/Controllers/Auth/LoginController.php
 create mode 100644 app/Http/Controllers/Auth/RegisterController.php
 create mode 100644 app/Http/Controllers/Auth/ResetPasswordController.php
 create mode 100644 app/Http/Controllers/Controller.php
 create mode 100644 app/Http/Kernel.php
 create mode 100644 app/Http/Middleware/EncryptCookies.php
 create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php
 create mode 100644 app/Http/Middleware/TrimStrings.php
 create mode 100644 app/Http/Middleware/VerifyCsrfToken.php
 create mode 100644 app/Providers/AppServiceProvider.php
 create mode 100644 app/Providers/AuthServiceProvider.php
 create mode 100644 app/Providers/BroadcastServiceProvider.php
 create mode 100644 app/Providers/EventServiceProvider.php
 create mode 100644 app/Providers/RouteServiceProvider.php
 create mode 100644 app/User.php
 create mode 100755 artisan
 create mode 100644 bootstrap/app.php
 create mode 100644 bootstrap/autoload.php
 create mode 100644 bootstrap/cache/service.php
 create mode 100644 composer.json
 create mode 100644 composer.lock
 create mode 100644 config/app.php
 create mode 100644 config/auth.php
 create mode 100644 config/broadcasting.php
 create mode 100644 config/cache.php
 create mode 100644 config/database.php
 create mode 100644 config/filesystems.php
 create mode 100644 config/mail.php
 create mode 100644 config/queue.php
 create mode 100644 config/services.php
 create mode 100644 config/session.php
 create mode 100644 config/view.php
 create mode 100644 database/.gitignore
 create mode 100644 database/factories/ModelFactory.php
 create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php
 create mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php
 create mode 100644 database/seeds/DatabaseSeeder.php
 create mode 100644 package.json
 create mode 100644 phpunit.xml
 create mode 100644 public/.htaccess
 create mode 100644 public/css/app.css
 create mode 100644 public/favicon.ico
 create mode 100644 public/index.php
 create mode 100644 public/js/app.js
 create mode 100644 public/robots.txt
 create mode 100644 public/web.config
 create mode 100644 readme.md
 create mode 100644 resources/assets/js/app.js
 create mode 100644 resources/assets/js/bootstrap.js
 create mode 100644 resources/assets/js/components/Example.vue
 create mode 100644 resources/assets/sass/_variables.scss
 create mode 100644 resources/assets/sass/app.scss
 create mode 100644 resources/lang/en/auth.php
 create mode 100644 resources/lang/en/pagination.php
 create mode 100644 resources/lang/en/passwords.php
 create mode 100644 resources/lang/en/validation.php
 create mode 100644 resources/views/welcome.blade.php
 create mode 100644 routes/api.php
 create mode 100644 routes/channels.php
 create mode 100644 routes/console.php
 create mode 100644 routes/web.php
 create mode 100644 server.php
 create mode 100644 storage/app/.gitignore
 create mode 100644 storage/app/public/.gitignore
 create mode 100644 storage/framework/.gitignore
 create mode 100644 storage/framework/cache/.gitignore
 create mode 100644 storage/framework/sessions/.gitignore
 create mode 100644 storage/framework/views/.gitignore
 create mode 100644 storage/logs/.gitignore
 create mode 100644 tests/CreatesApplication.php
 create mode 100644 tests/Feature/ExampleTest.php
 create mode 100644 tests/TestCase.php
 create mode 100644 tests/Unit/ExampleTest.php
 create mode 100644 webpack.mix.js

ひとまず deploy してみる

git-push
$ git push heroku master
Counting objects: 114, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (96/96), done.
Writing objects: 100% (114/114), 161.53 KiB | 0 bytes/s, done.
Total 114 (delta 11), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote:  !     Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
remote:                         Detected buildpacks: PHP,Node.js
remote:                         See https://devcenter.heroku.com/articles/buildpacks##buildpack-detect-order
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        - php (7.1.1)
remote:        - ext-mbstring (bundled with php)
remote:        - apache (2.4.20)
remote:        - nginx (1.8.1)
remote: -----> Installing dependencies...
remote:        Composer version 1.2.4 2016-12-06 22:00:51
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:          - Installing doctrine/inflector (v1.1.0)
remote:            Downloading: 100%
remote:
remote:          - Installing erusev/parsedown (1.6.1)
remote:            Downloading: 100%
remote:
remote:          - Installing jakub-onderka/php-console-color (0.1)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/polyfill-mbstring (v1.3.0)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/var-dumper (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing psr/log (1.0.2)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/debug (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/console (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing nikic/php-parser (v3.0.4)
remote:            Downloading: 100%
remote:
remote:          - Installing jakub-onderka/php-console-highlighter (v0.3.2)
remote:            Downloading: 100%
remote:
remote:          - Installing dnoegel/php-xdg-base-dir (0.1)
remote:            Downloading: 100%
remote:
remote:          - Installing psy/psysh (v0.8.1)
remote:            Downloading: 100%
remote:
remote:          - Installing vlucas/phpdotenv (v2.4.0)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/css-selector (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing tijsverkoyen/css-to-inline-styles (2.2.0)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/routing (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/process (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/http-foundation (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/event-dispatcher (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/http-kernel (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/finder (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing swiftmailer/swiftmailer (v5.4.6)
remote:            Downloading: 100%
remote:
remote:          - Installing paragonie/random_compat (v2.0.4)
remote:            Downloading: 100%
remote:
remote:          - Installing ramsey/uuid (3.5.2)
remote:            Downloading: 100%
remote:
remote:          - Installing symfony/translation (v3.2.3)
remote:            Downloading: 100%
remote:
remote:          - Installing nesbot/carbon (1.22.1)
remote:            Downloading: 100%
remote:
remote:          - Installing mtdowling/cron-expression (v1.2.0)
remote:            Downloading: 100%
remote:
remote:          - Installing monolog/monolog (1.22.0)
remote:            Downloading: 100%
remote:
remote:          - Installing league/flysystem (1.0.35)
remote:            Downloading: 100%
remote:
remote:          - Installing laravel/framework (v5.4.11)
remote:            Downloading: 100%
remote:
remote:          - Installing laravel/tinker (v1.0.0)
remote:            Downloading: 100%
remote:
remote:        Generating optimized autoload files
remote:        > Illuminate\Foundation\ComposerScripts::postInstall
remote:        > php artisan optimize
remote:        Generating optimized class loader
remote:        The compiled services file has been removed.
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 16M
remote: -----> Launching...
remote:        Released v3
remote:        https://sheltered-lake-94045.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/sheltered-lake-94045.git
 * [new branch]      master -> master

APP_KEY を定義

config
$ heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)
Setting APP_KEY and restarting ⬢ sheltered-lake-94045... done, v9
APP_KEY: base64:NlWvRWrMlKFwA+EkX6fuE+njWyMIR7jwwe9uRP34LKw=

起動確認

open
$ heroku open

Screen Shot 2017-02-15 at 15.36.23.png

完了

2
3
2

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
3