お名前.com のレンタルサーバーでLaravelを動かすメモ
対象
- RSプランを契約している (重要)
- CLI を扱える
- SSH を行なったことがある
- レンタルサーバ系のコントロールパネルを扱ったことがある
- PHP 8.1
概要
- コントロールパネルから SSH ログインできるようにする
- パソコンから SSH ログインする
- composer をインストールする
- node をインストールする
- プロジェクトフォルダを作成する
- シンボリックリンクを貼る
- .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