CakePHPをサブディレクトリで本稼働させる [Nginx/Apache]
1. Nginx
1-1. 前提
// プロジェクトのパス(ソース) /home/ユーザー名/cake/bbs // やりたいこと http://example.com/dev/bbs でアクセス可能とする
1-2. xxx.conf
location /dev/bbs { alias /home/ユーザー名/cake/bbs/webroot; try_files $uri $uri/ @cake_1; index index.php index.html index.htm; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /home/ユーザー名/cake/bbs/webroot/index.php; } } location @cake_1 { rewrite /dev/bbs/(.*)$ /dev/bbs/index.php?/$1 last; }
1-3. webroot/index.phpに追記
このままだと http://example.com/dev/bbs/webroot/index.php でアクセス可能なので、webroot/index.php の先頭に次のコードを追記します。
if ($url == 'http://example.com/dev/bbs/webroot/index.php'){ header('Location: http://example.com/dev/bbs'); exit; }
1-4. Nginxの再起動
sudo systemctl restart nginx
2. Apache
WSL(Ubuntu18.04)のApacheで確認。他の環境でも同様だと思われます。
2-1. 前提
// プロジェクトのパス(ソース) // ※D:\cake\bbsの事です。 /mnt/d/cake/bbs // やりたいこと http://localhost/test/ でアクセス可能とする
2-2. rewrite_moduleの有効確認
// モジュールの状態を確認 apache2ctl -M
rewrite_moduleが含まれていない場合は次のコマンドで有効にする。
// mod_rewriteの有効化 sudo a2enmod rewrite // mod_rewriteの無効化 //sudo a2dismod rewrite
※WSLだとrewrite_moduleはデフォルトはオフになっているようです。
2-3. 000-default.confの編集
000-default.confは書き込み権限がないので、rootでログインする。
// ルートログイン su root // 000-default.confの編集 vi /etc/apache2/sites-available/000-default.conf
末尾に以下を追記する。
Alias /test /mnt/d/cake/bbs/webroot <Directory "/mnt/d/cake/bbs/webroot"> Options Includes ExecCGI FollowSymLinks AllowOverride All Require all granted Order allow,deny Allow from all </Directory>
2-4. Apacheの再起動
sudo service apache2 restart
2-5. Could not start the session
このエラーが発生する場合は「bin/cake cache clear_all」で全てのキャッシュをクリアします。それでもダメな場合はwebroot/index.phpの先頭に「session_start();」のコードを追記すればいけるかも知れません。
※Apacheの再起動は忘れないでください。
Apacheの参考文献
Ubuntu server 18.04: Apache2 のインストールと設定,運用
スポンサーリンク
関連記事
公開日:2021年02月10日
記事NO:02881