早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

MacOS データ移設 (hysk)

MacBook 機種変更

MacOS 機材の入れ替え時(ノートPCの新機種購入&データ移設)時の作業内容メモ. データ移設に関する一般的な手順は,Apple社の FAQ 情報を見れば載っているはず.

移設手順

Google などの検索で,「MacOS データ移行 Thunderbolt」の3語で検索すれば,Apple 社の解説webが見つかるはず. 個人blogなどの情報は,平易な書き方をしているので読みやすいかもしれないが,正しい情報が書かれているとは限らない. 公式解説と「野良解説」の両方を比較して使うのがベターだと思う.

全体手順

以前のPC: PC-old, 新規PC: PC-new と呼称する. PC-old のホスト名は "PC-A" と設定されていたものとする.

  1. PC-old, PC-new のOSバージョンを一致させておく
  2. 移行アシスタントを使い,Thunderbolt ケーブルで PC-old & PC-new を直結してデータコピー.
    • Tを押しながら PC-old を起動(『ターゲットディスクモード』での起動)
    • PC-new を通常起動し,「移行アシスタント」を実行.画面指示に従ってコピー実行.
    • 約300 GB 程度のコピーを実行.実行後はしばらく放置していたため正確な時間は不明だが,おそらく1時間ちょい,長くとも2時間以内でコピー終了したのは間違いない.

移設後のメンテナンス

自分が作成したファイル類は,前述の移行アシスタントでのコピーで問題なく移設完了. 自分の場合,トラブルが生じるのは大抵webコンテンツ関連である.

  • ホスト名の確認.PC-old からそのまま PC-new に移設すると, ホスト名の重複を避けるために別名となる. ホスト名は,PC-old 側を先に変更し,PC-new 側は従来のホスト名 "PC-A" に置き換えるのが無難.
    • /etc/hosts
    • 「システム環境設定」>「共有」部分
  • 商用ライセンスのソフトウェアの起動確認,選別. ライセンスの問題がなければ,PC-old & PC-new の両方で継続使用しても構わないが, 「1台のみ」などの制約のあるソフトウェアの場合は,どちらか一方のソフトウェアを消去せねばならない.
  • localサービスの稼動確認. 自分の使い方の場合,ローカルなwebサービス(作業メモ目的の Pukiwiki やWordPress) を運用している. これらの移設作業と可動確認を実施して,ようやく新規PCへ作業環境を完全移行できる. そして,大抵の場合は何らかのトラブルが発生する.

移設時のトラブル (El Capitan 版)

13-inch Retina MacBook Pro (Early 2015) モデルへの移設時. MacOS のバージョンで言うと,OS X 10.10.x (Yosemite) から OS X 10.11.3 (El Capitan)への移動にあたる.

発生した問題のリスト

  • Apache2: 自分用の主要サービス(Pukiwiki, WordPress) 使えず.個人ページの表示も不可. そもそも,localhost の web service 自体が稼働してない
    • 解決 (0 day)
    • /etc/hosts の編集.自分自身(localhost)のホスト名が PC-A であることを確認.
    • 「システム環境設定」の「共有」から,PC-new の自分自身のホスト名を PC-old で運用していた名前(PC-A)にする. PC-old 側は今後メインでは使わなくなるので,別の名前(ex. "PC-B")に変更する.
    • /etc/apache2/httpd.conf の編集.
    • 個別ページ用の設定ファイル編集.
  • Pukiwiki: Pukiwiki が開けず. See also 移設時トラブル > Pukiwiki
    • 解決 (0 day)
    • /etc/php.ini の作成 & 編集
  • MySQL: daemon が稼働しなかった.手動実行しても稼動せず. See also 移設時トラブル > MySQL
    • 解決 (+3 day)
    • MySQL 本家から,最新版を取得,再インストール
    • ターミナルにて mysql コマンドラインから実行. 簡単な mysql コマンドを実行し,DB 閲覧などが出来ることを確認.
    • MySQL 稼働確認用テストコマンドの例は,MySQL tips (hysk)を参照.
  • WordPress: See also 移設時トラブル > WordPress
    • 解決 (+5 day)
    • wp-config.php を編集.DB_HOST など主要設定が PC-new に適合しているか否かを確認.
  • Dropbox:
    • 解決 (+6 day)
    • PC-old で Dropbox web のユーザ管理画面(右上部ユーザ名部分の「設定」)にログイン,「セキュリティ」タブから二段階認証の「主要」-> 認証アプリの「編集」し, Google Authenticator を登録
  • phpMyAdmin:
    • 解決 (+6 day)
    • ~/Sites/phpMyAdmin/config.inc.php の host 設定を編集

    Apache2

    /etc/apache2/ 以下の configuration ファイルを編集.

    ./httpd.conf
    ./extra/httpd-userdir.conf
    ./other/(自分が作ったページの制御用 *.conf)
    ./users/(個人ページ用 conf & phpMyAdmin.conf)
    
    $ ll /etc/apache2/other/
    total 24
    -rw-r--r--  1 root  wheel  318  3  2  2014 air_pollution.conf
    -rw-r--r--  1 root  wheel  576  3  3  2014 paper.conf
    -r--r--r--  1 root  wheel  194  8  1  2015 php5.conf
    -rw-r--r--  1 root  wheel  255  3  2  2014 pukiwiki.conf
      (自作ページたちの制御用.
      自分用大気汚染関連ローカルweb = air_pollution.conf
      論文PDFを集めてるディレクトリの閲覧web = paper.conf
      ローカルPC内の pukiwiki 用設定 = pukiwiki.conf
      なお,php5.conf はPHP制御用)
    
    $ ll /etc/apache2/users/
    total 24
    -rw-r--r--  1 root  wheel   96  2  3 01:39 Guest.conf
    -rw-r--r--  1 root  wheel  367  2 21  2014 hayasaki.conf
    -rw-r--r--  1 root  wheel  335  2  9 12:38 phpMyAdmin.conf
      (個人web制御用 = hayasaki.conf
      phpMyAdmin制御用 = phpMyAdmin.conf
      個人アカウント関連なら,ここに追加)
    

    /etc/apache2/httpd.conf の編集

    $ sudo vi /etc/apache2/httpd.conf
    (設定ファイル編集.必須でないものも含む)
    --- ここから
    LoadModule  speling_module  libexec/apache2/mod_speling.so
    LoadModule  userdir_module  libexec/apache2/mod_userdir.so
    
    LoadModule  rewrite_module  libexec/apache2/mod_rewrite.so
    LoadModule  php5_module  libexec/apache2/libphp5.so
    
    ServerAdmin  hogehoge@hoge.com
    (ServerAdmin 部分に自分のメールアドレス書いておく.どうせ自分専用だから不要だが,何となく)
    
    
    #    AllowOverride none
    #    Require all denied
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    
    (サーバ root (http://localhost/) へのアクセスは全て拒否.ただし FollowSymLinks を入れる.
    これはもしかしたら無意味な設定なのでは?)
    
    
    DocumentRoot "/Library/WebServer/Documents"
    
      (中略)
    #    Options FollowSymLinks Multiviews
    #    MultiviewsMatch Any
        Options Indexes FollowSymLinks MultiViews
    (2行分をコメントアウト,Indexes を入れた Options 設定に変更)
      (中略)
    #    Require all granted
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    
    (Require all granted はコメントアウト)
    (localhost からのみ,アクセス可能.制限なし)
    
    
    Include  /private/etc/apache2/extra/httpd-userdir.conf
    Include  /private/etc/apache2/extra/httpd-manual.conf
    --- ここまで
    
    (mod_speling は必須ではない.何となく.)
    

    /etc/apache2/extra/httpd-userdir.conf の編集

    $ sudo vi /etc/apache2/extra/httpd-userdir.conf
    --- ここから
    Include /private/etc/apache2/users/*.conf
    --- ここまで
    (コメントアウトを外す.本当に必要だろうか?)
    

    Pukiwiki

    El Capitan 移行時のPHP バージョンは 5.5.30

    $ php -v
    PHP 5.5.30 (cli) (built: Oct 23 2015 17:21:45) 
    Copyright (c) 1997-2015 The PHP Group
    Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
    

    /etc/php.ini の作成,編集により解決.

    $ sudo cp /etc/php.ini.default  /etc/php.ini
    $ sudo vi /etc/php.ini
    (編集.MySQL と連携するための DLL 読み込み,タイムゾーンを明示的に設定.)
    
    --- ここから
    extension=php_mysql.dll
    extension=php_mysqli.dll
    
    date.timezone = Asia/Tokyo
    --- ここまで
    

    なお,今回(2016-02-09)は大きなトラブルにならなかったが, PHP のバージョンアップにより Pukiwiki が動作しなくなる可能性もある(過去のMacOS バージョンアップ時に体験).
    その場合,自力で解決するか解決方法が示されるまで待つかしかない. フリーのモノを使う以上,この程度のリスクはユーザ自身が許容せねばならない. これが我慢できない人は,フリーソフトを使うべきでない. カネを払って商用製品を使いなさい.

    MySQL

    Yosemite までは,MySQL 5.6.16 (OS X 10.7用パッケージ)を使っていた. MacPorts などのパッケージ管理システムではなく, MySQL 本家(日本語版web)にあるMacOS用のバイナリパックを使用.

    El Capitan への移設により,MySQL daemon が起動できなくなった. MySQL :: Download MySQL Community Serverから 最新のバイナリパック (mysql-5.7.10-osx10.10-x86_64.dmg) を取得してインストール,正常稼動を確認.

    なお,上記バイナリパックは,パッケージ名こそ OS X 10.10 用であるが, インストールされるのは OS X 10.9用である. インストール先のディレクトリ名で確認.

    $ ll /usr/local/
    (中略)
    lrwxr-xr-x    1 root      wheel     27  2  5 05:50 mysql@ -> mysql-5.7.10-osx10.9-x86_64
    drwxr-xr-x   17 root      wheel    578 11  9  2014 mysql-5.6.16-osx10.7-x86_64/
    drwxr-xr-x   13 root      wheel    442  2  5 05:50 mysql-5.7.10-osx10.9-x86_64/
    

    インストール先の実体は,"mysql-バージョン番号-osx....-x86_64" などバージョン番号やMacOSのOSバージョンなどを付加したディレクトリ. そこに /usr/local/mysql という名でシンボリックリンクが張られる.

    • ターミナルから mysql -u root -p にて MySQL 稼働確認.管理者パスワードを自分用に設定. 最初のログイン時は初期パスワードでログイン,すぐに変更しておく.変更しないで別のSQLコマンド実行すると怒られる.
    $ mysql -u root -p
    Enter password: (初期パスワード入力)
      (中略)
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Local_passw0rd';
      ないし
    mysql> SET PASSWORD='Local_passw0rd';
    

    パスワードは,大文字・小文字,数字,記号などが全て含まれ, かつ8文字以上の文字列とするのが望ましい(MEDIUM 程度を個人的な努力目標).

    稼働確認のため,SQL コマンドをテスト実行 (See MySQL tips (hysk)).

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | wordpressdb        |
    +--------------------+
    5 rows in set (0.00 sec)
    
    mysql> select host,user from mysql.user;
    +-----------+-----------+
    | host      | user      |
    +-----------+-----------+
    | localhost | mysql.sys |
    | localhost | pma       |
    | localhost | root      |
    | localhost | wpadmin   |
    +-----------+-----------+
    4 rows in set (0.01 sec)
    

    WordPress

    WordPress は複数のソフトウェアに依存して動作している. そのため,正常稼働しなかったときの原因特定が煩雑になる. 私自身も最初は混乱してわけが分からなくなったが, 一つずつ順を追って段階的にチェックしていけば,(たぶん)何とかなる.

    1. MySQL は正常稼働しているか?: コマンドラインでの mysql 実行テストで確認 (See MySQL tips (hysk)).
    2. apache2 と PHP 連携が正常稼働しているか?: Pukiwiki が稼働してればオッケー.
    3. apache2 からPHPを介した MySQL へのアクセスが可能か?: シンプルなテストスクリプトでアクセスを確認.

    上記までの正常稼働が確認できれば,残る問題は WordPress 自体にあると考えられる.
    今回(2016-02-11)の自分の場合,wp-config.php のホスト名設定 (DB_HOST)部分であった.

    WordPress コンテンツの移設

    phpMyAdmin が使えなかった(原因特定できず)ため,MySQL をコマンドラインから実行してDB情報を移設した.

    下記ページの手順をほぼそのまま使った:WordPress の引っ越し
    PC-old と PC-new での作業を行ったり来たりしなくて済むよう,実行順序を入れ替えてある. Linux 向けの解説になっているが,MacOS でも使える方法. たとえ phpMyAdmin が使えなくても,コマンドラインでの処理で WordPress は移設できる.

    1. PC-old の WordPress ディレクトリを PC-new に丸ごとコピー(移行アシスタントによりコピー済み)
    2. PC-old にてMySQL上の WordPress DB をエクスポート
    3. PC-new に PHP, MySQL, HTTP (Apache2) を導入(Pukiwiki などの稼働確認で済ませてある)
    4. PC-new に MySQL 用DB作成,アカウント設定(WordPress用ユーザ& パスワード)
    5. PC-new の WordPress 設定ファイルを編集(私の場合は wp-config.php の編集だけだった)
    6. PC-new に上記DBをインポート
    7. PC-new の移設したDB内のデータ調整(今回はホスト名が localhost で固定だったから不要)

    PC-old での WordPress DB エクスポート

    [hayasaki@PC-old] $ sudo mysqldump -u wpadmin -pwp_pass wordpressdb > wp.sql
      (ユーザ名: wpadmin  wp-config.php 内の DB_USER 設定)
      (パスワード: wp_pass  wp-config.php 内の DB_PASSWORD 設定)
      (DB名: wordpressdb  wp-config.php 内の DB_NAME 設定)
    

    PC-new の MySQL にて,WordPress DB 用のユーザなどを設定.

    [hayasaki@PC-new] $ sudo mysql -u root -p
    Enter password: (パスワード入力)
    mysql> CREATE DATABASE  wordpressdb;
    
    
    mysql> CREATE USER 'wpadmin'@'localhost' IDENTIFIED BY 'wp_pass';
    
    mysql> GRANT ALL PRIVILEGES ON wordpressdb.*  TO 'wpadmin'@'localhost';
    mysql> FLUSH PRIVILEGES;
    

    PC-new での WordPress DB インポート

    [hayasaki@PC-new] $ sudo mysql -u wpadmin -pwp_pass wordpressdb
    mysql> source wp.sql
    

    WordPress 設定の編集

    修正した部分(DB_HOST 設定)を含む,最重要パラメータ部分(4つ)のみ抜粋.

    $ vi ~/Sites/WordPress/wp-config.php
    --- ここから
    // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
    /** WordPress のためのデータベース名 */
    define('DB_NAME', 'wordpressdb');
    
    /** MySQL データベースのユーザー名 */
    define('DB_USER', 'wpadmin');
    
    /** MySQL データベースのパスワード */
    define('DB_PASSWORD', 'wp_pass');
    
    /** MySQL のホスト名 */
    /* define('DB_HOST', 'localhost'); */
    define('DB_HOST', 'PC-new.local');
    --- ここまで
      (DB_HOST 部分は,/etc/hosts やら 「システム環境設定」> 「共有」以下の『コンピュータ名』などで設定した名前と一致させた.)
      (PC-old では localhost で設定していて正常稼働していたが,PC-new では稼働しなくなった.
      try & error でホスト名を変えて試し,上記のようにしたら動いたのでそのまま使ってる.
      トラブルの原因を理解できたわけじゃないが,動いているから良しとする.)
    

    DB内のホスト名情報

    今回は不要だったが,記録しておく.

    $ mysql -u wpadmin -pwp_pass wordpressdb
    (起動メッセージ省略)
    mysql> select option_name,option_value from wp_options where option_name='siteurl' or option_name='home';
    +-------------+--------------------------------------+
    | option_name | option_value                         |
    +-------------+--------------------------------------+
    | home        | http://localhost/~hayasaki/WordPress |
    | siteurl     | http://localhost/~hayasaki/WordPress |
    +-------------+--------------------------------------+
    2 rows in set (0.01 sec)
    
    mysql> update wp_options set option_value = 'http://PC-new.local/~hayasaki/WordPress/' where option_name = 'home' or option_name = 'siteurl';
      (見ればわかるが,option_value フィールドの設定値を変更する場合.今回は不要だった)
    

    Dropbox

    現象と解決策

    PC-new からDropbox へのアクセスが出来ず. 結局,PC-old 側から Dropbox のweb管理画面にアクセス,スマートフォンアプリの登録を済ませ, PC-new から普通にログイン出来た.

    状況解説

    二段階認証で,スマートフォンアプリ Google Authenticator を使っていたのだが, PC 移設の少し前に携帯機種変更していた事を忘れてた.

    しばらく Dropbox をまともに使ってなかった & PC-old で自動同期だったので, 携帯機種変更に伴いアプリ側で再登録する必要があった事を完全に忘れていた.

    おそらく私の早合点なのだろうが,このような状況だと,PC-new 単独ではどうやってもDropboxにログイン出来なかった.

    1. 携帯アプリで認証コードが発行されないから,MacOS の Dropbox アプリからの二段階認証でのログインが出来ない.
    2. Dropbox のweb管理画面にログインしたくても,こちらも認証コードなしでログインすら出来ない
    3. 「スマートフォンを紛失」から回避策を見ても,Dropbox のweb管理画面にログイン出来ることが前提になった解説.堂々巡りで無意味.

    今後の教訓

    教訓:旧PC環境は,データ移設を済ませたとしても,しばらくは保存しておくべき. また,スマートフォンの機種変更が仕事にも影響を及ぼす可能性がある事も認識できた.
    少なくとも,携帯機種変更したら全てのアプリについて動作確認すべきであった. 次回の機種変更時,忘れてはならないことの一つとする.

    phpMyAdmin

    phpMyAdmin のトラブルは,実は単純だった. config.inc.php の host 設定を書き換えるだけ.

    これまでは localhost で定義していたが, 「システム環境設定」-> 「共有」の『ホスト名』 (「コンピュータ名」でなく,その下部の一文,『ローカルネットワーク上のコンピュータから,次のアドレスで子のコンピュータにアクセスできます:PC-A.local』の名前)と一致させればよい.

    $ vi ~/Sites/phpMyAdmin/config.inc.php
    --- ここから
    /* Server parameters */
    $cfg['Servers'][$i]['host'] = 'PC-A.local';
    //$cfg['Servers'][$i]['host'] = 'localhost';
    --- ここまで
    

    自分の場合,phpMyAdmin はユーザホーム以下に置いたため,~/Sites/ 以下となってる.
    この置き場所は,単に自分自身のweb環境バックアップを一回で済ませる事が目的であり, 他者がまねしない方が良い.

    変更履歴

    更新日 内容
    2015-02-14 Dropbox, phpMyAdmin の問題を解決.結局,単純な解決方法だった.終わってみればこんなもんか.
    2015-02-13 WordPress関連のトラブルシューティングを追加.
    2015-02-09 記述開始.Pukiwiki は El Capitan でも正常稼動した.