ApacheでLaravelを立ち上げる手順をまとめます。
実行環境
筆者の動作環境は以下の通りでございます。
- OS: Ubuntu 18.04.3 LTS
- Laravel: 6.2
- Apache: 2.4.29
前提条件
以下の手順を済ませている前提で勧めます。
- laravelコマンドをインストールしてある("laravel new blog"でプロジェクトを作成できるっていう意味)
- Apacheをインストールしてある
手順
1. 作業ディレクトリにLaravelプロジェクトを作成する
作業しやすい場所にlaravelコマンドでプロジェクトを作成してください。
[user@ ~/]$ cd ~/work
[user@ ~/work]$ laravel new laravelapp
2. Laravelプロジェクト用のドメインをetc/hostsに書き込む
自分自身のアドレス(127.0.0.1)にLaravelプロジェクトのドメインを割り当てるために"/etc/hosts"に以下を追記しましょう。
下の例ではドメインは"my-laravelapp.localhost"になってます。
/etc/hosts
127.0.0.1 my-laravelapp.localhost
3. 割り当てたドメインに対するVirtualHostsの設定を書き込む
ApacheのVirtualHostを使って、追加したドメイン(my-laravelapp.localhost)にアクセスしたときに、どのディレクトリを参照するかを設定しましょう。
また、VirtualHostが有効になっていることを確認してください。
/etc/apache2/sites-available/my-laravelapp.conf
<VirtualHost *:80>
ServerName my-laravelapp.localhost
ServerAdmin sample-user@my-laravelapp.localhost
DocumentRoot /var/www/html/laravelapp/public
LogLevel debug
<Directory "/var/www/html/laravelapp">
RewriteEngine On
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
また、上記で"RewriteEngine On"の設定をしていますが、rewrite_moduleの設定がない場合はその設定をしましょう。
/etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
補足
- "ServerName"に追加したドメイン(my-laravelapp.localhost) を設定します。
- "DocumentRoot"はApacheがアクセスするディレクトリです。まだ、"/var/www/html/laravelApp/public"のパスはありませんが、後で設定します。
- "<Directory "/var/www/html/laravelapp">では"/var/www/html/laravelapp"以下の階層のファイルのアクセスできるように設定してあります。
- "RewritEngine On"でLaravelのルーティング(my-laravelapp.localhost/sampleにアクセスすると、対象のファイルを開いてくれる)に対応します。
設定したら、以下のコマンドで反映しましょう。
[user@ ~/]$ sudo a2emod rewrite
[user@ ~/]$ sudo a2ensite my-laravelapp.conf
[user@ ~/]$ sudo service apache2 restart
4. 作業ディレクトリのリンクをApacheディレクトリ配下に作成
VirtualHostに設定したディレクトリパスに対するリンクを以下のコマンドで作成します。
[user@ ~/]$ sudo ln -s ~/work/laravelapp /var/www/html/laravelapp
5. Apacheユーザーでアクセスできるようにアクセス権限を変更
ApacheユーザーでLaravelプロジェクトにアクセスするように設定しましょう。
[user@ ~/]$ sudo chown -R :www-data /var/www/html/laravelapp
[user@ ~/]$ cd /var/www/html/laravelapp
[user@ /var/www/html/laravelapp]$ sudo chmod -R 770 storage
補足
- 1行目はLaravelプロジェクトにApacheグループがアクセスできるように設定しています。
- 3行目はApacheグループがstorage配下(ログファイルや一時的な画像ファイルなどを置く場所)にアクセスできるように設定しています。