XSERVERで、laravelを動かすというプロジェクトがあったため、
ssh接続できるようにし、最新のgitをインストールして、laravelをdeployしたのでメモ
#全体の流れ
- SSHでつながるようにする
- gitをインストールする
- パス(path)を通す
- composerのインストール
- laravelのプロジェクトを特定のディレクトリへデプロイ、インストール
- デプロイした公開ディレクトリを、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になるようにして下さい
- これで接続の準備は完了しました、早速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]