質問: お世話になっております。 表題についてご質問があるのですが、DjangoやLaravelなどはサーバー上のアクセス不可の場所に.gitと一緒にプロジェクト群を配置し、シンボリックリンクを貼ることでシステムのビューをブラウザで表示できるようにしていると思うのですが、 wordpressの場合はgitでデプロイする場合はどのように管理されていますか? 具体的には、 ``` # laravelの場合 laravel $ tree . ├── projects(ブラウザからはアクセス不可) │ ├── .git │ └── ここにLaravel等の実態 │ └── public(ブラウザからはアクセス可/シンボリックリンクでproject内の適当なファイルを参照) ``` 上記のように、アクセス不可の部分とアクセス可能の部分が明確に分けられており、 アクセス不可の部分に.gitを配置し、cloneなりpullなりをしていると思います。 対してWordpressの場合は、 ``` # wordpressの場合 wordpress $ tree . └── public_html(ブラウザからはアクセス可) ├── .git ├── index.php ├── wp-admin ├── wp-content // 略 └── その他wordpressのファイル群 ``` このようになるか、またはテーマファイルだけを追跡されている方もいるかと思います。 (自分の場合はwordpress丸ごとやってしまっているので) そこで改めてご質問ですが、 **1. 基本的にwordpressの場合はGitデプロイをしない(FTPで十分)** **2. LaravelやDjangoと同じようにサーバー上で権限のない人がアクセスできない場所を作り、そこにwordpress本体を配置&シンボリックリンク** **3. wp-config.jpなどDBの接続する内容を追跡していなければ.gitをとられてもOK** **4. その他** どれがセキュリティ的にベストな方法なのでしょうか? どうぞ宜しくお願い致します。
回答: うちでは、WordPress 全体を git 管理している例はないのですが、テーマやプラグインを git でデプロイしているケースはあります。 git にオプションを指定して、.git ディレクトリ(ローカルリポジトリ)とチェックアウト先のワークツリーの配置を変更することが多いですね。 (質問に書かれた内容だと 「4.その他」の方法になるのでしょうか。) 具体的には、WordPress を通常通りセットアップしてから、テーマやプラグインのディレクトリに git のワークエリアを配置しています。 大まかなコマンド例としては、初回は、手作業でコマンドを実行してセットアップ。 1. `mkdir /home/USER/example.com_theme` 2. /var/www/example.com/ に WordPress をインストールして、設定・動作確認。 3. `git --git-dir=/home/USER/example.com_theme/.git --work-tree=/var/www/example.com/wp-content/themes/ clone https://github.com/ExapleUSER/example.com_theme.git` で、リモートリポジトリからクローンして、設置。 更新時は、自動デプロイ処理の中で 1. `git --git-dir=/home/USER/example.com_theme/.git fetch` で、ローカルリポジトリを更新して 2. `git --git-dir=/home/USER/example.com_theme/.git --work-tree=/var/www/example.com/wp-content/themes/ checkout -f` で、チェックアウト の用な感じで、git コマンドの実行時に `--git-dir` (ローカルリポジトリディレクトリを指定)と `--work-tree` (ワークツリーディレクトリを指定) オプションを使って、ファイルの配置ディレクトリを明示しています。 参考: マニュアル git - the stupid content tracker > > --git-dir= > > Set the path to the repository. This can also be controlled by setting the GIT_DIR environment variable. It can be an absolute path or relative path to current working directory. > > > --work-tree= > > Set the path to the working tree. It can be an absolute path or a path relative to the current working directory. This can also be controlled by setting the GIT_WORK_TREE environment variable and the core.worktree configuration variable (see core.worktree in git-config[1] for a more detailed discussion). > > > 新しいバージョンの git (2.5 以降だったかな)では `git worktree` コマンドで、ワークツリーを複数作れるので、`git worktree` コマンドで同様なことも可能と思います。 git-worktree 参照。