できるだけ、既存の環境は変えずに、ドメインのルート以下にある特定のディレクトリを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/composerLaravelのプロジェクトを作成
作成場所は、/var/www/html/hoge/laravel_appとしておく。
cd /var/www/html/hoge
composer create-project --prefer-dist laravel/laravel laravel_appNginxの設定
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 ()みたいなことはしなくて良い。