DTIサーバー構築34 「新しい場所で再出発!」

MySQLのバックアップとリストアでデータベースを移行しよう。

だが!
バックアップ元のシステムの文字コードがlatin1、データベースがUTF-8となっていて、

バックアップ先のシステムとデータベースがUTF-8の時、
文字化けが発生するので、いろいろ大変。
具体的には、

$ mysql -u myswluser -p

バックアップ元の文字コード

mysql> show variables like ‘collation%’;
+———————-+——————-+
| Variable_name        | Value             |
+———————-+——————-+
| collation_connection | latin1_swedish_ci |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+———————-+——————-+
3 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘char%’;
+————————–+—————————-+
| Variable_name            | Value                      |
+————————–+—————————-+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                      |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)

バックアップ先の文字コード

mysql> show variables like ‘collation%’;
+———————-+—————–+
| Variable_name        | Value           |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+———————-+—————–+
3 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘char%’;+————————–+—————————-+| Variable_name            | Value                      |+————————–+—————————-+| character_set_client     | utf8                       || character_set_connection | utf8                       || character_set_database   | utf8                       || character_set_filesystem | binary                     || character_set_results    | utf8                       || character_set_server     | utf8                       || character_set_system     | utf8                       || character_sets_dir       | /usr/share/mysql/charsets/ |+————————–+—————————-+8 rows in set (0.00 sec)

まず、mysqldumpで文字コードにlatin1を指定する。

$ sudo mysqldump -u username -p –default-character-set=latin1 dbname > dump.sql
 ファイル中のlatin1の部分をutf8に置換。

$ sed -i -e ‘s/SET NAMES latin1/SET NAMES utf8/g’ dump.sql

リストア先で

$ mysql -u mysqluser -p dbname < dump.sql

★DTIサーバー構築一覧はこちら★

DTIサーバー構築33 「優しく。優しく。」

SSHでガシガシやるのもいいけど、webminでお気楽にやるのもいいよね。
と、なんか最近、webminのインストール方法を書いた気もするが。

DTIサーバーの方は、Cent6だし、Cent7と違うかな。
と、思ったけど、一緒だった。

というわけで、以下のページを参考に、インストールしてみた。

自宅サーバ更新!(9)webmin

はい。終了。
★DTIサーバー構築一覧はこちら★

DTIサーバー構築32 「もう、信じられないっ!」

ある日、Gmailの、サイトで、見つけてしまったさ。
この世に生きる喜び。ではなく、エラーメッセージを。
レッドレッド。それはどぎつい、嫌な色だったさ。
レッドレッド。面倒だから半年ほど放っておいたさ。
SSL Security Error. [ Help ]
Server returned error “SSL error: certificate has expired”
そう。証明書の期限切れ。

もうすぐ無料のSSL証明書が簡単に取得できる日が来るようだが、それまでは1年更新の無料証明書を何とか使うしかない。

なので、昔のBLOGの記事を見ながら、まずは、CAcert.orgに行ってみる。
http://www.cacert.org/
あれ?BLOGをよく見ると、CAcertでは信用してもらえずに、StartSSLで取得し直してるやん。

過去の自分に教えられつつ、次のページに行って、右上の「顔写真+鍵」マークでログイン。

証明書の選択が出てくるので、過去に設定したであろう証明書を選択。
ログイン後は、まず、「Validations Wizard」タブを選択して、Type「Email Address Validation」を選択して、「Continue >> >>」

適当なEmailを入力して「Continue >> >>」、待つ。待つ。そして松。

メールが来たら、「Verification Code」を入力して「Continue >> >>」

「Finish >> >>」すなわち、終わり。
でも、目的は達していない。

「Validations Wizard」タブを選択して、今度はType「Domain Name Validation」を選択して、「Continue >> >>」

あなたの管理しているドメインを入力して、「Continue >> >>」

一覧に表示される受信可能なメールアドレスを選択して、「Continue >> >>」
メールが来たら、「Verification Code」を入力して「Continue >> >>」

「Finish >> >>」すなわち、終わり。

でも、まだ目的は達していない。
 

「Certificates Wizard」タブを選択して、Certificate Target「Web Server SSL/TLS Certificate」を選択して、「Continue >> >>」

次に秘密鍵を作るんだけど、更新するだけなので、「skip >> >>」

で、以前作ったCSRをコピペして、「Continue >> >>」

ない!って時は、
秘密キーからパスフレーズを削除して、

# openssl rsa -in pass.key -out nopass.key
CSRファイルを再度作成、

# openssl req -new -key nopass.key -out remake.csr

うまく行けば、再度「Continue >> >>」で、

Domainにあなたのドメインが表示され、「Continue >> >>」で、
サブドメインの入力を急かされ、「Continue >> >>」で、

あれ、同じサブドメインの期限切れ証明書だと、そこまでしなくても良かった?

「Tool Box」タブの「Retrieve Certificate」で、
期限が延長されている証明書をコピーして使えばよかったの?
あれ、どの時点で有効になった?

で、更に最悪なことに、新しい証明書をサーバーに入れてApacheを再起動しても、エラーで起動できない。。。

証明書ファイルの内容を確認したり、

# openssl x509 -text -noout -in domain.pem
秘密鍵ファイルの内容を確認したり、

# openssl rsa -text -noout -in domain.key
CSRファイルの内容を確認したり、

# openssl req -text -noout -in domain.csr

秘密鍵と、証明書が一致するか調べたり、、、

# openssl rsa -noout -modulus -in domain.key | openssl md5
# openssl x509 -noout -modulus -in domain.crt | openssl md5

復旧することができず、
同じサブドメインで証明書を作りなおすことも、既存の証明書を破棄することも無料ではできず。
結局新しいサブドメインにて、やり直し。

ま、最終的にGmailさんに怒られなくなったからいいか。
★DTIサーバー構築一覧はこちら★

DTIサーバー構築31 「どなたですかな!」

いつものことながら、自宅サーバー(ちっこいノートPC)が不調ですが、何もできてない。
さて、新たなレンタルサーバーもメール受信できないという状況になっている。
で、心当たりのあるメールを掘り出してきて確認。

1月20日 17:30~20:30 27.120.95.129~27.120.95.250 2001:2e8:65c:0:2:1:0:1~
2001:2e8:65c:0:2:1:0:1f4

どう考えてもこの時間帯からおかしい。

本メンテナンスにより、/sbin/iptables saveコマンドが正常に動作しなくなります。対処として、yum install policycoreutilsコマンドを実施しpolicycoreutilsをインストールしてください。メンテナンス前に実施しても問題ありません。
うん。文面見ても、どう考えても、これが原因。
も〜、や!

P.S.
その後、ただ単に「dovecotが自動起動に設定されていなかっただけ」というアホな原因が発覚。
も〜、や!

DTIサーバー構築30 「私のもの」

MySQLをインストール。

$ sudo yum -y install mysql-server
 :
Installed:
  mysql-server.x86_64 0:5.1.69-1.el6_4                                                                    
Dependency Installed:
  mysql.x86_64 0:5.1.69-1.el6_4     perl-DBD-MySQL.x86_64 0:4.013-3.el6     perl-DBI.x86_64 0:1.609-4.el6  
Complete!
続いて設定ファイルの編集。

$ sudo vi /etc/my.cnf
文字エンコーディングの変更。

[mysqld]
skip-character-set-client-handshake
character-set-server=utf8
[mysql]
default-character-set=utf8
起動!

$ sudo service mysqld start
自動起動の設定!

$ sudo chkconfig mysqld on
これでMySQLサーバーは起動して準備OK。

とりあえず、ユーザーとパスワードを設定しておく。

$ mysql -u root
MySQLの全ユーザー@ホスト、パスワードを表示。

mysql> SELECT user, host, password  FROM mysql.user;
+——+—————–+———-+
| user | host            | password |
+——+—————–+———-+
| root | localhost       |          |
| root | example.com |          |
| root | 127.0.0.1       |          |
|      | localhost       |          |
|      | example.com |          |
+——+—————–+———-+
5 rows in set (0.01 sec)
ユーザー名がないときは拒否するために、削除。

mysql> DELETE FROM mysql.user WHERE user=”;
Query OK, 2 rows affected (0.00 sec)
確認

mysql> SELECT user, host, password  FROM mysql.user;
+——+—————–+———-+
| user | host            | password |
+——+—————–+———-+
| root | localhost       |          |
| root | example.com |          |
| root | 127.0.0.1       |          |
+——+—————–+———-+
3 rows in set (0.00 sec)
パスワードが入っていないので、設定。

mysql> SET PASSWORD FOR root@localhost=password(‘Pass-for-root’);
Query OK, 0 rows affected (0.00 sec)
確認。

mysql> SELECT user, host, password  FROM mysql.user;
+——+—————–+——————————————-+
| user | host            | password                                  |
+——+—————–+——————————————-+
| root | localhost       | *fhjtugkfirueidkfjgutiyigjfhrutyfhdjfuryt |
| root | example.com |                                           |
| root | 127.0.0.1       |                                           |
+——+—————–+——————————————-+
3 rows in set (0.00 sec)
あと、2回。ユーザー自体を消してもOKだけど。

mysql> SET PASSWORD FOR root@’example.com’=password(‘Pass-for-root’);
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR root@127.0.0.1=password(‘Pass-for-root’);
Query OK, 0 rows affected (0.00 sec)
再度確認。

mysql> SELECT user, host, password  FROM mysql.user;
+——+—————–+——————————————-+
| user | host            | password                                  |
+——+—————–+——————————————-+
| root | localhost       | *fhjtugkfirueidkfjgutiyigjfhrutyfhdjfuryt |
| root | example.com | *fhjtugkfirueidkfjgutiyigjfhrutyfhdjfuryt |
| root | 127.0.0.1       | *fhjtugkfirueidkfjgutiyigjfhrutyfhdjfuryt |
+——+—————–+——————————————-+
3 rows in set (0.00 sec)
とりあえず、ユーザーの設定は完了。

次に、データベースの一覧を表示

mysql> SHOW DATABASES;
+——————–+
| Database           |
+——————–+
| information_schema |
| mysql              |
| test               |
+——————–+
3 rows in set (0.00 sec)
テスト用のデータベースを削除。

mysql> DROP DATABASE test;
Query OK, 0 rows affected (0.00 sec)
終了。

mysql> quit
Bye
再度入るときは、今設定したパスワードが必要。

$ mysql -u root -p
Enter password: 入力すると入れる。

あとは、適当に。