☁️

お名前.com のレンタルサーバーでLaravelを動かすメモ

2024/04/28に公開

対象

  • RSプランを契約している (重要)
  • CLI を扱える
  • SSH を行なったことがある
  • レンタルサーバ系のコントロールパネルを扱ったことがある
  • PHP 8.1

概要

  1. コントロールパネルから SSH ログインできるようにする
  2. パソコンから SSH ログインする
  3. composer をインストールする
  4. node をインストールする
  5. プロジェクトフォルダを作成する
  6. シンボリックリンクを貼る
  7. .htaccess を修正する

SSH できるようにする

Key の登録

(登録済みの場合はスキップ)
サーバー > SSH に移動し SSH Key を追加 する。

自動生成

秘密鍵がダウンロードされる (Key名.pem)。
該当ファイルを ~/.ssh フォルダに移動して、パーミッションを 600 に変更する

インポート

ローカルで自分で 公開鍵/秘密鍵 を生成する (作り方は各自調べる)。
この時、鍵が ~/.ssh 以外に保存されている場合は、 ~/.ssh に移動しておく。
公開鍵 = パブリックキーをテキストエディタ等 (catコマンドでも良い) で開いてコピーし、フォームに入力する。

パソコンからSSHログインする

追加後 Key一覧 から 詳細 を押し、以下を確認する。

  • ホスト名
  • ポート番号
  • ユーザー名

これをもとにログインする。
接続情報を config に書いておくと便利。

composer をインストールする

インストール

公式サイト の先頭にある php -r と複数行書いてあるコマンドを 順番に1行ずつ コピペして実行する。
執筆時点での記述は次のとおり。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

移動

まずフォルダを作成する。

mkdir ~/bin

次に実行ファイルを移動する。

mv composer.phar ~/bin/composer

確認

composer が使えるかチェック。

composer -V

バージョンが表示されれば問題なし。
例) Composer version 2.6.6 2023-12-08 18:32:26

node をインストールする

まず nvm をインストールする

インストール方法は色々あるので好きな方法で構わない。
ここでは nvm を使う方法を採用する。
github を参考にコマンドを実行する。
執筆時点での記述は次のとおり。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

再ログインする

そのままだと nvm コマンドが実行できないので、一旦ログアウトして、再度SSHログインする。

node をインストールする

サーバーのライブラリの関係で最新バージョンが使えるとは限らない (インストール自体はできる)。
執筆時点での最新は 20系 だったが、エラーが出て実行できず、 18系 もダメだった。
結局 16系 をインストールした (偶数は安定バージョン)。

nvm install 16

確認

node -v

バージョンが表示されれば問題なし。
例) v16.20.2

プロジェクトフォルダを作成する

フォルダ構成は各自好きな様にして問題ないが、 ~/public_html/example.com/ は公開領域になるので、ホーム (~) 配下に置く方が良い。

mkdir ~/projects

git を使う

すでに開発が進行していて git でバージョン管理している場合。

git clone git@~~~

ここでプロジェクトを作る

これから開発を始める場合。

composer create-project laravel/laravel hogehoge~~

シンボリックリンクを貼る

まずプロジェクトをインストールするディレクトリや、公開するドメインごとのディレクトリ名の変数を設定する(ログアウトすると消えるので、途中で接続し直した場合は再度設定する)。

PROJECT_DIR=~/projects/hogehoge/public
SERVICE_DIR=~/public_html/example.com

1行ずつシンボリックリンクをはる

ln -s $PROJECT_DIR/.htaccess $SERVICE_DIR/
ln -s $PROJECT_DIR/favicon.ico $SERVICE_DIR/
ln -s $PROJECT_DIR/robots.txt $SERVICE_DIR/
ln -s $PROJECT_DIR/index.php $SERVICE_DIR/

以下は必要に応じて実行。

ln -s $PROJECT_DIR/build $SERVICE_DIR/
ln -s $PROJECT_DIR/js $SERVICE_DIR/
ln -s $PROJECT_DIR/css $SERVICE_DIR/
ln -s $PROJECT_DIR/images $SERVICE_DIR/
ln -s $PROJECT_DIR/storage $SERVICE_DIR/
ln -s $PROJECT_DIR/web.config $SERVICE_DIR/
ln -s $PROJECT_DIR/mix-manifest.json $SERVICE_DIR/

.htaccess を修正する

~/projects/hogehoge/public/.htaccess そのままだとエラーが出るので、削除もしくはコメントアウトする。

<IfModule mod_rewrite.c>
-    <IfModule mod_negotiation.c>
-        Options -MultiViews -Indexes
-    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

...
</IfModule>

その他

asset などが HTTPS にならない場合

app/Http/Middleware/TrustProxies.php を以下のように変更する。

class TrustProxies extends Middleware
{
-    protected $proxies;
+    protected $proxies = '*';

Discussion