Local(wp)とWordmoveを使ってレンタルサーバと同期
概要
ローカル開発はDockerで環境作っていましたが、Localの方がサクッと作れてしまうので乗り換えました。それに伴いWordmoveの設定も変わってきそうなのでまとめておきます。
wordmoveとは?
Wordmove は、WordPress ブログやサイトを簡単に移動、同期、デプロイするためのツールです。Wordmove を使用すると、ローカル環境とリモート環境 (例えば、本番サーバーやステージングサーバー) 間で、データベースやファイルを同期したり、WordPress プラグインやテーマを更新したりすることができます。これにより、開発環境と本番環境を容易に同期させることが可能となります。
Localとは?
Local は、ローカル開発環境を構築するためのツールです。特に、WordPress サイトをローカルで開発、テスト、管理するために設計されています。Local を使用すると、簡単に WordPress サイトをローカルマシン上にセットアップできます。これにより、オンライン上でのテストや開発作業を行う必要なく、安全かつ独立した環境で作業を進めることができます。
動作環境
- MacOS Sonoma 14.4.1
手順
サーバに手動でwordpressをインストール
サーバ側の自動インストールでもいけるかも、、ですが、DB設定など行いたいので手動でwordpressをインストールします。
今回は、さくらのレンタルサーバですが、『wordpress 手動 {レンタルサーバ名}』などと検索すれば大抵引っかかると思います。
DB作成した際のデータベース名、ユーザー名、パスワード、ホスト名はwordmoveの設定にも必要なのでメモっておきます。
Localでwordpressインストール
Local使って wordpressをインストールしていきます。
細かいHowtoは割愛してひっかかった部分だけまとめておきます。
SSL化でエラー
サーバ上の環境と合わせるため、Overview > SSL > Trust で、SSL化しておく場合、Mac OS Sonoma など特定環境化だとエラーがでるので下記の手順で解決しておきます。WordPress アドレス (URL)
と サイトアドレス (URL)
のプロトコルも https
に変更しておきます。
サブディレクトリ化
サーバ上のwordpressのインストール場所がサブディレクトリの場合はLocal側でも同じ構造にしておきます。
下記に手順まとめておきます。
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 を管理するようにします。
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 にしないと動作が不安定なようです。
ということで、rbenv でバージョンを2.7.5にして解決していきます。
wordmove 設定
movefile.yml 作成
Localの『Open site shell』をクリックしてshellを開き、wordmove init
を実行すると、movefile.yml
が作成されます。
wordmove init
生成されたファイルに必要な情報で編集していきます。
下記は一例です。
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 に追加が必要らしいことがわかります。
budler や Gemfile がない場合はインストールしつつ下記のように対応しました。
gem install bundler -v 2.4.22 # gem のバージョンに合わせ調整
bundle init #Gemfileの作成
作成されたGemfileに記述
gem 'ed25519', '>= 1.2', '< 2.0'
gem 'bcrypt_pbkdf', '>= 1.0', '< 2.0'
上記の2つをインストール
bundle install
以上で解決しました。
ステージング環境の追加
staging
キーを追加することで開発環境と本番環境のサーバの使い分けができます。
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