できるだけ、既存の環境は変えずに、ドメインのルート以下にある特定のディレクトリをLaravelのルートとして扱いたい。
前提
Nginx
やphp-fpm
とかは既に入っていて、PHPを動かせる環境は既にできているものとする。
Composerのインストール
公式ページ(https://getcomposer.org/download/)のコマンドを実行
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/bin/composer
Laravelのプロジェクトを作成
作成場所は、/var/www/html/hoge/laravel_app
としておく。
cd /var/www/html/hoge
composer create-project --prefer-dist laravel/laravel laravel_app
Nginxの設定
server {
listen 80;
listen 443 ssl;
server_name hoge.com;
#ssl on;
ssl_certificate /etc/letsencrypt/live/hoge.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
root /var/www/html/hoge;
index index.html index.htm index.php;
location ~ ^/laravel_app((/)?(.+))?$ {
root /var/www/html/hoge/laravel_app/public;
try_files $1 /laravel_app/index.php?$query_string;
location ~ ^/laravel_app/index.php$ {
include fastcgi_params;
#try_files $uri = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATHINFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_split_path_info ^(.+¥.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
location ~ / {
location ~ \.php$ {
root /var/www/html/hoge;
fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
}
}
location /.well-known {
root /var/www/ssl-proof/rancher/;
}
}
その他設定
cd /var/www/html/hoge/laravel_app
php artisan storage:link
権限とか
細かい部分はわからなかったので、とりあえずNginxにlaravel_app
以下の権限を適当に付けておく。
sudo chown -R nginx laravel_app
sudo chgrp -R your_group laravel_app
注意
Laravelのlaravel_app/routes/web.php
とかをいじるとややこしくなるので、Laravelのトップページが表示されるまでは触らない。
つまりデフォルトの
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
のままで、Nginxの設定さえできていればhttps://hoge.com/laravel_app/
にLravelのトップページが表示される。
間違っても、Route::get('laravel_app', function ()
みたいなことはしなくて良い。