tag:crieit.net,2005:https://crieit.net/tags/slim/feed 「slim」の記事 - Crieit Crieitでタグ「slim」に投稿された最近の記事 2022-05-10T22:43:05+09:00 https://crieit.net/tags/slim/feed tag:crieit.net,2005:PublicArticle/18187 2022-05-10T22:43:05+09:00 2022-05-10T22:43:05+09:00 https://crieit.net/posts/slim-deploy-above-docroot-and-publish-below-subdirectory-20220510 Slim4 をサブディレクトリかつ本体はドキュメントルートより上にデプロイした状態で動作させる <h2 id="経緯"><a href="#%E7%B5%8C%E7%B7%AF">経緯</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/slimphp/Slim-Skeleton">slimphp/Slim-Skeleton</a> を サブディレクトリに配置しつつ、 app/ や src/, vendor/ 等のディレクトリはドキュメントルートより上の階層にデプロイした状態で動作させることができたのでメモしておきます。</p> <h2 id="ディレクトリ構造"><a href="#%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E9%80%A0">ディレクトリ構造</a></h2> <pre><code>var/ └ www/ └ sampleapp/ ├ slim-app/ // Slim4-Skeleton 本体 ( public/ ディレクトリ以外) デプロイ先 │ ├ app/ │ ├ src/ │ ├ vendor/ │ └ etc. │ └ public_html/ // ドキュメントルート └ subdirectory/ // サブディレクトリ └ sub2/ // 2個目のサブディレクトリ ├ .htaccess // Slim4-Skeleton の public/ ディレクトリにある .htaccess └ index.php // Slim4-Skeleton の public/ ディレクトリにある index.php </code></pre> <p>今回の最終的な構成はこのようになりました。</p> <p>この階層構成は</p> <ul> <li>アプリケーション本体はドキュメントルート下には置きたくない</li> <li>複数の Slim アプリケーションを配置する可能性がある</li> <li>サブディレクトリも深い階層に設置する可能性がある</li> </ul> <p>ということで、本体のデプロイディレクトリやドキュメントルート下のサブディレクトリをそれぞれ1つずつ余計に掘っています。</p> <h2 id="手順"><a href="#%E6%89%8B%E9%A0%86">手順</a></h2> <p>すぐ削除するデモ環境なので割と雑に設定を。</p> <pre><code class="bash"># cd /var/www/sampleapp/ # mkdir slim-app # chown apache:apache slim-app/ # chmod 775 slim-app/ # ls -al 合計 16 drwxr-xr-x 4 ADMIN ADMIN 4096 MM月 dd yyyy hh:ii . drwxr-xr-x 18 ADMIN ADMIN 4096 MM月 dd yyyy hh:ii .. drwxrwxr-x 2 apache apache 4096 MM月 dd yyyy hh:ii slim-app drwxrwxr-x 4 apache apache 4096 MM月 dd yyyy hh:ii public_html # # pwd /var/www/sampleapp/ </code></pre> <p>FTP 等で <code>subdirectory/</code>, <code>subdirectory/sub2/</code> を掘ります。</p> <p>この状態になったら、</p> <ul> <li><code>/var/www/sampleapp/slim-app/</code> に <code>public/</code> 以外(他不要なファイル・ディレクトリは都度省く)をアップロード</li> <li><code>/var/www/sampleapp/slim-app/logs/</code> の権限を 777 、 <code>/var/www/sampleapp/slim-app/logs/app.log</code> を 666 にする</li> <li>ソースコードの <code>public/index.php</code> 内で <code>__DIR__ . '/../~~~.php';</code> となっているパスを <code>__DIR__ . '/../../../slim-app/~~~.php';</code> とデプロイ先の環境のパス階層に合わせる</li> <li><code>/var/www/sampleapp/public_html/subdirectory/sub2</code> に <code>public/</code> 以下のファイルをアップロード</li> </ul> <p>として動作することを確認しました。なお、 <code>public/.htaccess</code> はデフォルトのままでOKでした。</p> <p>なお、DBがある場合でDBサーバ上で必要な場合は接続情報を変更すること (接続元Webサーバがローカルの開発環境とサーバで異なるので別権限が必要)。</p> <h2 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h2> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://www.asobou.co.jp/blog/web/slim-skeleton">PHPのマイクロフレームワーク「Slim4」の「slim-skeleton」を使用してハマったこと : ビジネスとIT活用に役立つ情報</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/asaokamei/items/b7a1af89db779317fe39">Slim4をサブディレクトリで走らせる方法 - Qiita</a></li> </ul> arm-band