Loading [MathJax]/extensions/tex2jax.js

NAS で laravel:xserver から移植

現在 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 にするとプログラムが動きません。
以下のようにしました。

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