📝

Local(wp)とWordmoveを使ってレンタルサーバと同期

2024/04/18に公開

概要

ローカル開発はDockerで環境作っていましたが、Localの方がサクッと作れてしまうので乗り換えました。それに伴いWordmoveの設定も変わってきそうなのでまとめておきます。

wordmoveとは?

Wordmove は、WordPress ブログやサイトを簡単に移動、同期、デプロイするためのツールです。Wordmove を使用すると、ローカル環境とリモート環境 (例えば、本番サーバーやステージングサーバー) 間で、データベースやファイルを同期したり、WordPress プラグインやテーマを更新したりすることができます。これにより、開発環境と本番環境を容易に同期させることが可能となります。

Localとは?

Local は、ローカル開発環境を構築するためのツールです。特に、WordPress サイトをローカルで開発、テスト、管理するために設計されています。Local を使用すると、簡単に WordPress サイトをローカルマシン上にセットアップできます。これにより、オンライン上でのテストや開発作業を行う必要なく、安全かつ独立した環境で作業を進めることができます。

動作環境

  • MacOS Sonoma 14.4.1

手順

サーバに手動でwordpressをインストール

サーバ側の自動インストールでもいけるかも、、ですが、DB設定など行いたいので手動でwordpressをインストールします。
今回は、さくらのレンタルサーバですが、『wordpress 手動 {レンタルサーバ名}』などと検索すれば大抵引っかかると思います。
https://www.javadrive.jp/wordpress/install/index2.html
DB作成した際のデータベース名、ユーザー名、パスワード、ホスト名はwordmoveの設定にも必要なのでメモっておきます。

Localでwordpressインストール

Local使って wordpressをインストールしていきます。
細かいHowtoは割愛してひっかかった部分だけまとめておきます。

SSL化でエラー

サーバ上の環境と合わせるため、Overview > SSL > Trust で、SSL化しておく場合、Mac OS Sonoma など特定環境化だとエラーがでるので下記の手順で解決しておきます。
https://zenn.dev/steneco/articles/2b0588e7f197b4
解決したら、wordpressの管理画面で WordPress アドレス (URL)サイトアドレス (URL) のプロトコルも https に変更しておきます。

サブディレクトリ化

サーバ上のwordpressのインストール場所がサブディレクトリの場合はLocal側でも同じ構造にしておきます。
下記に手順まとめておきます。
https://zenn.dev/steneco/articles/b759b520e78a63

Wordmoveインストール

wordmove をインストールします。gem で PC にインストールするので初回のみでOKです。
※後述しますが、git の更新も止まっているようで環境によってちょいちょいエラー出るので随時潰していきます。

gem install wordmove

すると、、、

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

といったエラーがでました。。
下記ページなどを参考に rbenv で ruby を管理するようにします。
https://qiita.com/hujuu/items/3d600f2b2384c145ad12

which gem

/Users/{ユーザ名}/.rbenv/shims/gem

みたいになれば上記の権利系エラーは回避できてると思います。
その後、

wordmove -v

すると、、、

Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.

とまたエラー。。
今度は、下記の記事に、
Latest 2.x (2.7.5 AFAIK) ruby version should enable you to use wordmove's stable version.とあることから ruby のバージョンを 2.x にしないと動作が不安定なようです。
https://github.com/welaika/wordmove/issues/649
ということで、rbenv でバージョンを2.7.5にして解決していきます。
https://qiita.com/am/items/c1dbeb11f40bbbac8fd9

wordmove 設定

movefile.yml 作成

Localの『Open site shell』をクリックしてshellを開き、wordmove initを実行すると、movefile.ymlが作成されます。

 wordmove init

生成されたファイルに必要な情報で編集していきます。
下記は一例です。

movefile.yml
global:
  sql_adapter: default #wp-cli のままだと database 連携でエラーが出る場合あり。

local:
  vhost: http://sample.local # Local > Overview タブ内の情報を参照
  wordpress_path: /Users/xxx/xxx # wordpressの本体がインストールしてある場所(wp-adminなどが格納されている)

  database:
    name: local # Local > Database タブ内の情報を参照
    user: root # Local > Database タブ内の情報を参照
    password: "root" # Local > Database タブ内の情報を参照
    host: localhost # Local > Database タブ内の情報を参照

production:
  vhost: 本番ドメイン
  wordpress_path: /home/honban/www/xxx/

  database:
    name: mysqlのname
    user: mysqlのuser
    password: mysqlのpassword
    host: mysqlxx.sample.sakura.ne.jp
    
  exclude:
    - '.git/'
    - '.gitignore'
    - '.gitmodules'
    - '.env'
    - 'node_modules/'
    - 'bin/'
    - 'tmp/*'
    - 'Gemfile*'
    - 'Movefile'
    - 'movefile'
    - 'movefile.yml'
    - 'movefile.yaml'
    - 'wp-config.php'
    - 'wp-content/*.sql.gz'
    - '*.orig'
    - '.htaccess' #場合によって追加
    - '.DS_Store' #場合によって追加

  ssh:
    host: sample.sakura.ne.jp
    user: sample
    port: 22 # サーバ環境によって変更

編集完了したら、Localでサイトを『Start site』した状態で『Open site Shell』を開き、wordmove doctorでバリデートしてみます。
Error の項目が出たら随時潰していき、success で埋まったら準備OKです。

wordmove コマンド

基本、wordmove pullでダウンロード、wordmove pushでアップロードになります。
例:wordmove pull --all

--all # ファイル全部
-w # `/wp-content/`ディレクトリ(除外したファイル以外)のみ
-u # `/wp-content/upload/`ディレクトリのみ
-t # `/wp-content/theme/`のみ
-p # `/wp-content/plugins/`のみ
-l # `/wp-content/language/`のみ
-d # データベースファイルのみ
-v # [TBD] verbose
-s # dry runモードで実行、実際にはファイル転送されない
-e # 環境(push先・pull元)を指定
-c # `wp-config.php`のみ-h # wordmoveの使い方

DB同期時エラー

wordmove pull -d時に以下のようなエラーがでました。

OpenSSH keys only supported if ED25519 is available (NotImplementedError)
net-ssh requires the following gems for ed25519 support:
 * ed25519 (>= 1.2, < 2.0)
 * bcrypt_pbkdf (>= 1.0, < 2.0)
See https://github.com/net-ssh/net-ssh/issues/565 for more information
Gem::MissingSpecError : "Could not find 'ed25519' (~> 1.2) among 73 total gem(s)

下記の記事によると Gemfile に追加が必要らしいことがわかります。
https://github.com/net-ssh/net-ssh/issues/565

budler や Gemfile がない場合はインストールしつつ下記のように対応しました。

gem install bundler -v 2.4.22 # gem のバージョンに合わせ調整
bundle init #Gemfileの作成

作成されたGemfileに記述

Gemfile
gem 'ed25519', '>= 1.2', '< 2.0'
gem 'bcrypt_pbkdf', '>= 1.0', '< 2.0'

上記の2つをインストール

bundle install

以上で解決しました。

ステージング環境の追加

stagingキーを追加することで開発環境と本番環境のサーバの使い分けができます。

movefile.yml
production:
  vhost: 本番ドメイン
  wordpress_path: /home/honban/www/xxx/

  database:
    name: mysqlのname
    user: mysqlのuser
    password: mysqlのpassword
    host: mysqlxx.sample.sakura.ne.jp
    
  exclude:
    - '.git/'
   ...

  ssh:
    host: sample.sakura.ne.jp
    user: sample
    port: 22 # サーバ環境によって変更
production:
  vhost: 開発ドメイン
  wordpress_path: /home/dev/www/xxx/

  database:
    name: mysqlのname
    user: mysqlのuser
    password: mysqlのpassword
    host: mysqlxx.sample.sakura.ne.jp
    
  exclude:
    - '.git/'
    ...

  ssh:
    host: sample.sakura.ne.jp
    user: sample
    port: 22 # サーバ環境によって変更

staging 追加時のコマンド

stagingとproductionを明記する必要があります。
本番:wordmove pull -e production --all
開発:wordmove pull -e staging --all

Discussion