Wordmove でLOCALからOCIに移行

movefile.ymlは以下のとおり。ポイントは、rsync_options:に ‘–rsync-path=”sudo rsync”‘ を追記しておくこと。これで、転送先のパーミッションエラーを回避できた。

hbirds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ cat movefile.yml
global:
  sql_adapter: wpcli

local:
  vhost: https://hbirds.mydns.jp
  wordpress_path: /home/hbirds/Local Sites/hbirdsddnsnet/app/public # use an absolute path here

  database:
    name: local
    user: root
    password: "root" # could be blank, so always use quotes around
    host: localhost

production:
  vhost: https://hbirds.ddns.net
  wordpress_path: /var/www/html # use an absolute path here

  database:
    name: wordpress
    user: wordpress
    password: "ZQAHLLOL"
    host: 141.147.151.125
    # 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: 141.147.151.125 #hbirds.ddns.net
    user: ubuntu
  #   password: password # password is optional, will use public keys if available.
    port: 22 # Port is optional
    rsync_options: '--verbose --itemize-changes --rsync-path="sudo rsync"' # 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
#   [...]

また、.ssh/configを以下の通り作成しておいて、秘密キーを読み込ませる。

hbirds@hbirds-Lenovo-G580:~$ cat .ssh/config
# OCI hbirds.ddns.net 
Host 141.147.151.125
    User ubuntu
    Port 22
    IdentityFile /home/hbirds/ssh-key-2023-01-10.key

以上で、通常のファイルは問題なく転送できたが、問題はMySQLの方で、ubuntu22.04 の最新rubyに組み込まれているnet-ssh-6.1.0のバグのようである。どうするか。幸いながらnet-sshの7.0.0以降で対応しているので、bundle update net-sshすればたいていの場合解決するだろうとのことだが・・・。

▬▬ Pushing Database ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

   remote | mysqldump --host=[secret] --user=wordpress --password=[secret] --result-file="[secret]/wp-content/dump.sql" wordpress
/var/lib/gems/3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/buffer.rb:316:in `set_key': rsa#set_key= is incompatible with OpenSSL 3.0 (OpenSSL::PKey::PKeyError)

bundle update net-ssh をやってみたが・・。

hbirds@hbirds-Lenovo-G580:~$ bundle update net-ssh
Command 'bundle' not found, but can be installed with:
sudo snap install ruby          # version 3.2.0, or
sudo apt  install ruby-bundler  # version 2.3.5-2
See 'snap info ruby' for additional versions.
hbirds@hbirds-Lenovo-G580:~$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
hbirds@hbirds-Lenovo-G580:~$ sudo gem install bundler
[sudo] password for hbirds: 
Fetching bundler-2.4.5.gem
Successfully installed bundler-2.4.5
Parsing documentation for bundler-2.4.5
Installing ri documentation for bundler-2.4.5
Done installing documentation for bundler after 0 seconds
1 gem installed
hbirds@hbirds-Lenovo-G580:~$ bundle update net-ssh
Could not locate Gemfile
hbirds@hbirds-Lenovo-G580:~$ sudo bundle update net-ssh
Could not locate Gemfile

bundlerのバージョン確認と現状でどのようなGEMが入っているのかリストアップ。wordmoveももちろん入っている。net-ssh (6.1.0)は、バージョン6.1.0になっているが、RubyGems.orgでnet-sshを検索すると現時点で最新のバージョンは、7.0.1となっているので、これにアップデートすることで問題は解決すると思われるが、アップデートはGemfileに基づいて行われる仕組みなのでGemfileがある場所でbundle updateコマンドを行わないと Could not locate Gemfile となる。そもそもrubyやwordmoveをインストールしただけではGemfileはできないものなのかよくわかっていない。

hbirds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ bundler -v
Bundler version 2.4.5
hbirds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ gem list

*** LOCAL GEMS ***

abbrev (default: 0.1.0)
activesupport (6.1.7.1)
base64 (default: 0.1.0)
benchmark (default: 0.1.1)
bigdecimal (default: 3.0.0)
bundler (2.4.5, default: 2.2.22)
cgi (default: 0.2.0)
colorize (0.8.1)
concurrent-ruby (1.1.10)
csv (default: 3.1.9)
date (default: 3.1.0)
dbm (default: 1.1.0)
debug (default: 0.1.0)
delegate (default: 0.2.0)
did_you_mean (default: 1.5.0)
digest (default: 3.0.0)
dotenv (2.7.6)
drb (default: 2.0.4)
english (default: 0.7.1)
erb (default: 2.2.0)
etc (default: 1.2.0)
fcntl (default: 1.0.0)
fiddle (default: 1.0.6)
fileutils (default: 1.5.0)
find (default: 0.1.0)
forwardable (default: 1.3.2)
gdbm (default: 2.1.0)
getoptlong (default: 0.1.1)
i18n (1.12.0)
io-console (default: 0.5.7)
io-nonblock (default: 0.1.0)
io-wait (default: 0.1.0)
ipaddr (default: 1.2.2)
irb (default: 1.3.5)
json (default: 2.5.1)
kwalify (0.7.2)
logger (default: 1.4.3)
matrix (default: 0.3.1)
minitest (5.14.2)
mutex_m (default: 0.1.1)
net-ftp (0.1.3, default: 0.1.2)
net-http (default: 0.1.1)
net-imap (default: 0.1.1)
net-pop (default: 0.1.1)
net-protocol (default: 0.1.0)
net-scp (3.0.0)
net-sftp (3.0.0)
net-smtp (default: 0.2.1)
net-ssh (6.1.0)
net-ssh-gateway (2.0.0)
net-telnet (0.1.1)
nkf (default: 0.1.0)
observer (default: 0.1.1)
open-uri (default: 0.1.0)
open3 (default: 0.1.1)
openssl (default: 3.0.0)
optparse (default: 0.1.0)
ostruct (default: 0.3.1)
pathname (default: 0.1.0)
photocopier (1.4.1)
power_assert (1.2.0)
pp (default: 0.1.0)
prettyprint (default: 0.1.0)
prime (default: 0.1.2)
pstore (default: 0.1.1)
psych (default: 3.3.0)
racc (default: 1.5.1)
rake (13.0.6, 13.0.3)
rbs (1.0.4)
rdoc (default: 6.3.1)
readline (default: 0.0.2)
readline-ext (default: 0.1.1)
reline (default: 0.2.5)
resolv (default: 0.2.0)
resolv-replace (default: 0.1.0)
rexml (3.2.5)
rinda (default: 0.1.0)
rss (0.2.9)
rubygems-update (3.3.5)
securerandom (default: 0.1.0)
set (default: 1.0.1)
shellwords (default: 0.1.0)
singleton (default: 0.1.1)
stringio (default: 3.0.0)
strscan (default: 3.0.0)
syslog (default: 0.1.0)
tempfile (default: 0.1.1)
test-unit (3.3.7)
thor (0.20.3)
time (default: 0.1.0)
timeout (default: 0.1.1)
tmpdir (default: 0.1.2)
tracer (default: 0.1.1)
tsort (default: 0.1.0)
typeprof (0.12.0)
tzinfo (2.0.5)
un (default: 0.1.0)
uri (default: 0.10.1)
weakref (default: 0.1.1)
webrick (1.7.0)
wordmove (5.2.2)
xmlrpc (0.3.2)
yaml (default: 0.1.1)
zeitwerk (2.6.6)
zlib (default: 1.1.0)

以下でGemfileを作成

birds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ bundle init
Writing new Gemfile to /home/hbirds/Local Sites/hbirdsddnsnet/app/public/Gemfile

作成されたGemfaileの内容。ここにnet-sshを追記してbundle updateすればよいのか?

birds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ cat Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"

gem environmetコマンドにより、インストールされたパスを調べることができる。

hbirds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 3.3.5
  - RUBY VERSION: 3.0.2 (2021-07-07 patchlevel 107) [x86_64-linux-gnu]
  - INSTALLATION DIRECTORY: /var/lib/gems/3.0.0
  - USER INSTALLATION DIRECTORY: /home/hbirds/.local/share/gem/ruby/3.0.0
  - RUBY EXECUTABLE: /usr/bin/ruby3.0
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - SPEC CACHE DIRECTORY: /home/hbirds/.local/share/gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/3.0.0
     - /home/hbirds/.local/share/gem/ruby/3.0.0
     - /usr/local/lib/ruby/gems/3.0.0
     - /usr/lib/ruby/gems/3.0.0
     - /usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0
     - /usr/share/rubygems-integration/3.0.0
     - /usr/share/rubygems-integration/all
     - /usr/lib/x86_64-linux-gnu/rubygems-integration/3.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /opt/Local/resources/extraResources/bin/composer/posix
     - /opt/Local/resources/extraResources/bin/wp-cli/posix
     - /opt/Local/resources/extraResources/lightning-services/php-8.1.9+8/bin/linux/bin
     - /opt/Local/resources/extraResources/lightning-services/mysql-8.0.16+6/bin/linux/bin
     - /usr/local/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/games
     - /snap/bin
     - /snap/bin

インストール先のリスト。

hbirds@hbirds-Lenovo-G580:/var/lib/gems/3.0.0/gems$ ls -la
total 76
drwxr-xr-x 19 root root 4096  1月 24 19:26 .
drwxr-xr-x  9 root root 4096  1月 22 13:07 ..
drwxr-xr-x  3 root root 4096  1月 22 13:07 activesupport-6.1.7.1
drwxr-xr-x  4 root root 4096  1月 24 19:26 bundler-2.4.5
drwxr-xr-x  4 root root 4096  1月 22 13:07 colorize-0.8.1
drwxr-xr-x  4 root root 4096  1月 22 13:07 concurrent-ruby-1.1.10
drwxr-xr-x  4 root root 4096  1月 22 13:07 dotenv-2.7.6
drwxr-xr-x  3 root root 4096  1月 22 13:07 i18n-1.12.0
drwxr-xr-x  9 root root 4096  1月 22 13:07 kwalify-0.7.2
drwxr-xr-x  5 root root 4096  1月 22 13:07 net-ftp-0.1.3
drwxr-xr-x  3 root root 4096  1月 22 13:07 net-scp-3.0.0
drwxr-xr-x  3 root root 4096  1月 22 13:07 net-sftp-3.0.0
drwxr-xr-x  4 root root 4096  1月 22 13:07 net-ssh-6.1.0
drwxr-xr-x  3 root root 4096  1月 22 13:07 net-ssh-gateway-2.0.0
drwxr-xr-x  6 root root 4096  1月 22 13:07 photocopier-1.4.1
drwxr-xr-x  4 root root 4096  1月 22 13:07 thor-0.20.3
drwxr-xr-x  3 root root 4096  1月 22 13:07 tzinfo-2.0.5
drwxr-xr-x 10 root root 4096  1月 22 13:07 wordmove-5.2.2
drwxr-xr-x  3 root root 4096  1月 22 13:07 zeitwerk-2.6.6

Gmfileを修正

hbirds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ cat Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"
gem "wordmove"
gem "net-ssh", "7.0.1"

sudo bundle update を実行

hbirds@hbirds-Lenovo-G580:~/Local Sites/hbirdsddnsnet/app/public$ sudo bundle update
[sudo] password for hbirds: 
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using rake 13.0.6
Fetching concurrent-ruby 1.2.0
Fetching minitest 5.17.0
Using bundler 2.4.5
Fetching escape 0.0.4
Fetching colored 1.2
Installing colored 1.2
Installing escape 0.0.4
Fetching net-ssh 7.0.1
Fetching thor 1.2.1
Installing minitest 5.17.0
Installing concurrent-ruby 1.2.0
Installing thor 1.2.1
Installing net-ssh 7.0.1
Using net-ssh-gateway 2.0.0
Fetching net-scp 4.0.0
Using i18n 1.12.0
Using tzinfo 2.0.5
Fetching activesupport 7.0.4.1
Installing net-scp 4.0.0
Installing activesupport 7.0.4.1
Fetching photocopier 0.0.10
Installing photocopier 0.0.10
Fetching wordmove 1.2.0
Installing wordmove 1.2.0
Bundle updated!
Post-install message from wordmove:

============================================================================
Beware! From version 1.0, we have changed the wordmove flags' behaviour:
they used to tell wordmove what to _skip_, now they tell what to _include_.

Read `wordmove help` for more info.
============================================================================

確認したところnet-sshが7.0.1は入っているものの古いバージョンも消えないで残っている。これで大丈夫なのか?

hbirds@hbirds-Lenovo-G580:/var/lib/gems/3.0.0/gems$ ls -la
total 116
drwxr-xr-x 29 root root 4096  1月 25 05:31 .
drwxr-xr-x  9 root root 4096  1月 25 05:31 ..
drwxr-xr-x  3 root root 4096  1月 22 13:07 activesupport-6.1.7.1
drwxr-xr-x  3 root root 4096  1月 25 05:31 activesupport-7.0.4.1
drwxr-xr-x  4 root root 4096  1月 24 19:26 bundler-2.4.5
drwxr-xr-x  4 root root 4096  1月 25 05:31 colored-1.2
drwxr-xr-x  4 root root 4096  1月 22 13:07 colorize-0.8.1
drwxr-xr-x  4 root root 4096  1月 22 13:07 concurrent-ruby-1.1.10
drwxr-xr-x  4 root root 4096  1月 25 05:31 concurrent-ruby-1.2.0
drwxr-xr-x  4 root root 4096  1月 22 13:07 dotenv-2.7.6
drwxr-xr-x  4 root root 4096  1月 25 05:31 escape-0.0.4
drwxr-xr-x  3 root root 4096  1月 22 13:07 i18n-1.12.0
drwxr-xr-x  9 root root 4096  1月 22 13:07 kwalify-0.7.2
drwxr-xr-x  4 root root 4096  1月 25 05:31 minitest-5.17.0
drwxr-xr-x  5 root root 4096  1月 22 13:07 net-ftp-0.1.3
drwxr-xr-x  3 root root 4096  1月 22 13:07 net-scp-3.0.0
drwxr-xr-x  3 root root 4096  1月 25 05:31 net-scp-4.0.0
drwxr-xr-x  3 root root 4096  1月 22 13:07 net-sftp-3.0.0
drwxr-xr-x  4 root root 4096  1月 22 13:07 net-ssh-6.1.0
drwxr-xr-x  5 root root 4096  1月 25 05:31 net-ssh-7.0.1
drwxr-xr-x  3 root root 4096  1月 22 13:07 net-ssh-gateway-2.0.0
drwxr-xr-x  4 root root 4096  1月 25 05:31 photocopier-0.0.10
drwxr-xr-x  6 root root 4096  1月 22 13:07 photocopier-1.4.1
drwxr-xr-x  4 root root 4096  1月 22 13:07 thor-0.20.3
drwxr-xr-x  4 root root 4096  1月 25 05:31 thor-1.2.1
drwxr-xr-x  3 root root 4096  1月 22 13:07 tzinfo-2.0.5
drwxr-xr-x  6 root root 4096  1月 25 05:31 wordmove-1.2.0
drwxr-xr-x 10 root root 4096  1月 22 13:07 wordmove-5.2.2
drwxr-xr-x  3 root root 4096  1月 22 13:07 zeitwerk-2.6.6

wordmove push –all を実行した結果、以下の通りNG。相変わらずnet-sshは古いバージョンのままなのでエラーが出ている。

▬▬ Pushing Database ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

   remote | mysqldump --host=[secret] --user=wordpress --password=[secret] --result-file="[secret]/wp-content/dump.sql" wordpress
/var/lib/gems/3.0.0/gems/net-ssh-6.1.0/lib/net/ssh/buffer.rb:316:in `set_key': rsa#set_key= is incompatible with OpenSSL 3.0 (OpenSSL::PKey::PKeyError)

もはやこのサイトの方法しかないか。

Copied title and URL