お名前.com レンタルサーバーで Laravel を動かす
仕事でお名前.com レンタルサーバー
お名前.com レンタルサーバーに Laravel をインストールするうえでポイントとなるのは、以下の点です。
- コマンドライン版の php が使える
- curl コマンドが使える
- ドメインの DocumentRoot は、
/home/(ユーザー名)/public_html/(ドメイン名)/
で固定されていて変更できない - Web 経由の PHP スクリプトはユーザーの権限で実行される
- (おまけ)git コマンド、ssh コマンドが使える
→Deployer を使ってデプロイを自動化するときに必要
Composer をインストールする
このあたりはComposer のインストールから Laravel 6.0 開発環境の構築まででも触れています。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { 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 を ~/bin/ に移動しておきます。
Node.js をインストールする
Laravel Mix を利用するために Node.js が必要なので、インストールします。インストール方法はいろいろあると思いますが、今回は nvm を使いました。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
でインストーラーを実行した後、いったんログアウトし、再度ログイン後
nvm install --lts --latest-npm
を実行することで、最新の LTS 版の Node.js と npm がインストールされます。
Laravel 用のディレクトリを作成し、Laravel をインストールする
上記のように、お名前.com レンタルサーバーは、DocumentRoot を変更できません。ここで ~/public_html/example.com/
に Laravel をインストールしてしまうと、設定等が外部から閲覧可能となってしまい、セキュリティ的によろしくありません。そこで、Laravel 用のディレクトリを作成し、そこに Laravel をインストールします。Laravel 6 を ~/production/
にインストールするのであれば、
cd ~
composer create-project laravel/laravel production "^6.0"
でインストールできます。
公開ディレクトリにシンボリックリンクを張る
このままでは Laravel の公開ディレクトリ(~/production/public/)にアクセスできないので、シンボリックリンクを張ります。ディレクトリを指定してシンボリックリンクが張れれば楽なのですが、お名前.com レンタルサーバーでは、~/public_html/example.com/
の example.com
ディレクトリを削除することができないので、一つずつシンボリックリンクを張っていきます。
ln -s ~/production/public/.htaccess ~/public_html/example.com/
ln -s ~/production/public/favicon.ico ~/public_html/example.com/
ln -s ~/production/public/robots.txt ~/public_html/example.com/
ln -s ~/production/public/web.config ~/public_html/example.com/
ln -s ~/production/public/index.php ~/public_html/example.com/
ln -s ~/production/public/mix-manifest.json ~/public_html/example.com/
ln -s ~/production/public/js ~/public_html/example.com/
ln -s ~/production/public/css ~/public_html/example.com/
ln -s ~/production/public/storage ~/public_html/example.com/
.htaccess を編集する
Laravel をインストールした直後の ~/production/public/.htaccess
のままだとエラーが出てしまうので、修正します(<IfModule mod_negotiation.c> ~ </IfModule>
の部分を削除)。
<IfModule mod_rewrite.c>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
これでインストール完了です。以後は基本的に ~/production/
以下を編集していくことになります。
なお、コマンドライン版の PHP とサーバ版の PHP が同じユーザー権限で動くため、エラーログの出し分けをしなくてもパーミッションのエラーは出ません。
ディスカッション
コメント一覧
まだ、コメントがありません