LoginSignup
12
13

More than 5 years have passed since last update.

hetemlにrocketeerでLaravelを設置する

Last updated at Posted at 2015-03-09

概要

レンタルサーバーのhetemlにrocketeerでlaravelを設置する手順
(べつにhetemlじゃなくても良い)

使う予定であったが、結局使う機会には恵まれなかったので記事として残し
糧としたい

各バージョン

  • php: 5.4以上
  • Laravel: 5.0.1
  • Rocketeer: 2.1.0

Laravelプロジェクトの作成

Laravelに関しては特殊なことはしない

$ composer create-project laravel/laravel --prefer-dist

githubにでもpushしておく

Rocketeerの準備

RocketeerはLaravelと一緒にはせず、別のディレクトリに置く
Rocketeerは2015-03-11時点で Laravel 4.0 の Illuminateを参照しようとするため
利用 Laravel が 5.0 だと同じディレクトリに配置できない

$ cd <別ディレクトリ>
$ composer require anahkiasen/rocketeer:dev-master
# 設定ファイルの生成(全てエンターにする)
$ ./vendor/bin/rocketeer ignite

各種設定ファイル

.rocketeer/config.php
    // ...
    'connections'      => [
        'heteml' => [
            'host'      => 'ssh***.heteml.jp:2222',// :の後にportを指定できる
            'username'  => '<username>',
            'password'  => '',
            'key'       => '~/.ssh/id_rsa',
            'keyphrase' => '',
            'agent'     => '',
            'db_role'   => true,
        ],
    ],

Rocketeerがdeployにremote先でcomposerを使うため
heteml側にcomposer.pharを準備しておく

hetemlにssh
$ cd ~
$ mkdir bin
$ cd bin
$ php -r "readfile('https://getcomposer.org/installer');" | php
.rocketeer/paths.php
    // Path to Composer
    'composer' => '/home/sites/heteml/users/u/s/r/<user>/bin/composer.phar',
.rocketeer/remote.php
    // ..
    'root_directory' => '/home/sites/heteml/users/u/s/r/<user>/web/',
    'app_directory'  => 'laravel', // 空でも良い
    // ..
    'shared'         => [
        'storage/logs',
    ],
    // ..
    'permissions'    => [
        'files'    => [
        ],
        'callback' => function ($task, $file) {
            return [
                // php実行ユーザが同じなので0755にするだけで動く
                sprintf('chmod -R 755 %s', $file),
            ];
        },
    ],
.rocketeer/scm.php
リポジトリやユーザ名をgitリポジトリにアクセスできるように設定する

.rocketeer/tasks.php を作成する

"hetemlに" とタイトルでついているのはここの為に有ります
composerが生成する storage/framework/compiled.php があると激しい文字化けに襲われるため配置後に削除する処理を書く

.rocketeer/tasks.php
<?php
use Rocketeer\Facades\Rocketeer;

Rocketeer::addTaskListeners('deploy', 'before-symlink', function ($task) {
    // composerによって生成されるcompiled.phpを削除しないとhetemlで文字化けに襲われる
    $output = $task->runForCurrentRelease("rm storage/framework/compiled.php");
});

あとはheteml側でgitリポジトリにアクセスできるように設定

hetemlにssh
$ cd ~
$ mkdir .ssh -m 0700
$ ssh-keygen -t rsa -C "heteml"
$ cat id_rsa.pub
# githubのプロジェクト単位 deploy keyとかに登録する
$ echo "Host github
    HostName github.com
    User git" >> config
$ chmod 0600 config
$ ssh github
Hello ******! ...

Rocketeer についての補足

2015-03-09時点ではCapistranoの様にローカルにgitリポジトリを持ってきて
tar等にまとめてscpで転送し、deployする機能はありません...

deploy

これで設定は終わりです
全てうまく設定できていればdeployできるハズ

./vendor/bin/rocketeer deploy --on="heteml"
12
13
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
12
13