CentOS8にpythonモジュールmysqlclinetインストール問題

サーバーOSをCentOS8に変更した機会に、メインのポータルサイトをXOOPS環境から変更を検討中。

個人サイトのポータルなのでそんなに豊富なコンテンツはないが、かといって静的なHTMLサイトではつまらないと言うことで、Python環境のWEBアプリフレームワークDjangoの導入・勉強で進めている。

参考サイト
https://docs.djangoproject.com/ja/3.0/intro/tutorial01/

デフォルトのSQLite3からWordPressと同じMySQLに変更
https://qiita.com/SE_AmericanFootball/items/e222604943c500801746

しかし、CentOS8では MariaDBがメインになっているため、うまく mysqlclientがインストールできない。

そこで

$ dnf remove mariadb-devel
$ dnf install mysql-devel

とすることで

$ python pip install mysqlclient

が通るようになり

$ python manage.py migrate

などあとはSQLiteと同じ手続きで進めるようになった。

メールサーバー顛末(SMTP-Auth)

今回のメールサーバーの目的は、現在使っているプロバイダ系のEメールをプロバイダからPOPして保存、IMAPサーバーとしてクライアントに公開するという物で、PCとか携帯、タブレットどれからでもメールが読み書き出来るようななるというWEBメールに近い環境が実現できるという物です。家サーバーの時はfetchmailコマンドを使って、プロバイダからPOPで落として来たが、専用サーバーということで、プロバイダからメール転送をかけることにした。これによりタイムラグ無くメールを読むことが出来るようになった(fetchmailだとポーリング間隔だけタイムラグが出来てしまう)。

imap環境は家サーバーのubuntuの時と同様にpostfixとdovecotの設定のみ。旧メールフォルダを家サーバーからtarしてscpしてtarしてVPSに転送、ついでにバックアップ。こちらを参考に取得したSSL証明書などもバッチリ反映させておけばSSLでアクセス可能。

SMTPでメール送信機能を持たせるのは家サーバーではやっていなかった事なので、後回しにします(一発ぶっつけでうまく動かなかった)。

せっかくなので、Webmail機能を持たせようと、SquirrelMailを導入したが、うまく動かない。ubuntuの時は何の問題も無くあっさり動いた物だが、パスワード認証のあと「このページにアクセスするにはアカウントが必要です。」というエラーメッセージが、httpdのログには何も載っていなかったので、不思議と思いググってみた所、どうも /var/lib/php/session の書き込み権限がないとか、、、ああ、思い当たった!家サーバーの時と条件を合わせるため、apacheの実行ユーザーをデフォルトと変えていたのでした。ubuntu と CentOSでは実行ユーザーが異なるため、同じ設定ではアクセスが出来ないということ。ということで、該当ディレクトリの所有者を変更して、書き込み可能にすることで無事解決。

SMTP Authの設定は基本的にはimapの設定の時と同じページを参考に薦めればOKでした。最後の最後までうまく動かず悩ませた理由は単純なtypoでした。。。これは気をつけないといけない。

メールサーバーの機能はこれで必要な分一通り完了。メールアカウント一杯作れます。悪用禁止w

 

WordPress 移植メモ

サーバー移動にあたって、WEBデータの移動が大きな問題の一つでした。

家サーバーがubuntu8.10のまま長らく放置されていたのも、データベース移動がうまく行くかどうかに不安があったからだ、それに加えてPC自体の調子の悪さも相まって、「光学ドライブが動かない」「USBポートが不安定」などの理由でそのままにせざるを得なかったというのもありました。

今回の場合は、完全に引越であるので、失敗しても何度でもやり直せるということで、色々試してみた。

まず、WEBサーバーにインストールしたphpMyAdminを用いてバックアップ/リストアを行う方法。

全データを対象に行ったが、読み込みファイルサイズに制限があったので、あらかじめFTP転送しておいたバックアップファイルをリストアしようとしたが、rootですら書き込み権限が無いとかで失敗。どうもinformation_schemaというデータベースが問題であろうという所までは分かったが、放置。

mysqlのコマンドラインツールで全バックアップ/リストア

結局は上記理由で失敗。information_schemaは内部的な利用のための物で書き込むことは出来ないらしい・・・じゃなんでバックアップ/リストアの対象になっとんねん?って思ってしまうが、そういうわけで地味に最後の手段。

コマンドラインでちまちまデータベース一つずつバックアップ/リストア

結局はこれ。information_schema以外のデータベースをmysqldumpでちまちまバックアップ取って、リストア先で

mysql> create database wp-data default character set utf8

$ mysql  -u wpdata -p xxxx < backup.sql

でな感じであらかじめ(wpdata)というユーザー権限でデータベース(ここではwp-data)を作っておいて、バックアップデータである*sqlファイルを読み込みます。※ここのwpdataというユーザー名とwp-dataというデータベース名はバックアップ元に準じます。

あとは、htmlディレクトリを構造毎ファイル所有者に注意して複製して終わり。

ただ、この方法ではうまくいかず、ページのリンク関係がボロボロ。そりゃそうです。トップページのURLが変わったのだから、当然直リンしている所は破綻するわけで、ここを直さないといけない。幸いバックアップした*.sqlファイルはテキストなので、ここはsedを使って置き換えてしまいます。

$ sed -e ‘s/old url/new url/g’ backup.sql > backup1.sql

出来上がったデータで置き換えます(もちろんデータベースは一旦消して作り直します)。またコピーしたhtmlディレクトリの中にも旧URLを直接参照している所があるはずなので、これも出来る限り書き換えます。

grep ‘old url’ */* などして探して手動で書き換えられる程度の作業なので大したことはありませんでした。

これで、無事データ移植完了。

同じような感じで xoops も移植できました。

SSL認証どたばた

せっかく固定IPでドメイン取得したのだから、家サーバーの時のようなオレオレ認証のSSLじゃない方が良いなぁ。。。

ということで、ちゃんとしたSSL認証を目指す。さくらインターネットのレンタルサーバーには共用SSLという物があるのだか、専用サーバーの扱いになるVPSでは使えないようだ。かといってちゃんとしたSSLを導入しようとするとやたら高い

ということで キーワード「さくらVPS SSL証明書 無料」でgoogle検索w

で、この辺を参考に(ありがとうございます)StartSSLを導入。結構メンドイでした。

出来上がった

サーバーキー (server.key)とサーバー証明書(server.crt)をhttpd の/etc/httpd/conf.d/ssl.conf の該当箇所にコピー。

# service httpd restart

次にパスフレーズを埋め込んでhttpd起動を楽にします。

# openssl rsa -in server.key -out server.key

1年間有効だそうなので、また来年ドタバタしそう・・・。来年には、、、安くても有料系のSSLを使えるくらいになっていたら良いな・・・

新サーバーへの移行 さくらVPS

個人的にもいろいろあったような空白期間でしたが、久々に追加です。

いままで、自宅サーバーでの運用を続けてきましたが、さすがに10年選手のノートPCも寿命が近づいてきたようで、すさまじく調子が悪いということもあり、以前より検討していたレンタルサーバーへの移行を行いました。

レンタルサーバーといってもルート権限のあるもので、VPSという仮想マシンを使ったサービスです。物理マシンを複数人数で共有するとはいえ、ほとんど専用サーバーのような快適さで、レンタル料金は共有サーバーと同じくらいか、さらに安いくらいです。

さくらインターネット さくらVPS

先週木曜日あたりから試用期間で準備を始めて、メールサーバー、WEBサーバーを起動。そして、このwordpressのデータ移行を行ったところで一旦書き込みに至りました。

今回の移行により、ドメインが次のような変遷をたどり、、

marochanet.dyndns.org  (家サーバー ダイナミックDNS、有料化に伴い引き揚げ)

marochanet.mydns.jp   (家サーバーダイナミックDNS 唯一の無料jpドメイン まだ使えるかなw)

marochanet.org                    (固定IPに対し正式取得したドメイン JPは高いのでORGにしました)

上記のドメイン名で http://blog.marochanet.org/ が当ブログのアドレスとなります。

サーバー初期設定など

とりあえず、家サーバーでやっていた仕事を一通りさくらVPSにやらせることを目的にサーバー構築を進めます。

基本は公式っぽいさくらVPSマニュアルに沿って進めることにする。

  • rootパスワードの変更
  • yumアップデート
  • 日本語環境構築 (/etc/sysconfig/i18n      =>  LANG=ja_JP.UTF-8)
  • 作業用一般ユーザー作成。suグループに編入
  • 鍵認証。telnetとかは危険なので、基本SSHでホストログイン。
    鍵はPuTTYでの作成が例ですが、Linuxマシンのクライアントから入る場合は
    ssh-keygen -t rsa で出来上がります。id_rsa (private key ) id_rsa.pub (public key)
  • SSHポート変更 22番のままだと攻撃されちゃうので変更。
    /etc/ssh/sshd_conf
    あと必要な設定は、 PermitRootLogin no   としておくこと。
    さらに鍵持ってる人しか入れないようにするには  PasswordAuthentication no とすると完璧。
    ※ 上記設定は必ず鍵認証の確認を行ってからすること。でないと取り返しの付かないことになるかも・・・
    ※ VPSならVPSコンソールから入れば直せますがねw
    うちは家サーバーの頃から物騒なアクセスログを散々見ていますので、鍵付きでしか入れないようにしました。
  • 次にファイアーウォール。 /etc/sysconfig/iptables  の編集と service iptables restart コマンド
    これはこの先何度も設定し直すことになるので憶えておくこと。さくらVPSのデフォルトではiptablesファイルが無いようなので、手順書にあるテンプレートファイルを導入し編集。

ここまで来ると、もう普通に使えるようになってるので、その他のhttpd、メールサーバーなどの設定に進みます。

ドメイン取得 – marochanet.org —

さくらVPSの本契約(会員メニュー →「 契約サービス一覧・表示」で「本登録ボタン」をクリック)を行うと1~2時間程度で、クレジットカードでの支払いを確認したという旨のメールが届くので、その時点で無料体験期間の制限事項が撤廃されたと判断しても良いようです。

正式には数日後に届く住所確認ハガキにあるお知らせ番号を登録(会員メニュー→「契約サービス一覧・表示」にある)することで完了と考えられるけど、まぁ大丈夫って事でしょう。どっかにそんなこと書いてあったっけ?

ここで、晴れて本稼働ということで、ドメイン取得にかかる。このサービスでは無料で5ドメインまでDNS登録出来るということ、早速テキトウなドメインを登録してみるふむふむと説明を読みながら、ゾーンを設定。しばし待つ。

しかし、一向にpingが帰ってこない。。。。(そろそろ気付け)

ここで、落ち着いてもう一度サービス内容を読んでみる。

さくらのVPSご契約1件につき、さくらインターネットが提供するDNSサーバが利用できます。プランによって5ゾーンもしくは10ゾーンまで利用できます。ネームサーバサービスの登録申請および 設定について詳しくはサポートサイト「ネームサーバ利用申請方法」ページをご覧ください。

ということだwwwwwww。世の中そんなに甘くはないですね。DNS登録は無料でするけど、独自ドメインは各自で取得してねってこと。というおバカな勘違いで騒いで恥をかく前に自己完結できて良かった良かったw

で、独自ドメインの取得に入る。折角なので面倒の無さそうなさくらのサービスを利用することとする。

とりあえず、ということで、高価なjpとか属性付きドメイン(年間3800円~)は置いておいて、org系のドメイン(年間1800円)で、申し込み手順に従ってホイホイと登録。無事に、

marochanet.org

を取得! 😆

VPSの会員メニューに戻って、DNS登録。ゾーン編集でAネームCNAMEを登録して、サイト構成の枠組みを作る。ここでやっとpingが帰ってくるようになり。独自ドメインによる運用が出来るようになった。

つぎに逆引き登録であるが、これはさくらVPSのコントロールパネルで行うが、WWWのようなCNAMEのホスト名ではダメで、Aネームで登録された名前を使うことが重要らしい。

いままでダイナミックDNSばかり使ってきて、今回初めて正式なドメイン取得を行ったわけですが、気づかなかった点として、ドメイン取得とDNSによるIPアドレスとの紐付けが普通は別々な手続きであったこと、これが勘違いに繋がったんじゃないかなと思った。

じゃ、よく考えたら、正引きだけ考えれば、、、専用サーバの固定IPアドレスでもダイナミックDNSで登録しちゃえば無料でいくつでもドメイン持てちゃうんじゃね?って考えに及んでしまいますが、どうなんでしょうね~。手続き的には契約さえ守れば問題無いような気がするし、さくらのDNS使わなくても良いし、ワイルドカード対応のDDNS使えばゾーン編集しなくてもいいし。ということで、落ち着いたら、今あるMyDNSの設定をこのVPSに飛ばしてしまおうと思ったりします。cronで7日おきにログインすればいいだけですしね~。

さくらVPS計画開始

自宅サーバー(10年選手のPen4ノートPC)機の調子が悪くなってきたこともあり、レンタルサーバーの検討を行っていた。

自由度の高さで専用サーバーも視野に入れていたのだが、値段が高く勉強用という目的に対する費用対効果の面からも手を出しかねていたところ、VPSというレンタルサービスを知り、一気に導入へ向けて進むことにした。

VPSとはVirtual Private Server(仮想専用サーバー)の事で、一つの物理マシンを多数のクライアントで共有するという意味ではレンタルサーバーと同じであるが、それぞれが仮想マシンとして提供されるため、論理的には専用サーバーと同等と言える。ということでお値段は共用のレンタルサーバと同等で、専用マシンと同等のサービスが提供されているというわけだ。

さっそく、さくらインターネットサービスさくらVPSに申し込み、体験コースを開始する。

OS はCentOS6.4(Final) 手堅いサーバーOS。 「さくらのVPS(v3) 2G」をクレジット払いで登録すると

「お申込受付完了のお知らせ [*****]」  というメールが来る。 ここでしばらくするとコントロールパネルでOSか起動できるようになるがまだ慌てない。

30分ほどすると「[さくらのVPS] 仮登録完了のお知らせ」というメールが来て、IPアドレスと、rootのパスワードが届くので、ここでおもむろにOS起動。

OSはほぼ普通に使用可能な程度にインストールされている。デフォルトの仮想イメージをコピーして提供しているのだろうか。動作としては、仮想とは言え3コア分持ってることもあり、大変快適。10年以上前のPen4ノートを自宅サーバと使っているのとはエライ違い。

この速さなら問題ないということで、2週間の無料体験期間を待たずして、本契約に移行することにする。
(無料体験ではドメイン登録は出来ず、ポート25番も閉じた状態なので、サーバの設定が進まない)

セキュリティー対策

WassUp

さて、コメントスパム対策として前回CAPTCHA(絵文字表示)を導入したのですが、アクセスログを見ると相変わらずガツガツンとアタックしてくる懲りないロボットども。httpサーバーのログだけでは何とも面倒なので、またまたWordpressのプラグインのお世話になることに。WassUpというアクセス解析プラグインでアクセスの仕方によりスパムを判別してくれるです。まぁ最初のうちは見てるだけでも楽しいくらいに変なアクセスがいらっしゃる。Google先生の巡回ならまだしも、百度とか中韓ののやかましいロボットには困ったものです。とりあえず、中韓の方々には用はないのでrobot.txtと.htaccessで遮断っと(こちらを参考にしました)。

こうやって雑多なアクセスを整理が整理されていくと悪の根源が絞られてきます。もともとこんなマイナーなブログサイトをアタックしたってなんのメリットも無いはずだし、たまたま落書きできそうな緩いサイトを見つけてしまったバカがしつこくやって来てるだけなんだと想像します。

kimsufi.com  このドメイン、フランスのドメインのようだけど実際はどうなんですかね~。まー知ったことではありませんが、こいつらが数分ごとにアクセスして特定記事に関係のない大量のコメント爆撃していたことが判明しましたので、ドメインごとアクセス禁止とさせて頂きました(.htaccessでError 403を返すようにしてやったww)。するとあら不思議。暫くすると他のサイトからのアクセスも無くなって、現在では全くアクセスのない状態になってます。やっぱり犯人は一人だったか~。いっぱい串使ってたんだね~。まぁ油断は出来ませんがしばらくはこのまま様子を見ようと思います。

SpamAssassin導入

サーバーがなんとかなってくると、もう一つのSPAMが気になってきてきます。言わずと知れたSPAMメールです。うちの環境ではプロバイダに届いたメールを直接パソコンで受信するのではなく、一旦まろ茶ネットサーバーがまとめて受信してIMAPサーバーとして管理しています。したがってデスクトップパソコンでもノートパソコンでもメールはサーバー上に一元管理されるという仕組みにしています。今まではここのパソコンでメールソフトを起動してSPAMとか迷惑メールを処理してたのですが、出来れば迷惑メールなんて見ずに勝手に処理して貰えればいいということで、IMAPサーバーであるまろ茶ネットサーバーの方にSpamAssassinというソフトを導入しました。これでまた一つ快適になってしまった。。。

くたばれコメントスパマーヽ(`Д´)ノ

こんな誰も見ないような僻地ブログにも来るもんなんですね~。

先月にも一回あったけど、手動でコメントを消して放置していたら、今週は本格的に来たみたい。頭の悪そうなアダルト系だかなんだかのサイトに誘導するようなコメント100件以上とか。。いわゆるコメントスパム。それもトップ記事じゃなくて、過去の特定の記事に集中してコメントしてるみたい(今回の場合は数ヶ月前のとある2件の記事に集中していた)。とりあえず全部消しましたが、つまらない作業に時間を取られるのはイヤなので、ちょっと対策をしました。

CAPTCHAという「あなたは人間ですか?」っていう程度の認証方式です。たとえば記事にコメントしようとすると文字の書いた画像が表示されて、「この文字を打ち込んでください」って感じで入力を求められます。この文字はコンピュータでは読めないように工夫がさてれいるので、ちゃんと人間がキーボードを叩いて入力しているかを確かめるという仕組みです(スパムの殆どはコンピュータにより自動に投稿される)。

まぁ、そんなこんなで、ちょっとご面倒をおかけしますが、害虫駆除と思ってご協力のほどをよろしくお願いいたします。