今回はエックスサーバーでwebアプリのデプロイの方法をまとめました!
最近はfirebaseやherokuを使っている方も多いですが、独自ドメインを使ってサービスを公開したい!と思う方も多いはず。
というわけで、レンタルサーバーの一つであるエックスサーバーでのアプリのデプロイ方法をまとめました!
前提
- エックスサーバーと契約して、ドメインとるところまでできている
エックスサーバーはドキュメントがわかりやすいし、調べたら結構何でも出てくるので、ドメイン取るのは楽勝だと思います(お金払えば終わり)
1. エックスサーバーで秘密鍵を作る
こちらの公式ドキュメント通りに進めていけば、できます。
ちなみに、「公開鍵認証用鍵ペアの生成、公開鍵の登録」以降はやる必要ありません。
ダウンロードされたkeyは、~/.ssh/xserverに入れましょう
(本当はどこでもいいけど、今回はとりあえずこれで)
$ mkdir ~/.ssh/xserver
$ mv /path/to/********.key ~/.ssh/xserver/
mv ~~~
のコマンドは、SSH設定でダウンロードしたkeyを~/.ssh/xserver
に入れています。
macやwindowsなどで場所が変わるかもしれないので、それぞれ合わせてください。
macならmv ~/download/*****.key ~/.ssh/xserver/
でいけると思います。
2. ssh接続する
設定ができたので、接続しましょう!
コマンドはこれです!
$ ssh -i ~/.ssh/サーバーID.key -p 10022 サーバーID@サーバー名.xserver.jp
サーバーIDは、ダウンロードされたkeyの名前にもなっている名前です。xserverにログインしても確認できますが、ダウンロードされた*****.key
の***
を見ればOKでしょう。
サーバー名はこちらから調べられます。
Enter passphrase for keyと言われるので、設定したパスフレーズを入れてください!
3. エックスサーバー内でgitコマンドが使えるようにする準備をする
デフォルトでgitが入っていないんですよねえ。入っていたとしてもバージョンが超古いという噂(よく知りませんけど、、)
gitを入れるために、gettextを導入します。
gettextの公式サイトから最新バージョンを確認してください
わかりにくいけど、日付と数字で判断します。
そして、sshで接続した状態で。以下のコマンドを実行してください!
$ wget http://ftp.gnu.org/pub/gnu/gettext/公式サイトにある最新のファイルの名前の拡張子がtar.gzのやつ
$ tar zxvf ファイル名
やってることとしては、指定したURLのファイルをダウンロードして、解凍しています。
ちなみに僕がやった時は親切にもファイル名がlatestでした。
なので、こんな感じになりました。サイトは日々更新されるので、みなさんが同じようにできるとは限りません。
$ wget http://ftp.gnu.org/pub/gnu/gettext/gettext-latest.tar.gz
$ tar zxvf gettext-latest.tar.gz
そして、ファイルをダウンロードした後は、インストールしていきます。
(僕が解凍した後のファイル名はgettext-0.19.8.1でした。lsコマンドで確認してみてください。)
$ cd gettext-0.19.8.1 (ファイル名は各自確認してください)
$ ./configure --prefix=/home/サーバーID/opt (サーバーID入れてください)
$ make && make install
インストール終わったら、このコマンドで、インストール成功しているか確認してみてください
$ ~/opt/bin/gettext --version
4. エックスサーバー内でgitが使えるようにする
gitを入れます
3行目、サーバーIDいれてくださいね〜
$ wget https://codeload.github.com/git/git/zip/master
$ unzip master
$ cd git-master && autoconf && ./configure --prefix=/home/サーバーID/opt
$ make all && make install
これが終わったら、インストールされているはずですので、確認していきましょう!
$ ~/opt/bin/git --version
そして、gitにパスを通していきます。
bashrcを開く
$ vi ~/.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 <----------追記
終わったらsourceコマンドで変更を反映させる
$ source ~/.bashrc
パスを通したことで、/opt/git ~~って打たなければならなかったものが、普通にgit ~~~って打てるようになります。
試しに、$ git --version
でgitコマンドが打てるか確認してみましょう!
で、gitの設定を少しだけ。
以下のコマンドを実行してください
$ git config --global user.email "gitのメールアドレス"
$ git config --global user.name "gitのユーザー名"
5. composerのインストール
$ cd ~/opt/bin
$ curl -sS https://getcomposer.org/installer | php
$ mv ~/opt/bin/composer.phar ~/opt/bin/composer
これでcomposer --version
でcomposerが使えるか確認してみてください!
使えるようになっているはずです!
6. gitでssh接続できるようにする
gitでgithubなどのサービスと連携していきたいので、gitでssh接続できるようにします。
$ cd ~/.ssh
$ ssh-keygen
(公開鍵の保存場所を聞かれるけどデフォルトで良いので、何も入力せずにEnterを押し、passphraseを入力する)
公開鍵ができたか確認
$ ls ~/.ssh/id_rsa.pub
id_rsa.pubを開いて、中身をコピーする
vi ~/.ssh/id_rsa.pub
で、githubにssh keyを登録します(new SSH Keysを押して、タイトルを適当に自分がわかりやすいタイトルを入れて、Keyにコピーしたやつを全部貼り付けます)
7. phpのバージョンを変える
これに書いてある通りで変えられます。まさかのデフォルトがphp5系っていう
8. npmを使えるようにする
これ通りにやればいけます!
XserverにNode.jsをインストールしてみる
親切すぎて、何もいうことがない
8. プロジェクトをクローンしてシンボリックリンクを貼る
~/production/
というディレクトリを作成してそこにgit cloneします
そのアプリと、ドメインの公開ディレクトリを紐づければいいってわけですね!
$ cd ~
$ mkdir ~/production
$ git clone git@github.com:******/*****;
Laravelなので、ちょっと初期設定をします
-
gitcloneでは.envはローカルに入らないので、自分でサイド作る必要があります。
-
Laravelならではの初期設定がいろいろあります。
$ php artisan key:generate
$ composer install
$ npm install
そして、シンボリックリンクを貼ります。
$ cd ~/ドメイン名/public_html
$ ln -s ~/production/プロジェクト名/public ./public
.htaccess
は重要なので、一旦コピーしてバックアップを取っておきます
$ cp ./.htaccess ./.htaccess-copy
$ vim ./htaccess
.htaccessにはこのように記述すればOK!
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
これで、public以降のファイルを参照してくれるようになります!
以上!
これで以上になります。
レンタルサーバーを使用してアプリをデプロイする際はぜひ参考にしてみてください!!
詰まったところ補足(ほぼ自分用)
エックスサーバーでmysqlのjsonカラムを使用したい場合、
json型はlongtext型と同義だそうで、
json型でマイグレーションするとエラー発生するが、longtext型だといけました