タグ: Mint

  • ローカルにLAMPでWordPressのバックアップを動かそうとしたら

    あるウェブサイトのバックアップをローカルのテスト環境で動かそうとしたら、WordPress のバックアップが動作するまで大変でした。慣れていれば、どうということのない設定なのでしょうが、メモしておきます。間違ったことを書いているかもしれませんが、あしからず。

    WordPress のバックアップ

    WordPress の解説サイトにしたがって実行。

    稼働中のサイトのファイル一式を Filezilla でダウンロード。デフォルトではテキストとバイナリが自動判別なので、常にバイナリの設定にしておいたほうが楽。

    データベースのダンプは、不要で巨大なテーブルは外しておかないと、phpMyAdmin で読み込めるサイズに収まらない(ことがある)。

    LAMP 環境のインストール

    仮想マシンに載せる。サーバへのアクセスはローカルのマシンからしか実行できないという前提の状態。

    ホストは Windows 8.1 Update、64bit の自作PC

    仮想マシンは Oracle VirtualBox 4.3.10

    ゲストは Linux Mint 16 (Petra) Mate, 64 bit

    メニューから「ソフトウェアの管理」( mintInstall 7.5.2 ) で、Apache、MySQL、PHP をインストール。だいたいの手順は、

    • Installing LAMP (Linux, Apache, MySQL and PHP) On Linux Mint – Linux Mint Community
      • Apache 2
        • apach2
          • “It works!” 確認。
        • あとで apache2-doc も導入。http://localhost/manual で日本語マニュアルが読める。
      • PHP 5
        • php5
        • libapache2-mod-php5
          • Apache2 を再起動
          • /var/www/testphp.php の中身: <?php phpinfo(); ?> を表示テスト
        • php5-cli (コマンドライン インタプリタ. 端末での作業用)
      • MySQL
        • mysql-server
          • 「MySQL の “root” ユーザに対する新しいパスワード」を求められるので入力
        • php5-mysql
        • phpmyadmin
          • apache2 自動設定させる
          • 「データベースの管理権限を持つユーザのパスワード」入力
        • なお、libapache2-mod-auth-mysql は存在しない
        • /etc/php5/apache2/php.ini を編集
          • ;extension=msql.so → extension=msql.so (頭の ; を外す)
        • Apache 2 再起動
        • http://localhost/phpmyadmin
          • mcrypt 拡張がありませんと警告。(一応入れてみたが、よくわからない。放置中)

    ローカルのテスト環境の設定

    ここから多重に間違い設定をして数日間の遠回りをしたが、試行錯誤の細かいことは省略。

    ローカルで、 http://dev.example.com/ でアクセスすることを仮定する。example.com にあたるところは、実際には私が実質管理しているドメイン。

    phpMyAdmin で、元のサイトの状態のデータベース名・ユーザ名・パスワードで、作成。wp-config.php 参照。バックアップの SQL 読み込み。WordPress 公式の引越しに関する解説を参照。

    phpMyAdmin で、データベースの wp_options テーブルの siteurl を http://www.example.com/wp から http://dev.example.com/wp に変更。

    ファイル一式を(Filezilla でバイナリ扱いでダウンロードして)適当なディレクトリに置く。例えば、

    /home/myusername/dev.example.com/web/

    としておく。ここがローカルのウェブサイトのルート ディレクトリになる。WordPress は

    /home/myusername/dev.example.com/web/wp/

    にあるものとする。これらのディレクトリやファイルは Apache が読み書きできるようにしておく。WordPress から .htaccess の生成や書き換えができる必要あり。ほかにもファイルの書き込み権限が必要なことが多い。

    テスト用の URL でアクセスできるように、/etc/hosts ファイルのローカル・ループバックを書き換える。

    127.0.0.1    localhost

    を、例えば、

    127.0.0.1    localhost   dev.example.com

    のように、ずらずらと追加していけばよい。localhost の IP アドレス 127.0.0.1 で複数のバーチャルホストを運用できる。もちろん、ローカルのテスト環境用で、外向きのサーバではない。

    ここに記したホスト名を Apache に設定していく。

    設定に関しては、まず、

    /etc/apache2/apache2.conf

    を読む。debian の conf はかなりカスタマイズされているらしく、次のドキュメントを参照せよと書いてある。

    /usr/share/doc/apache2/README.Debian ( *.gz 解凍)

    およそのしくみは、 利用可能な設定ファイル群を、dev.example.com.conf といった任意の名前で、ディレクトリ /etc/apache2/sites-available に書いておき、有効にしたい設定ファイルのリンクだけを /etc/apache2/sites-enabled/ ディレクトリに置くと Apache の設定ファイルの一部として読み込まれるようになっている。有効/無効の切り替え(リンクの作成/削除)はコマンドが用意されていて、

    • a2ensite で有効に(リンクが /etc/apache2/sites-enabled に作成される)
    • a2dissite で無効に(リンク削除)

    名前順で最初に読み込まれるサイト設定ファイル 000-default.conf がデフォルトの設定ファイルで、 /var/www/ にある内容が表示されるようになっている。このファイルは残しておく。バーチャルホストの設定に失敗した時に表示される場所になる。

    /etc/apache2/sites-available/000-default.conf

    このデフォルトのファイルをコピーして書き換える。ファイル名は例えば dev.example.com.conf  としておくが、デフォルトのファイル名より後ろになれば、なんでもよい。コメント行(#…) を除くと、次のような内容。

    <VirtualHost *:80>
    ServerName dev.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/myusername/dev.example.com/web/
    <Directory /home/myusername/dev.example.com/web>
    Require all granted
    AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

    <Directory …> … </Directory> は 000-default.conf には存在しない。追加したもの。

    Require all granted については、これがないとブラウザでアクセスした時に「Forbidden」エラーになった。

    Apache 2.4 から大きく変わったらしく、検索してみつかりやすいのは 2.2 までの書式。ただし、2.4 でも従来の書式を有効にできるらしいので、2.4 の設定例だからといってそのまま使えるかどうかはわからない。

    AllowOverride All については、これがないと、「パーマリンクの設定」が「デフォルト」以外の時に、ブラウザでアクセスした時に「Not Found」エラーになった。.htaccess が効かなくなるので、mod_rewrite が効かない状態になってしまう。

    上記のような内容のサイト設定ファイルを作ったら、a2ensite で有効にして、Apache に読み込ませておく。

    sudo a2ensite dev.example.com.conf
    sudo service apache2 reload

    インストール直後のデフォルトでは mod_rewrite が読み込まれない設定になっているので、有効にしておく。

    apache2ctl -M

    でモジュールを調べると、デフォルトでは mod_rewrite は読み込まれていないことがわかる。また、

    /etc/apache2/mods-enabled

    にも存在しない。

    /etc/apache2/mods-available/rewrite.load

    は存在している。これを有効にする。

    sudo a2enmod rewrite
    sudo service apache2 restart

     

    なお、このような設定方式は他に、

    /etc/apache2/conf-available/phpmyadmin.conf
    /etc/apache2/conf-enabled/phpmyadmin.conf

    でも使われている。phpMyAdmin のための .conf はここから読み込まれるようになっている。

    (2014/5/1)

    WordPress 本体とプラグインの更新

    wp-config.php の下の方に追記すれば、ftp サーバがなくても更新できる。

    define('FS_METHOD', 'direct');

    upgrade 用のディレクトリは Apache ( www-data ) が書き込めること。どのディレクトリかはエラー メッセージですぐわかる。ローカルの環境ではパーミッションや所有者の書き換えは簡単なので、よしとしておく。

    vsftpd などのサーバを入れてもよいが、設定ファイルの編集がやや面倒。

    (2014/5/2)

検索(WordPress内)

カテゴリー一覧

マキシマ文庫

Makisima Library, Vol.3

Twenty Twenty-Five Child

Proudly powered by WordPress