Drupal 8 のバックアップとコア+モジュールアップデートをやってみる。
はじめに
今年も Drupal Advent Calendar 2016 にも参加します!ネタとしては、昨年,「Drupal 8で認証付きの勉強会サイトを作ってみる」で制作したサイトのコア+モジュールのアップデートにチャレンジします。あ、ちなみに昨年初めてDrupal 8 を触ってサイト構築してからは、ほとんど触ってません。つまりDrupal 8 については初心者の記事である、ってことをご了承ください。誤りや修正すべき箇所があれば、ぜひご指摘ください。
まずはバックアップから
さて、サイトを触るときは、当然バックアップからですよね。Drupal 8 では、バックアップには drush(Drupal 管理用のシェルコマンド)を使うのが良いはず。スマートにやるなら、「Drupal 本体(core)を手軽にアップデートする方法」が参考になります。でも、最初は、手堅く手動でやってみます。
Drupal は、インストールディレクトリと、データベースにデータが分かれてるので、単純にインストールディレクトリをバックアップするだけではダメなんですが、まずは、ディレクトリをバックアップ。tar コマンドでディレクトリ全部を圧縮しちゃいます。
tar czvf backups/XXXX.tgz [対象ディレクトリ]
今回は、282Mbyte になりました。データベースも手動でやってみましょう。あ、データベース名とか、パスワードとか忘れてます。うーむ、どこにあるかな。1年触ってないとすっかり忘れちゃいます。私の場合は、以下にありました。データベース名、パスワードがわかります。
tail -20 sites/default/setting.php
...
databases['default']['default'] = array (
'database' => 'mydatabase',
'username' => 'myusername',
'password' => 'mypassword',
'prefix' => '',
'host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
これでデータベース名、ユーザ名、パスワードがわかりました。
さっそく、MySQLのダンプをします。
mysqldump -u myusername -p mydatabase > myfile20161217.sql
Enter password: [パスワード入力]
gzip myfile20161217.sql
sqlダンプ前にキャッシュはクリアしよう!
sqlダンプは 60Mbyte程度になったのですが、圧縮すると 2.7Mbyte でした。テキストを見てみるとキャッシュデータが入ってたので、ダンプする前にキャッシュを消すと良いのかもしれません。(試してみます。管理メニューの 管理>環境設定>パフォーマンス(なぜかパン屑リストには開発と表記) に「すべてのキャッシュをクリアー」ってのがあります)
さて、同様にバックアップすると、なんと、ダンプファイルが6.3Mbyte、gzip圧縮後は 850Kbyte ですので、キャッシュクリアの効果は絶大でした!
( ちなみに drush では drush cc all で消せます → と書いてましたがDrupal 8 では、 drush cache-rebuild(cr)が正しいようです。)
ついでに各種アップデート
サーバのディストリビューションは Ubuntu 14.04(LTS)を選定したので、2019年までのサポートがあります。各種のソフトもアップデートしておきます。
sudo apt-get update; sudo apt-get upgrade
昨年は、apache2.4.7, php5.5.9, MySQL5.5.3 だったのですが、apache2は2.4.7-1ubuntu4.13, php5.5.9+dfsg-1ubuntu4.20, mysql5.6.33-0ubuntu0.14.04.1 となってました。(昨年は詳細なバージョンは記録してなかったので、今後はここまで細かくしておくのが良いかも)
メンテナンスモードを開始
composer / drush のアップデート
さて、こっからは drush を使った正当な手順を踏んでみます。上述の記事に従って進めます。まずはメンテナンスモードに入れるとのこと。(初めて知りました)
その前に、drush をアップデートしたほうが良いですね。drush のインストールには composer を使っていたので、composer もアップデートすべきです。
sudo composer self-update
sudo composer global update
むむ。するとエラーが出て、なんとcomposer (drush)の最新版は Ubuntu 14.04 のデフォルト php 5.5.9では使えないとのこと。php を 5.6 にあげるしかなさそうです。さて、どうしますかね。まずは php5.5 関係のパッケージをリストアップ。
dpkg -l | grep php | awk '{print $2}'
php に関係するパッケージが一覧で確認できるので、アンインストールします。
sudo apt-get remove php5-cli php5-common php5-gd php5-json php5-mysqlnd php5-readline pkg-php-tools php-pear php5
trusty(Ubuntu14.04)のリポジトリはダメなので PPA(外部リポジトリ) を使います。以下で、PPAを追加します。
sudo apt-add-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6 php5.6-gd php5.6-json php5.6-mysql php5.6-mbstring php5.6-xml
ここでもう一度 composer update です。これで同時にdrush も最新版になるようです。( drush/drush:dev-master 版 )
sudo composer global update
これで何とかなったようです。
やっとメンテナンスモードを設定
メンテナンスモード
drush sset system.maintenance_mode 1
drush cr
アーカイブの取得
drush dump-archive
これで、自分のホームディレクトリの drush-backups/archive-dump/[日付] の下に、ディレクトリと、sqlダンプ一式の tar.gz ファイルが作られます。
やっとアップデート
ここまで準備ができて、やっと、コア/モジュールのアップデートの準備が整いました。こういう作業は、定期的にやっておかないといけないですね。(しみじみ)
サイトを確認すると、
こんな表示が出ています。さっそくupdateしましょう。
drush pm-update drupal
さて、いかがでしょう。
なんとか無事にCore のアップデートができたようです!
モジュールのアップデート
つぎは、モジュールのアップデートです。
drush up
これで複数のモジュールアップデートができるはずです。
コマンドの結果は
%% drush pm-update
Update information last refreshed: 日, 12/17/2016 - 01:30
Name Installed Version Proposed version Message
Content Access (content_access) 8.x-1.x-dev 8.x-1.x-dev アップデートが利用可能です
Imce File Manager (imce) 8.x-1.0-rc2 8.x-1.4 アップデートが利用可能です
AT Core (adaptivetheme) 8.x-1.x-dev 8.x-1.0-rc2 アップデートが利用可能です
Code updates will be made to the following projects: Content Access [content_access-8.x-1.x-dev], IMCE [imce-8.x-1.4], AdaptiveTheme [adaptivetheme-8.x-1.0-rc2]
Note: A backup of your project will be stored to backups directory if it is not managed by a supported version control system.
Note: If you have made any modifications to any file that belongs to one of these projects, you will have to migrate those modifications after updating.
Do you really want to continue with the update process? (y/n):
モジュールを3つ一度にアップデートするのは、ちょっと不安です。順番にやったほうが安心かも。ここは "n"と答えて、モジュールを1つづつアップデートしてみます。
drush pm-update imce
drush pm-update content_access
drush pm-update adaptivetheme
それぞれの実行後には、サイトにアクセスして簡単な動作確認もします。
(しかし、モジュールのアップデートはサイトからやったほうが簡単かも、ですね。。)
アップデート後には、データべースのアップデートが必要な場合があり、サイト上からの実行が望ましそうです。
メンテナンスモード終了
ひととおり、アップデートが終わったら、メンテナンスモードを終了させます。
drush sset system.maintenance_mode 0
drush cr
以上、バックアップ+コア・モジュールアップデートでした。
Author And Source
この問題について(Drupal 8 のバックアップとコア+モジュールアップデートをやってみる。), 我々は、より多くの情報をここで見つけました https://qiita.com/nkawa/items/05d94cc6c4a7b73635f0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .