LaravelアプリをMixHostへデプロイ 備忘録2

Laravel

Laravel9, Vue2を使って作ってみた、1ページのみ・DBも使わない・画像アップロードなども何も無い小さなアプリをレンタルサーバーmixhostへデプロイした際のメモです。

以前にも同じような投稿をしているのですが、当時は今よりもっと混乱していたので
余計なこと色々してそうです。。なので改めて書き直し。

git とか ssh接続の部分は省略しています。主に、アップロードする際のディレクトリ構成やコマンド、詰まったところなどの内容になります〜。

やりたいこと

  • mixhostの非公開領域にLaravel本体をアップロード
  • publicのみをmixhostの公開領域にシンボリックリンクで紐付け

おおまかに書くとこれだけです。
ディレクトリ構成はこんな感じにしたいです。

|-----非公開領域
|  |----Laravel本体
|
|---public_html(公開領域)
|   |--tenki(ここにpublicのみリンク貼る)

mixhost非公開領域にLaravelをアップロード

ではいよいよ作業開始です!

git clone

Laravelプロジェクトをgit管理していればこの段階は簡単です。

mixhostにssh接続して、pwdしてみてください。

/home/(アカウント名)

ここか非公開領域なので、

git clone https://github.com/対象のプロジェクト.git

でgithubからプロジェクトを持ってきます。

cloneするディレクトリ名などを変更したい場合はコマンドを適宜変更してください。上記コマンドならgitで管理しているのと同じ名前のディレクトリが作成されます。

これで、

/home/(アカウント名)/(プロジェクト名) にLaravel本体がダウンロードされました。

composer install

git では vendarディレクトリ等は管理していないので、サーバーの中でコマンドを叩いてインストールします。

cd プロジェクト名

でプロジェクトルートに移動します。

そして、php composer install … をしたいところなのですが、私の場合はエラーになりました。

composerが無い、phpのバージョンが低い(Laravel9なのでphp8が必要)という二重苦だったのですが、以下のコマンドで無事インストールできました。

ea-php80 /opt/cpanel/composer/bin/composer install

冒頭の ea-php80 というのは、コマンドの ‘php’と同じ役割です。

mixhostのコントロールパネル > MultiPHPマネージャー でphpのバージョンが確認できるので、使いたいphpバージョンに当てられているea-…を’php’の代わりに使います。

そして、その後の /opt/cpanel/composer/bin/composer ですが、こちらも’composer’と同じ役割です。

composer と打っても使えなかったので、which composer コマンドでcomposerの場所を確認し、それを丸ごと使用しました。

もっとスマートな方法があるかもしれませんが、とりあえず上記でcomposer install完了です!

.env作成

.envも同じくgit管理していないので、ターミナルで作成します。

cp .env.example .env

.envを作成し、必要な箇所を書き換えます。

APP_ENV=production
APP_DEBUG=false
APP_URL=https://本番用ドメイン

あたりは必須で、今回の場合DBは使っていないので不要な箇所をコメントアウト、apiに必要なトークン情報などを追加しました。

key generate

ea-php80 artisan key:generate

ローカルでもやったように、本番でもkeyを生成します。

頭の ea-php80 は先ほどと同じく’php’と同じ役割です。

これで、Laravel本体の準備は完了です!

次に公開領域の設定です。

公開領域から非公開領域を参照するシンボリックリンク作成

今回の作業で、ここが一番詰まりました。。

|---public_html(公開領域)
    |--tenki(ここにpublicのみリンク貼る)

↑↑この /tenki ディレクトリ直下でpublicを参照できるようにしたいのに、どうしても

public_html
   |-tenki
     |-public(index.phpとか)

のようなリンクになってしまい、ブラウザからアクセスすると https://ドメイン/publuc というurlにしなければプロジェクトが表示されませんでした。

シムリンクのコマンドをちゃんと理解していないからかもしれませんが、最終的には以下のようにして希望の動作になりました!

  1. public_html(公開領域) へcd で移動
  2. ln -s /home/アカウント名/Laravelプロジェクト名/public tenki

2のコマンドで、public_html/tenki 直下にindex.php…などがリンクされます。

ターミナルでシムリンクを確認してみましょう。

public_html に居ながら、 ll コマンドを打ちます。

中にあるディレクトリやファイルが表示され、その中に

tenki -> /home/アカウント名/Laravelプロジェクト名/public

と表示されていました〜良かった。

他詰まったところ

mixhostへデプロイするだけならここまでで成功なのですが、私の場合はちゃんと表示はされるものの

apiが500エラーになってしまいどこが原因かわからずシムリンクを疑ったり.htaccessを書いてみたり、おかしなことをしてしまいました。。

原因はデプロイ作業とは全く別のところにあったので別記事にしました。

まとめ

以前やったときは相当あちこち触った気がしますが、今回は「あれ?こんなに手順が少なかったかな?」と思うくらいシンプルでした。

レンタルサーバーなのでphpのバージョンが〜とかcomposerが〜、、等あるかもしれませんが、Laravel9でも問題なくできた!とわかって満足です。

タイトルとURLをコピーしました