PHP
Git
laravel
xserver

XSERVERでssh接続→git最新版インストール→php5.6でlaravel deployまで

XSERVERで、laravelを動かすというプロジェクトがあったため、
ssh接続できるようにし、最新のgitをインストールして、laravelをdeployしたのでメモ

全体の流れ

  1. SSHでつながるようにする
  2. gitをインストールする
  3. パス(path)を通す
  4. composerのインストール
  5. laravelのプロジェクトを特定のディレクトリへデプロイ、インストール
  6. デプロイした公開ディレクトリを、WEBの公開ディレクトリからリダイレクト

XSERVERって

  • https://www.xserver.ne.jp/
  • いわゆるレンタルサーバー
  • SSH接続が可能!!(これが出来るレンタルサーバーは少ない)
  • root権限はないが、ミドルウェアのインストールはできる
  • 対応しているPHPのバージョンが幅広い(7.0.7まで選択できる 2017/02/05現在)
  • 機能についてはこちらを参考
  • 最近のサーバーにはgitが既にインストールされているっぽい
    • 公式サイトでの記述は見当たらなかった、使ってるサーバーにもよるかも
  • composerもインストールされていた(最新ではない)
#git version 1.8.3.1
$ /usr/bin/git --version

#Composer version 1.3.1
$ /usr/bin/composer --version

1. SSHでの接続設定

  • まずはXSERVERのコントロールパネルへログインします
  • 次にSSH接続のボタンをクリック
  • SSHの設定をONへ
  • 今回は複数名でのプロジェクトなので、公開鍵認証用鍵ペア作成を作成し、複数人がSSH接続できるようにします
  • パスフレーズを設定し、公開鍵認証用の鍵ペア作成を押下していくと、秘密鍵がダウンロードできます
  • 参考)https://www.xserver.ne.jp/manual/man_server_ssh.php

SSH接続

  • 私はVagrant上のubuntuからssh接続をしているので、vagrantへダウンロードした鍵ファイルを設置します
  • 場所はどこでも良いですが、仮で/home/vagrant/.ssh/へダウンロードしたhogehoge.keyを設置します
  • この時、hogehoge.keyのパーミッションは600になるようにして下さい image
  • これで接続の準備は完了しました、早速SSH接続してみます
  • XSERVERではsshのポートは10022です、接続ユーザー名、サーバー名は自分の環境に置き換えてください
  • 接続例) $ ssh -i ~/.ssh/hogehoge.key -p 10022 hogehoge@サーバー名.xserver.jp
  • 正しい情報で接続していると、パスフレーズを求められるのでパスフレーズを入力して接続します

2. Gitのインストール

  • gitのインストールにはgettextが必要との事なので、まずgettextをインストールします
  • ちなみにGitが最新じゃなくても良いって人は元々はいっているGitを使われても良いと思います
#インストールディレクトリ
$ mkdir ~/opt
#作業ディレクトリ
$ mkdir ~/sysad

$ cd ~/sysad
$ wget "http://ftp.gnu.org/gnu/gettext/gettext-latest.tar.gz"
$ tar zxvf gettext-latest.tar.gz

#解凍されたディレクトリへ移動しmakeしてinstall 解凍ディレクトリ名はバージョンによって異なります
$ cd gettext-0.19.1
$ ./configure --prefix=/home/<USER>/opt
$ make install

##インストールされたか確認
### gettext (GNU gettext-runtime) 0.19.8.1 のようにバージョンが表示されれば成功
$ ~/opt/bin/gettext --version 

#git install
$ cd ~/sysad/
$ wget https://codeload.github.com/git/git/zip/master
$ unzip master
$ cd git-master
$ autoconf
$ ./configure --prefix=/home/<USER>/opt
$ make all
$ make install

##インストールされたか確認
### git version 2.11.GIT
$ ~/opt/bin/git --version

3. パスを通す

  • gitは~/opt/bin/gitへインストールされていますが、都度/opt/bin/gitは打つのが手間なので、pathを通しておきます
  • zserverはbashで動いているので、~/.bashrcを変更します
  • これにより、$ /opt/bin/git clone git@hogehoge ではなく、$ git clone git@hogehoge で実行できるようになります
##バックアップの作成
$ cp ~/.bashrc ~/.bashrc.bk
##編集の実行
### export PATH=$HOME/opt/bin:$PATH の追加
$ vi ~/.bashrc

##変更内容の反映
$ source ~/.bashrc

##確認
### git version 2.11.GIT 
### ~/opt/bin/git --version と同一の結果になっていればOK
$ git --version

変更後の.bashrc

~/.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
export PATH=$HOME/opt/bin:$PATH

4. composerのインストール

  • 今回はphp5.6を使用するので、php5.6がインストールされているパスを指定します
  • パスは以下より確認できます
  • https://www.xserver.ne.jp/manual/man_program_soft.php
  • php5.6は /usr/bin/php5.6へインストールされているようです
  • composerのインストールコマンドに従い、パスを通した~/optのbinへインストールします
  • ここまでやってサーバー側に既にcomposerはインストールされていることに気づきました・・・しかも結構最新・・・
  • $ /usr/bin/composer --version 1.3.1
$ cd ~/opt/bin
$ curl -sS https://getcomposer.org/installer | /usr/bin/php5.6
$ mv ~/opt/bin/composer.phar ~/opt/bin/composer

#確認
##Composer version 1.3.2
$ composer --version
##サーバーに元からインストールされているバージョンが表示される場合は再度bashrcの再読込を実行
$ source ~/.bashrc

5. laravelのプロジェクトを特定のディレクトリへデプロイ・インストール

  • laravelのデフォルトの公開ディレクトリはpublicですが、XSERVERの公開ディレクトリはpublic_html、サブドメインの場合は、public_html/サブドメイン名が公開ディレクトリとなります
  • このままだとプロジェクトの階層を変えたりと手間なので、新たに非公開領域へディレクトリを作成し、そこへデプロイを行い
  • シンボリックリンクとhtaccessでapacheの公開ディレクトリと、プロジェクトのpublicをつなげたいと思います

構造のイメージ

~/production/    プロジェクトディレクトリ gitをcloneする場所
          /app
          /public      laravelの公開ディレクトリ

~/ドメイン名/public_html  ドメインの公開ディレクトリ
          /.htaccess 全てのアクセスをpublic配下へ移動させる
          /public  ~/production/publicへのシンボリックリンク

deploy、composerの実行、laravel setup

##ソースコードの展開
$ mkdir ~/production
$ cd ~/production
$ git clone git@github.com:FullSpeedInc/ProjectName .
##ライブラリのダウンロード
$ composer install
##laravelの設定
$ /usr/bin/php5.6 artisan key:generate
$ chmod -R 777 storage
$ chmod -R 777 bootstrap/cache
##dbのmigration
$ /usr/bin/php5.6 artisan migrate

6. デプロイした公開ディレクトリを、WEBの公開ディレクトリからリダイレクト

  • 5の構造に合わせて、htaccessの作成とシンボリックリンクの設定をします
cd ~/ドメイン名/public_html
vim .htaccess
ln -s ~/production/public ./public
.htaccess
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]