質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.38%

  • WordPress

    9408questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Git

    1730questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

WordpressをGitデプロイする際のサーバー上の.gitの取り扱いについて

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 76

mikeross

score 8

お世話になっております。

表題についてご質問があるのですが、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. その他

どれがセキュリティ的にベストな方法なのでしょうか?

どうぞ宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

うちでは、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=<path>
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=<path>
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 参照。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

そもそもLaravel等でもシンボリックリンクとか使わず
projects/publicをドキュメントルートにするだけ。

WPでも同じ。WPのディレクトリ構成は変更できると知らない人は多いけど。
https://github.com/roots/bedrock
これの場合はwebがドキュメントルート。
Laravelを参考にしてるのでgit,composer,.envでLaravelと同じ感覚で使える。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • WordPress

    9408questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Git

    1730questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。