このサイトは、Joomlaで構築されています。
かつては、バージョン1.6だったかな、もっと古かったような気もしますが、アップデートが面倒で大変でした。
しかしながら、アップデートしないと、ネット社会では、悪さをする人にぶっこわされたり、のっとられたりと大変なことになります。
一度、完全にぶっ壊された経験から、きちんと管理するようにしましたが、やはりアップデートが面倒です。
現在、無事に3.4.8へアップデートできたんですが、それはもう、2、3日かかりましたよ。
とにかく、情報集めとトライアンドエラーの繰り返しです。
※以下の説明は、mysqlをデータベースとして、データベース名:joomla ユーザ:root prefix:j17 にて記述しているので、環境に応じて読み替えて下さい。
アップデート作業の前に、バックアップはとりましょうね
mysqldump -u root -p joomla | gzip > joomladb.gz
tar -cvzf joomlabackup.tar.gz joomla
1.6から1.7のアップデートは、忘れましたが、自動で更新するモジュールみたいなのでやったと思います。
このぐらい古いのは、もうアップデート出来ないかもしれません。
1.7 -> 2.5
最近まで、1.7で運用してました。
色々と脆弱性もあるだろうから、頑張って2.5にアップデートしました。
自動で更新できそうな方は、Extensionから更新すれば良いかと思います。
自分のは、できませんでした。
では、どうすれば良いかというと、マニュアルで更新すれば良いのです。
ほんと大変ですが・・・
とりあえず、ここから更新用Tarを取ってきます。
私の場合、Joomla_2.5.28-Stable-Update_Package.tar.gz をダウンロードしたと思います。
ダウンロードしたtarを豪快に上書きしました。
tar -xvf Joomla_2.5.28-Stable-Update_Package.tar.gz
chown -R www:www Joomla_2.5.28-Stable-Update_Package
次は、豪快に更新用SQLを流してやります。
以下にそれっぽいSQLがあるので、全部やっときましょう。
joomla/administrator/components/com_admin/sql/updates/mysql/
find . -name "*.sql" -exec sed -e 's/#_/j17/g' {} \; | mysql -u root -p joomla
後は、起動してみて、ログ確認で、エラーを取り除いていきます。
tail -f /var/log/httpd-error.log
2.5 -> 3.4.8
無事、2.5に更新出来たら、3.4.8に更新します。
3.4.8に更新すると、古いモジュールやテンプレートは、使えなくなりそうですので、注意して下さいね。
私の場合、なぜか、更新用モジュールが出ませんでした。
色々調べた結果、2.5に更新した時に問題が発生してたようで、更新用モジュールがデータベースに登録されていなかったことが原因のようです。
こんな時は、豪快に修正です。
以下のSQLを流しちゃいましょう。
mysql -u root -p joomla
INSERT INTO `j17_extensions` (`extension_id`, `name`, `type`, `element`, `folder`
, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`,
`custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
(28, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1,
'{"legacy":false,"name":"com_joomlaupdate","type":"component","creationDate":"February 2012",
"author":"Joomla! Project","copyright":"(C) 2005 - 2014 Open Source Matters. All rights reserved.",
"authorEmail":"
"description":"COM_JOOMLAUPDATE_XML_DESCRIPTION","group":""}', '{}', '', '', 0, '0000-00-00 00:00:00', 0, 0);
INSERT INTO `j17_menu` (`menutype`, `title`, `alias`, `note`, `path`, `link`,
`type`, `published`, `parent_id`, `level`, `component_id`, `ordering`, `checked_out`,
`checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`,
`lft`, `rgt`, `home`, `language`, `client_id`) VALUES('menu', 'com_joomlaupdate',
'Joomla! Update', '', 'Joomla! Update', 'index.php?option=com_joomlaupdate', 'component',
0, 1, 1, 28, 0, 0, '0000-00-00 00:00:00', 0, 0, 'class:joomlaupdate', 0, '', 41, 42, 0, '*', 1);
これで、コンポーネントに更新メニューが表示されます。
ここら辺りの説明は、ここに書いてあるので、参考にして下さい。
これで、一通り、うまくいったと思ったのですが、グローバルコンフィグが表示されなかったり、テンプレートが変になったりしました。
原因の一つは、データベースの更新が失敗していたようです。
古いモジュールやテンプレートが悪さをしているようで、綺麗さっぱり捨ててやりました。
捨てるにも、もはやまともに出来なかったので、強引に行います。
以下のディレクトリを3.4.8のstable版をダウンロードしてきて、入れ替えます。
joomla/components
joomla/modules
joomla/libraries
joomla/templates
次に、データベースを掃除します。
mysql -u root -p joomla
こいつで、IDを抽出します。 「なんか」のところは、モジュールの名前の一部なんかでやってみて下さい。
select extension_id,name from j17_extensions where name like '%なんか%';
出てきた、IDのメニューとモジュールを消してやります。
delete from j17_extensions where extension_id in (100xx,100xx,100xx,100xx);
delete from j17_menu where component_id in (100xx,100xx,100xx,100xx);
これで、大方、大丈夫だと思いますが、ログを確認して、対処していくことが必要かもしれません。