現在 xserver 上で快適に動いている、画像も保存できるカード型データベースを自宅の NAS に設定します。
当分の間 xserver から引っ越すつもりはないのですが、数日前にできるはずと思いやってみたものの全くうまくいかず、ちょっと悔しいのでしつこく挑戦してみました。
朝から夕方まで数時間かかりましたが、何とか設定できました。
でも、実際には当分使うことはないんですけどね。
NAS 上で composer からのインストールはやめた方がいい
最初は local ( linux mint ) で作成したものを NAS にアップロードして挑戦したのですが全然うまくいかないので、NAS 上で以下のようにやってみたのですが、この方法はやめた方がいいと思います。
composer create-project laravel/laravel hello
わけのわからないエラーが出ます。
やはり local で作成したものをアップロードするのがいいと思います。
データベース設定
.env のデータベース設定で、「DB_HOST=localhost」にする必要があります。
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=pass
NAS の php バージョンに関する疑問
Synology の NAS、DS 720+ には、DSM から php 8.2 を設定できるのですが、ssh で NAS に入って「php –version」とするとなぜか php 8.1.9 です。
PHP 8.1.9 (cli) (built: Dec 6 2022 02:51:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.9, Copyright (c) Zend Technologies
最初はうまくいかない原因がこれかと思い、php 8.2 に変更しようとしたのですがどうにもできません。
以前からずっと、DSM と ssh ログインした php のバージョンが違う理由がわからないのですが、これに関してはこのままでいいようです。
DDNS にはルーターのポート開放が必要
まあ当然なのですが、DDNS 設定して外からアクセスするためにはポートの開放が必要かと思います。
おそらく、NAS の IP address を固定にしているためかと思いますが、NAS の IP address は固定しておきたいものです。

シンボリックリンクの作成
NAS に WebStation をインストールすると、/volume1/web が作成されてそこに index.html が作成され、アドレスバーに「synology DDNS」を入力すると以下の画面が表示されます。

例によって、これを sample/public にリンクさせるためにシンボリックリンクを作成します。
ln -s /volume1/web/sample/public /volume1/web
シンボリックリンクがわかりにくいのは、第一引数がターゲットであることです。
直感的には逆のように思えるので混乱します。
結果的には「/volume1/web」に以下のようなシンボリックリンクが作成されます。
public -> /volume1/web/sample/public
これで、「synology_DDNS/public」で最初の設定画面が表示されるはずです。
public の削除
例によって public を削除したいので、「/volume1/web」に .htaccess を作成します。
/volume1/web/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
なぜか nginx では動かない
なぜか nginx にするとプログラムが動きません。
以下のようにしました。

数時間ハマっていたので、この他にもポイントがあった気もしますが、いくつか脱落し思い出せるのはこれくらいかと思います。