倉金家ホームページ趣味の部屋/LinuxMintサーバー化
| ||||||
ホームページ動作テストさっそくweb動作テストを行います。
・apache2のweb表示ディレクトリに新しいiroribataのプログラムをおきます。 ・phpMyAdminでMySQLにデータベースを作りユーザとパスワードを登録します。 ・ブラウザを立ち上げ http://localhost/iroribata でアクセスします。 →サイトの枠組みが表示されます。 ・新しいページを作ります。.... あれ???? →新しいページが表示されません。ページが作られないみたいです。 データベースをSQLiteに切り替えて同じことをやてみます。 →OKです。 すなわちMySQLがちゃんと働いていません。 → ・・・こ、こまります。 | ||||||
MySQLがだめだった原因データベースなどというものは50年100年使う可能性があり、データベースソフトを途中でバージョンアップしたからと言ってもよほどのセキュリティー問題でもない限り途中で使えなくなるとは思ってもいませんでした。
ログをみても「そんな項目ないよー」といった単なる現象についてのエラーログばかりで、原因についての知見が得られません。 さっそくSQLデータベースソフトを駆使して(駆使というほどでもないが)調べてみますと、テーブルが何もありません。すなわちテーブルが作成されていません。 SQL文を一生懸命見直してもわかりません。今まで動いていたのだし。 仕方ないのでテーブル作成のSQL文をばらして一つひとつデータベースソフトから手動投入してなんとか突き止めました。 結果、以下のテーブル作成文のDATETIMEのDEFAULTの部分がだめだった(今回のMySQLバージョン8.0ではだめになった)のでした。 $create_xxxx_table_sql = "CREATE TABLE IF NOT EXISTS xxxx ( xxxx_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, ....., xxxx_datetime DATETIME DEFAULT '0000-00-00 00:00:00' ); MySQL8.0のマニュアルを見るに、DATETIMEのDEFAULT値として'0000-00-00 00:00:00'は許されなくなり、実際にDATETIMEとして取り扱える値、'0001-01-01 00:00:00'から'9999-12-31 23:59:59'までの値でなくてはならなくなっていたのです。MySQLでは宇宙の悠久なる時間は取り扱えません。 で、変更忘れがあっても気がつきやすいように初期値をいちいち'1111-11-11 11:11:11'にしようかとも思いましたが、マニュアル推奨の DATETIME DEFAULT CURRENT_TIMESTAMP にしておきました。 これでテーブルがちゃんと作成されOKでした。めでたしめでたし。 | ||||||
apache2調整/etc/apache2/apache2.conf は
HostnameLookups On アクセスログに逆引きホスト名を記録しわかりやすくするためです。 /etc/apache2/envvars で export APACHE_RUN_USER= export APACHE_RUN_GROUP= を変更。レンタルサーバーに合わせました。パソコンの方もすべて合わせました。 所有者やパーミッションを気にしなくてよくなるのでいろいろとあとが楽です。 .htaccess の Header Set でエラーになりました。 /etc/apache2/mods-available/headers.load を /etc/apache2/mods-enabled/ にリンクしてOK。 あとは /etc/apache2/sites-available/000-default.conf に表示サイトの記述。 こんなとこです。 | ||||||
バックアップサーバーとしてヘテムルのサーバーとはすでに sshfs という方法でつないであり、ふつうのパソコン内のファイルを扱うのと同じに操作できるようになっています。FTPよりはるかに便利です。
またユーザが合わなかったのでこちらのパソコンのユーザ名やユーザ・グループ番号をヘテムルのサーバーに合わせてしまいました。 おそらくこちらのバックアップサーバーの方が先にこけるとは思いますが、2050年まであと28年、ヘテムルのサーバーが無事に動いていることを祈ります。 私も同期会の人たちも100歳になりますので、そのときこんなこともあったなあとホームページを見ながら思い出せればいいなと想います。 | ||||||