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)
もはやこのサイトの方法しかないか。