xserver でドメインを取得して laravel プロジェクトをデプロイして動かすのはこれまでは簡単でしたが、どうも最近 xserver のセキュリティ強化のためにかなり難しくなったようです。
chatGPT に相談してやっと解決しましたが、chatGPT も例によって迷路に入ってしまうとおかしなことを延々と提示してくるのでちょっと時間がかかりました。
ドメインは xserver で前回と同じ 1 円で取得しました。いつかバチが当たるかもしれません。
ローカルで作成した laravel プロジェクトをそのドメインに scp します。
scp -r -i ~/.ssh/moheno.key -P 10022 ~/READaLOT moheno@sv12345.xserver.jp:~/readalot.jp前回は、.htaccess の設定だけで済んだのですが、今回は全然動きません。
前回は
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [QSA,L]</IfModule>RewriteCond %{HTTPS} !onRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]RewriteRule ^(.*)$ https://%1/$1 [R=301,L]SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=offSetEnvIf Request_URI ".*" Ngx_Cache_StaticModeこれで動いたのですが。
そもそも何が書いてあるのかほとんど理解できません。
chatGPT が今回提示してきたのは、
<IfModule mod_rewrite.c> RewriteEngine On
# 存在するファイル・ディレクトリはそのまま RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
# それ以外を index.php に流す RewriteRule ^ index.php [L]</IfModule>しかし、これだけでは動きません。
取得したドメインの public_html 内に index.html があります。それを無効にして、index.php を作成します。
mv index.html index.html.bakindex.php
<?php
require __DIR__ . '/../READaLOT/vendor/autoload.php';$app = require_once __DIR__ . '/../READaLOT/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle( $request = Illuminate\Http\Request::capture());
$response->send();$kernel->terminate($request, $response);でもどういうわけか css が効いていません。
そこで、ローカルでビルドしたものを scp します。
npm run buildでビルドして、
# public/build(CSS/JS)scp -r -i ~/.ssh/moheno.key -P 10022 ~/READaLOT/public/build \ moheno@sv12345.xserver.jp:/home/moheno/readalot.jp/READaLOT/public/
# index.php(public内)scp -i ~/.ssh/moheno.key -P 10022 ~/READaLOT/public/index.php \ moheno@sv12345.xserver.jp:/home/moheno/readalot.jp/READaLOT/public/サイトにアクセスすると、
register は削除してあります。
login すると、
メニューを選ぶと
book を選ぶと
まあまあの出来ですね。
本のデータはローカルで mariadb に記録してあるので、どんどん増やして xserver の phpmyadmin からインポートすればいくらでも増やすことができます。
chatGPT は質問してうまく行かないとどんどんおかしな設定を要求してきます。今回も、index.php を作成するよう要求してきました。
それで一応うまく行ったのですが、どうにも納得がいかないのでいろいろ調べてみると、index.php なんか必要ないとわかりました。 自分の昔のプログラムに書いてありました。
xserver でドメインを設定すると、
.└── moheno.jp ├── READaLOT ├── autoreply ├── htpasswd ├── log ├── mail ├── public_html ├── script └── xserver_phpのような感じの構造になります。
READaLOT は laravel プロジェクトです。ローカルで作成したプロジェクトは public_html の中には置きません。
シンボリックリンクを作成します。
ln -s ~/moheno.jp/READaLOT/public ~/moheno.jp/public_htmlこうすることで、https://moheno.jp にアクセスした時に、READaLOT/public/index.php が実行されるようになります。
ただし、public_html が存在しているとシンボリックが生成されないので public_html を削除する必要があるようです。 以前はこんなことしなかったんですが。
でも完全に削除するのは危険なので、
mv public_html public_html_bkとして残しておいた方が無難です。
ローカルで blade をいろいろ変更した場合は、view もアップします。
# viewsscp -i ~/.ssh/moheno.key -P 10022 ~/READaLOT/resources/views \ moheno@sv12345.xserver.jp:/home/moheno/readalot.jp/READaLOT/resources