【2024年最新版】Local(旧Local by Flywheel)とwordmoveを使ってワードプレスを秒速で同期する【SSH編】
どうもMacを数ヶ月前に初期化しちゃったsgwです。
いろいろ設定やり直してるので今回は本番サーバーとローカルを秒速で同期できるwordmoveの設定を秒速で解説します。
*2024年7月に早速問題
「Unknown command '\-'.
」みたいなエラーで1ヶ月前くらいは出来てたのにできなくなってました。MariaDBに最近追加されたセキュリティ対策らしいです。
下記修正wordmoveを作ってくれた人がいたので便乗して使わせていただいてます。
詳しいやり方は下記で。
目次
wordmoveとは
レッツチャットGPTw
Wordmoveとは、主にWordPressサイトの移行や同期を簡単に行うためのオープンソースのツールです。Wordmoveを使用すると、ローカル環境、ステージング環境、および本番環境間でのデータベースやファイルの同期が簡単にできます。これにより、サイトの開発、テスト、運用がスムーズに行えます。
ChatGPT
です。とりあえずコマンドラインでWPをアップロードを超簡単にできるってことです。
めっちゃ便利なんですけど、サーバーの環境とかデータベースによってエラー起きるし、いろいろ設定が厳しくて間違えると全然動かないので完全動作する環境を作っていきます。
Localはもちインスコしといて下さい。あとサーバー側がssh対応してないと無理です。
必要事項
動作確認が安定的できたバージョン
Ruby 2.6.0
wordmove 5.0.2
rbenvインストール
インストールしようとしたらだいたい下記のエラーで詰まるのでとりあえずrbenvを入れてrbenvのrubyをグローバル設定します。
You don't have write permissions for the /library/ruby/gems/2.6.0 directory
rbenvダウンロードでrubyのバージョン管理
brew update
brew install rbenv ruby-build
下記やって
rbenv versions
* system
と出てくるならrbenv側のrubyを使う必要があるのでインスコします。
現状自分の環境でwordmove動作が安定的に確認できたのは
Ruby 2.6.0
wordmove 5.0.2
なので上記をインスコするのがおすすめです。
下記で2.6.0をインストール。
rbenv install 2.6.0
下記で2.6.0をグローバルで使うrubyとして設定。
rbenv global 2.6.0
下記で現状ダウンロードしてるrubyのバージョン郡たちと設定してるrubyがどれか確認できます。
rbenv versions
使ってるバージョンに*がついてます。
rbenv versions system
2.6.0
3.1.0
* 3.3.2 (set by /Users/name/.rbenv/version)
使ってるバージョンに*がついてます。
rbenv にパスを通す
移動>ホーム
コマンド+シフト+.
で隠しファイル表示
.zshrcというファイルを開いて1番下に
[[ -d ~/.rbenv ]] && \
export PATH=${HOME}/.rbenv/bin:${PATH} && \
eval "$(rbenv init -)"
を書き込む。
ターミナル再起動して
which ruby
で下が出てきたら成功。
/Users/olein/.rbenv/shims/ruby
wordmoveインストール前に
Localをデフォルト設定すると
/Users/NAME/Local sites/wordpress-sample/app/public
のようなとこにwpがインスコされちゃうのですがこれだとwordmoveでデータベースの同期ができませんでした。
なのでLocalアプリ開いて、左上の
Local > Settings > New site default
を開きます。
下記の部分がデフォルトだとLocal sitesとなってるのでLocals等スペースを伴わないディレクトリに設定します。
これでデータベースのエラーの対策完了です。
やっとwordmoveインストール
普段通りローカルでサイト作成した後に、作成サイト右クリック > Open site shell
ターミナルで下記コマンド走らせると
gem install wordmove
と下記ファイルが作成されます。
global:
sql_adapter: wpcli
local:
vhost: ローカルサイトのURL
wordpress_path: /Users/name/Downloads # use an absolute path here
database:
name: database_name
user: user
password: "password" # could be blank, so always use quotes around
host: 127.0.0.1
production:
vhost: http://example.com
wordpress_path: /var/www/your_site # use an absolute path here
database:
name: database_name
user: user
password: password
host: host
# port: 3308 # Use just in case you have exotic server config
# mysqldump_options: '--max_allowed_packet=1G' # Only available if using SSH
# mysql_options: '--protocol=TCP' # mysql command is used to import db
exclude:
- '.git/'
- '.gitignore'
- '.gitmodules'
- '.env'
- 'node_modules/'
- 'bin/'
- 'tmp/*'
- 'Gemfile*'
- 'Movefile'
- 'movefile'
- 'movefile.yml'
- 'movefile.yaml'
- 'wp-config.php'
- 'wp-content/*.sql.gz'
- '*.orig'
# paths: # you can customize wordpress internal paths
# wp_content: wp-content
# uploads: wp-content/uploads
# plugins: wp-content/plugins
# mu_plugins: wp-content/mu-plugins
# themes: wp-content/themes
# languages: wp-content/languages
# ssh:
# host: host
# user: user
# password: password # password is optional, will use public keys if available.
# port: 22 # Port is optional
# rsync_options: '--verbose --itemize-changes' # Additional rsync options, optional
# gateway: # Gateway is optional
# host: host
# user: user
# password: password # password is optional, will use public keys if available.
# ftp:
# user: user
# password: password
# host: host
# passive: true
# port: 21 # Port is optional
# scheme: ftps # default `ftp`. alternative `sftp`
# hooks: # Remote hooks won't work with FTP
# push:
# before:
# - command: 'echo "do something"'
# where: local
# raise: false # raise is true by default
# after:
# - command: 'echo "do something"'
# where: remote
# pull:
# before:
# - command: 'echo "do something"'
# where: local
# raise: false
# after:
# - command: 'echo "do something"'
# where: remote
#
# forbid:
# push:
# db: false
# plugins: false
# themes: false
# languages: false
# uploads: false
# mu-plugins: false
# pull:
# db: false
# plugins: false
# themes: false
# languages: false
# uploads: false
# mu-plugins: false
# staging: # multiple environments can be specified
# [...]
下記部分をLocalのワードプレスパスに変更。
vhost: ローカルサイトURL
wordpress_path: wordpressのルートパス(/Users/ユーザー名/Locals(ここ注意)/test-sgwblog/app/public等)
production側も各自サイトに合わせて設定します。(次の記事でエックスサーバにつなぐ方法記載!乞うご期待w)
Unknown command '\-'
問題
gem install specific_install
上記走らせると
Fetching specific_install-0.3.8.gem
Successfully installed specific_install-0.3.8
Parsing documentation for specific_install-0.3.8
Installing ri documentation for specific_install-0.3.8
Done installing documentation for specific_install after 0 seconds
1 gem installed
上記みたいなのが出てくるので終わるのを待ちます。
終わった後下記を走らせます。
gem specific_install https://github.com/murodon/wordmove_custom.git
Successfully installed
ってのが出てきたら成功です。
wordmove -v
上記で
5.2.2
と返ってくれば成功。
wordmoveコマンドまとめ
上記で開いたターミナルで下記コマンドを発動するとサーバー側のワードプレスのデータ、テーマ、メディアファイル等を簡単に同期できます。
wordmove pull
テストサーバーからローカルに落としてくるコマンドがpullです。
wordmove pull --all //wpコアファイルと、テーマ、メディア、データベース
wordmove pull -w //wpコアファイル
wordmove pull -d //データベース
wordmove pull -t //テーマ
wordmove pull -u //メディア
wordmove push
wordmove push --all //wpコアファイルと、テーマ、メディア、データベース
wordmove push -w //wpコアファイル
wordmove push -d //データベース
wordmove push -t //テーマ
wordmove push -u //メディア
他にもテストや本番サーバー等で指定可能だったり(プロファイルで選ぶみたいな)
push pull 間違えたら上書きしちゃうので注意w(おそらくこれもbackup的な機能ありそう)
いろいろ他にもできるので思い出して来たら追記していこうと思います。
それでは快適なワードプレス開発を!次回は僕が使ってる海外サーバーのHostingerやエックスサーバーで設定する方法を解説できたらと思います。
CYaaaaaaaaaaaa!!