Laravelで作ったアプリケーションをマネクラにデプロイしたい。
【追記 2018/05/12】
現在マネクラのphpコンテナでは git push deployに対応ができていないとの事
【追記】
正式リリースおめでとうございます!!!!
という事でこれからもバンバン使わせて頂きます!!
Push to Deployができる環境にする
まずはプロジェクトの管理画面に入ってSSHでログインする為の情報を確認する
入ったらPHPのverを確認する。。
確認すると、どうやらphpは7.2.4なので、最新。
最高すぎる。
code:php
__ __ ____ _ _ _
| \/ |/ ___| | | ___ | (_)_ __ ___ _ __
| |\/| | | | | / _ \| | | '_ \ / _ \| '_ \
| | | | |___ _| |__| (_) | | | |_) | (_) | |_) |
|_| |_|\____(_)_____\___/|_|_| .__/ \___/| .__/
|_| |_|
******* Welcome to Lolipop! Managed Cloud *******
php -v
PHP 7.2.4 (cli) (built: Apr 3 2018 09:34:07) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
remote add
code:md
git remote add lolipop ssh://<ユーザー名>@<ホスト名>:<ポート>
これの形にそって、remote addしてみる。
code:md
git push lolipop master
Error!
code:md
fatal: '/' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Could not read from remote repository.となっているので、gitがないのが原因かな...?
ルートディレクトリにpushしようとしまっているので、remote側でどこのディレクトリにpushすべきかを指定してあげる必要がある。新しく/var/www/current/.gitを作ってgit pushしてみる。
さっきのremote addで追加したlolipopの設定は一旦消して再度、ディレクトリを指定してgti remote addしてみる。
code:sh
git remote add lolipop ssh://<ユーザー名>@<ホスト名>:<ポート>/var/www/current/
git pushしてみる。
code:sh
Counting objects: 3, done.
Writing objects: 100% (3/3), 240 bytes | 120.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://ssh-1.mc.lolipop.jp:1234hoge/var/www/current/.git
error: failed to push some refs to
めっちゃ怒られた。
これとか見る。
.git/configのbareをtrueにする。
code:sh
repositoryformatversion = 0
filemode = true
# ここをfalseからtrueにする。
bare = true
logallrefupdates = true
git config --get-all core.bare
再度pushする。
でき....た?
code:sh
Counting objects: 3, done.
Writing objects: 100% (3/3), 240 bytes | 240.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://ssh-1.mc.lolipop.jp:1234hoge/var/www/current/
本当にできたのか??
再度変更してpushしてみる。
code:sh
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 328 bytes | 328.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://ssh-1.mc.lolipop.jp:1234hoge/var/www/current/
36363ef..930bcb9 master -> master
なんか送っているからできてる感じはするんだけどなぁ...
git configで、receive.denyCurrentBranchをupdateInsteadに設定しておきます。
code:sh
git config --get receive.denyCurrentBranch
git config receive.denyCurrentBranch updateInstead
git config --get receive.denyCurrentBranch
状態にして再度git pushしてみる。
が確認したが、ファイルはpushされてなかった。
だめだった。続きはまた後日
____
直接Laravelを入れる
マネクラの恩恵が一切ないが、悔しいので直接Laravelをインストールして、プロジェクトを作る所までやってみる。
とりあえずcomposer install
code:sh
All settings correct for using Composer
Downloading...
Composer (version 1.6.4) successfully installed to: /var/www/composer.phar
Use it: php composer.phar
普通に入った。user/local/binに移動させる。
code:md
mv composer.phar /usr/local/bin/composer
と思ったが権限がないので、できない
一旦var/wwww上でcomposerは入ったのでLaravelを入れてみる。
code:php
php composer.phar global require "laravel/installer"
Changed current directory to /var/www/.composer
Using version ^2.0 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 9 installs, 0 updates, 0 removals
- Installing symfony/process (v4.0.8): Downloading (100%)
- Installing symfony/filesystem (v4.0.8): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.7.0): Downloading (100%)
- Installing symfony/console (v4.0.8): Downloading (100%)
- Installing guzzlehttp/promises (v1.3.1): Downloading (100%)
- Installing psr/http-message (1.0.1): Downloading (100%)
- Installing guzzlehttp/psr7 (1.4.2): Downloading (100%)
- Installing guzzlehttp/guzzle (6.3.2): Downloading (100%)
- Installing laravel/installer (v2.0.1): Downloading (100%)
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/lock ()
symfony/console suggests installing psr/log (For using the console logger)
guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware)
Writing lock file
Generating autoload files
composer create-project --prefer-dist laravel/laravel blog
hookを使ってデプロイを行う
To Do
laravel/envoyでデプロイ環境を生成する。
公式ドキュメントがある。
code:md
consolidation/Roboでデプロイ環境を生成する。
こちらの方がメジャーらしい。
code:md