さくらのVPSプラン乗り換え計画(7)

Nginx のインストールと設定をする。

[takatoh@tk2-254-36564 ~]$ sudo yum install nginx
[sudo] password for takatoh: 
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package nginx.x86_64 0:1.10.2-1.el6 will be インストール
--> 依存性の処理をしています: nginx-filesystem = 1.10.2-1.el6 のパッケージ: nginx-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: nginx-all-modules = 1.10.2-1.el6 のパッケージ: nginx-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: nginx-filesystem のパッケージ: nginx-1.10.2-1.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package nginx-all-modules.noarch 0:1.10.2-1.el6 will be インストール
--> 依存性の処理をしています: nginx-mod-stream = 1.10.2-1.el6 のパッケージ: nginx-all-modules-1.10.2-1.el6.noarch
--> 依存性の処理をしています: nginx-mod-mail = 1.10.2-1.el6 のパッケージ: nginx-all-modules-1.10.2-1.el6.noarch
--> 依存性の処理をしています: nginx-mod-http-xslt-filter = 1.10.2-1.el6 のパッケージ: nginx-all-modules-1.10.2-1.el6.noarch
--> 依存性の処理をしています: nginx-mod-http-perl = 1.10.2-1.el6 のパッケージ: nginx-all-modules-1.10.2-1.el6.noarch
--> 依存性の処理をしています: nginx-mod-http-image-filter = 1.10.2-1.el6 のパッケージ: nginx-all-modules-1.10.2-1.el6.noarch
--> 依存性の処理をしています: nginx-mod-http-geoip = 1.10.2-1.el6 のパッケージ: nginx-all-modules-1.10.2-1.el6.noarch
---> Package nginx-filesystem.noarch 0:1.10.2-1.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package nginx-mod-http-geoip.x86_64 0:1.10.2-1.el6 will be インストール
--> 依存性の処理をしています: GeoIP のパッケージ: nginx-mod-http-geoip-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: libGeoIP.so.1()(64bit) のパッケージ: nginx-mod-http-geoip-1.10.2-1.el6.x86_64
---> Package nginx-mod-http-image-filter.x86_64 0:1.10.2-1.el6 will be インストール
--> 依存性の処理をしています: gd のパッケージ: nginx-mod-http-image-filter-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: libgd.so.2()(64bit) のパッケージ: nginx-mod-http-image-filter-1.10.2-1.el6.x86_64
---> Package nginx-mod-http-perl.x86_64 0:1.10.2-1.el6 will be インストール
---> Package nginx-mod-http-xslt-filter.x86_64 0:1.10.2-1.el6 will be インストール
--> 依存性の処理をしています: libxslt.so.1(LIBXML2_1.0.18)(64bit) のパッケージ: nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: libxslt.so.1(LIBXML2_1.0.11)(64bit) のパッケージ: nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: libxslt.so.1()(64bit) のパッケージ: nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64
--> 依存性の処理をしています: libexslt.so.0()(64bit) のパッケージ: nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64
---> Package nginx-mod-mail.x86_64 0:1.10.2-1.el6 will be インストール
---> Package nginx-mod-stream.x86_64 0:1.10.2-1.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package GeoIP.x86_64 0:1.6.5-1.el6 will be インストール
--> 依存性の処理をしています: geoipupdate のパッケージ: GeoIP-1.6.5-1.el6.x86_64
--> 依存性の処理をしています: GeoIP-data のパッケージ: GeoIP-1.6.5-1.el6.x86_64
---> Package gd.x86_64 0:2.0.35-11.el6 will be インストール
--> 依存性の処理をしています: libXpm.so.4()(64bit) のパッケージ: gd-2.0.35-11.el6.x86_64
---> Package libxslt.x86_64 0:1.1.26-2.el6_3.1 will be インストール
--> トランザクションの確認を実行しています。
---> Package GeoIP-GeoLite-data.noarch 0:2017.01-1.el6 will be インストール
--> 依存性の処理をしています: GeoIP-GeoLite-data-extra = 2017.01-1.el6 のパッケージ: GeoIP-GeoLite-data-2017.01-1.el6.noarch
---> Package geoipupdate.x86_64 0:2.2.1-2.el6 will be インストール
---> Package libXpm.x86_64 0:3.5.10-2.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package GeoIP-GeoLite-data-extra.noarch 0:2017.01-1.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 パッケージ                      アーキテクチャ
                                            バージョン           リポジトリー
                                                                           容量
================================================================================
インストールしています:
 nginx                           x86_64     1.10.2-1.el6         epel     462 k
依存性関連でのインストールをします。:
 GeoIP                           x86_64     1.6.5-1.el6          epel     113 k
 GeoIP-GeoLite-data              noarch     2017.01-1.el6        epel     468 k
 GeoIP-GeoLite-data-extra        noarch     2017.01-1.el6        epel      23 M
 gd                              x86_64     2.0.35-11.el6        base     142 k
 geoipupdate                     x86_64     2.2.1-2.el6          epel      28 k
 libXpm                          x86_64     3.5.10-2.el6         base      51 k
 libxslt                         x86_64     1.1.26-2.el6_3.1     base     452 k
 nginx-all-modules               noarch     1.10.2-1.el6         epel     7.7 k
 nginx-filesystem                noarch     1.10.2-1.el6         epel     8.5 k
 nginx-mod-http-geoip            x86_64     1.10.2-1.el6         epel      14 k
 nginx-mod-http-image-filter     x86_64     1.10.2-1.el6         epel      16 k
 nginx-mod-http-perl             x86_64     1.10.2-1.el6         epel      26 k
 nginx-mod-http-xslt-filter      x86_64     1.10.2-1.el6         epel      16 k
 nginx-mod-mail                  x86_64     1.10.2-1.el6         epel      43 k
 nginx-mod-stream                x86_64     1.10.2-1.el6         epel      36 k

トランザクションの要約
================================================================================
インストール        16 パッケージ

総ダウンロード容量: 25 M
インストール済み容量: 51 M
これでいいですか? [y/N]Y
パッケージをダウンロードしています:
(1/16): GeoIP-1.6.5-1.el6.x86_64.rpm                     | 113 kB     00:00     
(2/16): GeoIP-GeoLite-data-2017.01-1.el6.noarch.rpm      | 468 kB     00:00     
(3/16): GeoIP-GeoLite-data-extra-2017.01-1.el6.noarch.rp |  23 MB     00:02     
(4/16): gd-2.0.35-11.el6.x86_64.rpm                      | 142 kB     00:00     
(5/16): geoipupdate-2.2.1-2.el6.x86_64.rpm               |  28 kB     00:00     
(6/16): libXpm-3.5.10-2.el6.x86_64.rpm                   |  51 kB     00:00     
(7/16): libxslt-1.1.26-2.el6_3.1.x86_64.rpm              | 452 kB     00:00     
(8/16): nginx-1.10.2-1.el6.x86_64.rpm                    | 462 kB     00:00     
(9/16): nginx-all-modules-1.10.2-1.el6.noarch.rpm        | 7.7 kB     00:00     
(10/16): nginx-filesystem-1.10.2-1.el6.noarch.rpm        | 8.5 kB     00:00     
(11/16): nginx-mod-http-geoip-1.10.2-1.el6.x86_64.rpm    |  14 kB     00:00     
(12/16): nginx-mod-http-image-filter-1.10.2-1.el6.x86_64 |  16 kB     00:00     
(13/16): nginx-mod-http-perl-1.10.2-1.el6.x86_64.rpm     |  26 kB     00:00     
(14/16): nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64. |  16 kB     00:00     
(15/16): nginx-mod-mail-1.10.2-1.el6.x86_64.rpm          |  43 kB     00:00     
(16/16): nginx-mod-stream-1.10.2-1.el6.x86_64.rpm        |  36 kB     00:00     
--------------------------------------------------------------------------------
合計                                            9.5 MB/s |  25 MB     00:02     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : GeoIP-GeoLite-data-extra-2017.01-1.el6.noar    1/16 
  インストールしています  : GeoIP-GeoLite-data-2017.01-1.el6.noarch        2/16 
  インストールしています  : nginx-filesystem-1.10.2-1.el6.noarch           3/16 
  インストールしています  : libxslt-1.1.26-2.el6_3.1.x86_64                4/16 
  インストールしています  : geoipupdate-2.2.1-2.el6.x86_64                 5/16 
  インストールしています  : GeoIP-1.6.5-1.el6.x86_64                       6/16 
  インストールしています  : libXpm-3.5.10-2.el6.x86_64                     7/16 
  インストールしています  : gd-2.0.35-11.el6.x86_64                        8/16 
  インストールしています  : nginx-mod-http-geoip-1.10.2-1.el6.x86_64       9/16 
  インストールしています  : nginx-mod-stream-1.10.2-1.el6.x86_64          10/16 
  インストールしています  : nginx-mod-http-perl-1.10.2-1.el6.x86_64       11/16 
  インストールしています  : nginx-mod-http-image-filter-1.10.2-1.el6.x8   12/16 
  インストールしています  : nginx-mod-http-xslt-filter-1.10.2-1.el6.x86   13/16 
  インストールしています  : nginx-1.10.2-1.el6.x86_64                     14/16 
  インストールしています  : nginx-mod-mail-1.10.2-1.el6.x86_64            15/16 
  インストールしています  : nginx-all-modules-1.10.2-1.el6.noarch         16/16 
  Verifying               : nginx-mod-mail-1.10.2-1.el6.x86_64             1/16 
  Verifying               : GeoIP-1.6.5-1.el6.x86_64                       2/16 
  Verifying               : nginx-mod-http-geoip-1.10.2-1.el6.x86_64       3/16 
  Verifying               : libXpm-3.5.10-2.el6.x86_64                     4/16 
  Verifying               : nginx-mod-stream-1.10.2-1.el6.x86_64           5/16 
  Verifying               : nginx-all-modules-1.10.2-1.el6.noarch          6/16 
  Verifying               : GeoIP-GeoLite-data-2017.01-1.el6.noarch        7/16 
  Verifying               : nginx-mod-http-perl-1.10.2-1.el6.x86_64        8/16 
  Verifying               : nginx-mod-http-image-filter-1.10.2-1.el6.x8    9/16 
  Verifying               : nginx-1.10.2-1.el6.x86_64                     10/16 
  Verifying               : geoipupdate-2.2.1-2.el6.x86_64                11/16 
  Verifying               : GeoIP-GeoLite-data-extra-2017.01-1.el6.noar   12/16 
  Verifying               : libxslt-1.1.26-2.el6_3.1.x86_64               13/16 
  Verifying               : nginx-filesystem-1.10.2-1.el6.noarch          14/16 
  Verifying               : gd-2.0.35-11.el6.x86_64                       15/16 
  Verifying               : nginx-mod-http-xslt-filter-1.10.2-1.el6.x86   16/16 

インストール:
  nginx.x86_64 0:1.10.2-1.el6                                                   

依存性関連をインストールしました:
  GeoIP.x86_64 0:1.6.5-1.el6                                                    
  GeoIP-GeoLite-data.noarch 0:2017.01-1.el6                                     
  GeoIP-GeoLite-data-extra.noarch 0:2017.01-1.el6                               
  gd.x86_64 0:2.0.35-11.el6                                                     
  geoipupdate.x86_64 0:2.2.1-2.el6                                              
  libXpm.x86_64 0:3.5.10-2.el6                                                  
  libxslt.x86_64 0:1.1.26-2.el6_3.1                                             
  nginx-all-modules.noarch 0:1.10.2-1.el6                                       
  nginx-filesystem.noarch 0:1.10.2-1.el6                                        
  nginx-mod-http-geoip.x86_64 0:1.10.2-1.el6                                    
  nginx-mod-http-image-filter.x86_64 0:1.10.2-1.el6                             
  nginx-mod-http-perl.x86_64 0:1.10.2-1.el6                                     
  nginx-mod-http-xslt-filter.x86_64 0:1.10.2-1.el6                              
  nginx-mod-mail.x86_64 0:1.10.2-1.el6                                          
  nginx-mod-stream.x86_64 0:1.10.2-1.el6                                        

完了しました!

終わったら起動。ついでに、サーバ起動時に自動起動するように設定。

[takatoh@tk2-254-36564 ~]$ sudo service nginx start
Starting nginx:                                            [  OK  ]
[takatoh@tk2-254-36564 ~]$ sudo chkconfig nginx on
[takatoh@tk2-254-36564 ~]$ sudo chkconfig --list nginx
nginx          	0:off	1:off	2:on	3:on	4:on	5:on	6:off

これでブラウザでアクセスできれば OK ……って、できないな。あ、ファイアウォールか。
/etc/sysconfig/iptables の ssh の次に1行追加。

[takatoh@tk2-254-36564 ~]$ sudo service iptables restart

今度はブラウザからもアクセスできた。

さくらのVPSプラン乗り換え計画(6)

MySQL をインストール。

[takatoh@tk2-254-36564 ~]$ sudo yum install mysql-server
[sudo] password for takatoh: 
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package mysql-server.x86_64 0:5.1.73-8.el6_8 will be インストール
--> 依存性の処理をしています: mysql = 5.1.73-8.el6_8 のパッケージ: mysql-server-5.1.73-8.el6_8.x86_64
--> 依存性の処理をしています: perl-DBI のパッケージ: mysql-server-5.1.73-8.el6_8.x86_64
--> 依存性の処理をしています: perl-DBD-MySQL のパッケージ: mysql-server-5.1.73-8.el6_8.x86_64
--> 依存性の処理をしています: perl(DBI) のパッケージ: mysql-server-5.1.73-8.el6_8.x86_64
--> トランザクションの確認を実行しています。
---> Package mysql.x86_64 0:5.1.73-8.el6_8 will be インストール
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 will be インストール
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 パッケージ            アーキテクチャ
                                     バージョン               リポジトリー
                                                                           容量
================================================================================
インストールしています:
 mysql-server          x86_64        5.1.73-8.el6_8           base        8.6 M
依存性関連でのインストールをします。:
 mysql                 x86_64        5.1.73-8.el6_8           base        895 k
 perl-DBD-MySQL        x86_64        4.013-3.el6              base        134 k
 perl-DBI              x86_64        1.609-4.el6              base        705 k

トランザクションの要約
================================================================================
インストール         4 パッケージ

総ダウンロード容量: 10 M
インストール済み容量: 29 M
これでいいですか? [y/N]Y
パッケージをダウンロードしています:
(1/4): mysql-5.1.73-8.el6_8.x86_64.rpm                   | 895 kB     00:00     
(2/4): mysql-server-5.1.73-8.el6_8.x86_64.rpm            | 8.6 MB     00:00     
(3/4): perl-DBD-MySQL-4.013-3.el6.x86_64.rpm             | 134 kB     00:00     
(4/4): perl-DBI-1.609-4.el6.x86_64.rpm                   | 705 kB     00:00     
--------------------------------------------------------------------------------
合計                                            8.1 MB/s |  10 MB     00:01     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : perl-DBI-1.609-4.el6.x86_64                     1/4 
  インストールしています  : perl-DBD-MySQL-4.013-3.el6.x86_64               2/4 
  インストールしています  : mysql-5.1.73-8.el6_8.x86_64                     3/4 
  インストールしています  : mysql-server-5.1.73-8.el6_8.x86_64              4/4 
  Verifying               : perl-DBD-MySQL-4.013-3.el6.x86_64               1/4 
  Verifying               : mysql-server-5.1.73-8.el6_8.x86_64              2/4 
  Verifying               : mysql-5.1.73-8.el6_8.x86_64                     3/4 
  Verifying               : perl-DBI-1.609-4.el6.x86_64                     4/4 

インストール:
  mysql-server.x86_64 0:5.1.73-8.el6_8                                          

依存性関連をインストールしました:
  mysql.x86_64 0:5.1.73-8.el6_8       perl-DBD-MySQL.x86_64 0:4.013-3.el6      
  perl-DBI.x86_64 0:1.609-4.el6      

完了しました!

設定ファイルは /etc/my.cnf。バックアップをとってから編集。

[takatoh@tk2-254-36564 ~]$ sudo cp /etc/my.cnf /etc/my.cnf.orig
[takatoh@tk2-254-36564 ~]$ sudo vi /etc/my.cnf

つぎのようにした。色を付けたところが追加したところ。

これで起動。

[takatoh@tk2-254-36564 ~]$ sudo service mysqld start
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h tk2-254-36564.vs.sakura.ne.jp password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

おお、大丈夫みたいだ。

mysql コマンドで確かめてみる。

[takatoh@tk2-254-36564 ~]$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

mysql_secure_installation を実行する。

[takatoh@tk2-254-36564 ~]$ sudo mysql_secure_installation

途中で root のパスワードを訊かれるので入力する。その他はエンターを叩けば OK。
試してみよう。

[takatoh@tk2-254-36564 ~]$ mysql
ERROR 1045 (28000): Access denied for user 'takatoh'@'localhost' (using password: NO)
[takatoh@tk2-254-36564 ~]$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

ユーザーとパスワードを入力しなければならなくなった。これでよし。

さくらのVPSプラン乗り換え計画(5)

Ubuntu はやめて CentOS6 でやってみることにした。こっちは「標準OSインストール」でインストールしてもちゃんとログインできる。
ssh でログインしたら、まずは yum update

[root@tk2-254-36564 ~]# yum update
読み込んだプラグイン:fastestmirror, security
更新処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
更新と設定されたパッケージがありません。

特に必要なかったみたいだ。

作業用のユーザーの作成。

[root@tk2-254-36564 ~]# useradd takatoh
[root@tk2-254-36564 ~]# passwd takatoh
ユーザー takatoh のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@tk2-254-36564 ~]# usermod -G wheel takatoh

wheel グループに sudo する権利をつける。visudo コマンドで開いたファイルの次の行をアンコメントする。

いったんログアウトして、新しく作ったユーザーでログイン。

takatoh@envelopes $ ssh takatoh@160.16.224.68
takatoh@160.16.224.68's password: 

SAKURA Internet [Virtual Private Server SERVICE]

パスワード認証をやめて、公開鍵での認証に切り替える。公開鍵を配置。

[takatoh@tk2-254-36564 ~]$ mkdir .ssh
[takatoh@tk2-254-36564 ~]$ chmod 700 .ssh
[takatoh@tk2-254-36564 ~]$ cd .ssh
[takatoh@tk2-254-36564 .ssh]$ wget -O authorized_keys https://github.com/takatoh.keys
--2017-05-04 16:29:25--  https://github.com/takatoh.keys
github.com をDNSに問いあわせています... 192.30.255.113, 192.30.255.112
github.com|192.30.255.113|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/plain]
authorized_keys' に保存中

    [ <=>                                   ] 381         --.-K/s 時間 0.003s  

2017-05-04 16:29:26 (136 KB/s) - authorized_keys' へ保存終了 [381]

[takatoh@tk2-254-36564 .ssh]$ chmod 600 authorized_keys
[takatoh@tk2-254-36564 .ssh]$ ls -al
合計 12
drwx------ 2 takatoh takatoh 4096  5月  4 16:29 2017 .
drwx------ 3 takatoh takatoh 4096  5月  4 16:28 2017 ..
-rw------- 1 takatoh takatoh  381  5月  4 16:29 2017 authorized_keys

もう一度ログアウトして、公開鍵認証ができるか試してみる。

[takatoh@tk2-254-36564 .ssh]$ exit
logout
Connection to 160.16.224.68 closed.
takatoh@envelopes $ ssh takatoh@160.16.224.68
Last login: Thu May  4 16:27:31 2017 from fntsitm001026.sitm.fnt.ngn.ppp.infoweb.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

大丈夫みたいだ。

それじゃつぎは ssh の設定。編集するのは /etc/ssh/sshd_config ファイルの3箇所。

それぞれ、ポートの変更、パスワード認証の禁止、root でのログイン禁止。
設定を反映するために sshd をリスタート。

[takatoh@tk2-254-36564 ~]$ sudo service sshd restart
[sudo] password for takatoh: 
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

そしてファイアウォールの設定。/etc/sysconfig/iptables ファイルをつぎのように編集。

4,5 行目は ACCEPT を DROP に変更、10行目はポート番号を変更。で、これを反映。

[takatoh@tk2-254-36564 ~]$ sudo service iptables start

再びログアウトして、ちゃんと新しいポートでログインできるか試してみる。

takatoh@envelopes $ ssh -p 60000 takatoh@160.16.224.68
Last login: Thu May  4 17:00:05 2017 from fntsitm001026.sitm.fnt.ngn.ppp.infoweb.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

OK。ここでいったん休憩。

さくらのVPSプラン乗り換え計画(4)

MySQL のインストール。

takatoh@tk2-254-36564:~$ sudo apt install mysql-server

途中で root のパスワードを訊かれるので入力(2回)。
バージョンの確認。

takatoh@tk2-254-36564:~$ mysql --version
mysql  Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using  EditLine wrapper

設定ファイルは /etc/mysql/my.cnf。

takatoh@tk2-254-36564:~$ cd /etc/mysql
takatoh@tk2-254-36564:/etc/mysql$ cat my.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

…と思ったら、何やら追加の設定は別のファイルに書くらしい。/etc/mysql/conf.d と /etc/mysql/mysql.conf.d の下に .cnf ファイルを置けば読み込んでくれるってことでいいのかな。2つのディレクトリの下にはファイルが用意されている。

takatoh@tk2-254-36564:/etc/mysql$ ls conf.d
mysql.cnf  mysqldump.cnf
takatoh@tk2-254-36564:/etc/mysql$ ls mysql.conf.d
mysqld.cnf  mysqld_safe_syslog.cnf

日本語を扱えるようにデフォルトの charset を utf-8 にするため、それぞれのファイルに次のように設定してみた(色を付けたところが追記したところ)。

これでいいはず。
MySQL を再起動してみよう。

takatoh@tk2-254-36564:/etc/mysql$ sudo systemctl restart mysqld
Failed to restart mysqld.service: Unit mysqld.service not found.

あれ?だめだ。Unit ファイルがないってか?

takatoh@tk2-254-36564:/etc/mysql$ sudo /etc/init.d/mysql restart
[....] Restarting mysql (via systemctl): mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
 failed!

/etc/init.d/mysql を直接叩いてもダメだ。メッセージに従って詳細を見てみよう。

takatoh@tk2-254-36564:/etc/mysql$ systemctl status mysql.service
* mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (start-post) (Result: exit-code) since Thu 2017-05-04 12:59:31 JST; 21s ago
  Process: 8060 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 8051 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 8060 (code=exited, status=1/FAILURE);         : 8061 (mysql-systemd-s)
   CGroup: /system.slice/mysql.service
           -control
             |-8061 /bin/bash /usr/share/mysql/mysql-systemd-start post
             -8125 sleep 1

May 04 12:59:01 tk2-254-36564 systemd[1]: Starting MySQL Community Server...
May 04 12:59:04 tk2-254-36564 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE

なんかエラー?

takatoh@tk2-254-36564:/etc/mysql$ journalctl -xe

こちらの出力は長くて載せられないけど、やっぱりエラーになってるらしい。
mysql.servece ファイルが無いとの事なので調べげ見ると、/etc/systemd/system にはないけど、/lib/systemd/system にはあることがわかった。てことは、リンクを張ればいいのかな。

takatoh@tk2-254-36564:/etc/mysql$ cd
takatoh@tk2-254-36564:~$ sudo ln -s /lib/systemd/system/mysql.service /etc/systemd/system/mysql.service
takatoh@tk2-254-36564:~$ ls -l /etc/systemd/system
total 32
drwxr-xr-x 2 root root 4096 May  4 10:01 default.target.wants
drwxr-xr-x 2 root root 4096 May  4 10:00 getty.target.wants
drwxr-xr-x 2 root root 4096 May  4 10:20 graphical.target.wants
drwxr-xr-x 2 root root 4096 May  4 11:47 multi-user.target.wants
lrwxrwxrwx 1 root root   33 May  4 13:08 mysql.service -> /lib/systemd/system/mysql.service
drwxr-xr-x 2 root root 4096 May  4 10:01 network-online.target.wants
drwxr-xr-x 2 root root 4096 May  4 10:22 sockets.target.wants
lrwxrwxrwx 1 root root   31 May  4 10:23 sshd.service -> /lib/systemd/system/ssh.service
drwxr-xr-x 2 root root 4096 May  4 10:23 sysinit.target.wants
lrwxrwxrwx 1 root root   35 May  4 10:01 syslog.service -> /lib/systemd/system/rsyslog.service
drwxr-xr-x 2 root root 4096 May  4 10:01 timers.target.wants

これでどうだ。

takatoh@tk2-254-36564:~$ sudo systemctl restart mysql
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

だめか。
Unit ファイルのなかを覗いてみる。

うん、わからん。
PermissionsStartOnly=true って行が気になる。start だけってことなのかな。サーバ自体を再起動してみるか。

うーん、再起動してもダメだなあ。
とりあえずここまでにしよう。後で追記する。

[追記]

いったん MySQL サーバをアンインストールして、再インストールしたらどうかと思ってやってみたら、今度はインストールすらエラーが出るようになってしまった。
こりゃダメか。最初からやり直しだな。

さくらのVPSプラン乗り換え計画(3)

Ruby と Git をインストール。
まず Ruby。

takatoh@tk2-254-36564:~$ sudo apt install ruby ruby-dev
takatoh@tk2-254-36564:~$ ruby -v
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

bundler が入っていないのでインストール。

takatoh@tk2-254-36564:~$ sudo gem install bundler

つぎは Git。

takatoh@tk2-254-36564:~$ sudo apt install git
takatoh@tk2-254-36564:~$ git --version
git version 2.7.4

さくらのVPSプラン乗り換え計画(1)

タイトルの通り、プランの乗り換えにチャレンジ。

VPS の OS は標準の CentOS じゃなくて、使い慣れた Ubuntu にしたかったので、OS の再インストールをした。ところが、用意されている「標準OS」の Ubuntu 16.04 をインストールしてみたけど、ログインができない。パスワードを間違えたのかと思って何度かやり直し(インストール自体のやり直しも含めて)やってみたけどダメ。CentoOS6 をインストールすると何故か大丈夫。なんでだ?
仕方がないので「カスタムOS」の Ubuntu 16.04 をインストールしたら(インストールに時間はかかったけど)無事、ログインに成功した。ユーザー名は takatoh。

VPS のページから、コンソールを選んでサーバに接続する。
まずは ssh の設定。/etc/ssh/sshd_config ファイルを編集する。

$ sudo vi /etc/ssh/sshd_config

ポートを変更。

root でのログインを禁止。

設定を反映するために sshd を再起動。

$ sudo systemctl restart sshd

次にファイアウォールの設定。

$ sudo ufw enable
$ sudo ufw default DENY
$ sudo ufw allow 60000

これで、ローカルの PC から ssh でアクセスできるようになったはず。試してみよう。

takatoh@envelopes $ ssh -p 60000 takatoh@160.16.224.68
takatoh@160.16.224.68's password: 
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-77-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Thu May  4 10:48:04 2017
takatoh@tk2-254-36564:~$

OK。
それじゃこんどはパスワード認証をやめて、公開鍵での認証に切り替える。

takatoh@tk2-254-36564:~$ pwd
/home/takatoh
takatoh@tk2-254-36564:~$ mkdir .ssh
takatoh@tk2-254-36564:~$ chmod 700 .ssh
takatoh@tk2-254-36564:~$ cd .ssh
takatoh@tk2-254-36564:~/.ssh$ wget -O authorized_keys https://github.com/takatoh.keys
--2017-05-04 11:08:43--  https://github.com/takatoh.keys
Resolving github.com (github.com)... 192.30.255.113, 192.30.255.112
Connecting to github.com (github.com)|192.30.255.113|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: 'authorized_keys'

authorized_keys         [ <=>                ]     381  --.-KB/s    in 0.001s  

2017-05-04 11:08:43 (309 KB/s) - 'authorized_keys' saved [381]

takatoh@tk2-254-36564:~/.ssh$ ls -al
total 12
drwx------ 2 takatoh takatoh 4096 May  4 11:08 .
drwxr-xr-x 4 takatoh takatoh 4096 May  4 11:08 ..
-rw-rw-r-- 1 takatoh takatoh  381 May  4 11:08 authorized_keys
takatoh@tk2-254-36564:~/.ssh$ chmod 600 authorized_keys
takatoh@tk2-254-36564:~/.ssh$ ls -al
total 12
drwx------ 2 takatoh takatoh 4096 May  4 11:08 .
drwxr-xr-x 4 takatoh takatoh 4096 May  4 11:08 ..
-rw------- 1 takatoh takatoh  381 May  4 11:08 authorized_keys

ここでいったんログアウトして、鍵認証でログインできるか試してみる。

takatoh@envelopes $ ssh -p 60000 takatoh@160.16.224.68
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-77-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Thu May  4 11:05:11 2017 from 58.1.225.90

OK。それじゃもう一度 /etc/ssh/sshd_config を編集して、パスワード認証をしないことにする。

sshd の再起動。

takatoh@tk2-254-36564:~$ sudo systemctl restart sshd

とりあえずここまで。

Rails 4.2.8にしたら外部からアクセスできなくなった

Rails を 4.1.4 から 4.2.8(4.2 系の最新版)にアップデートしたら、rails s で起動したサーバに外部(ほかの PC)からアクセスできなくなっていた。4.2 で挙動が変わったらしい。

 cf. rails sで起動したサーバにブラウザからアクセスできない – Qiita

上の参考ページにあるように、-b オプションをつければいい。

takatoh@envelopes $ bundle exec rails s -b 0.0.0.0

Elixir 練習問題 ControlFlow-3

こんな感じでいいかな。

^o^ > elixir practice_12_3.exs
warning: variable file is unused
  practice_12_3.exs:6

** (RuntimeError) Error occured.
    practice_12_3.exs:3: OK.ok!/1
    (elixir) lib/code.ex:363: Code.require_file/2

ちなみに、somefile の代わりに存在するファイルで試してみると次のようになる。

^o^ > elixir practice_12_3.exs
warning: variable file is unused
  practice_12_3.exs:6

エラーは起きない。警告が出てるのは file 変数を使ってないからだね。

Elixir 練習問題 ControlFlow-1

気が付けば前回の Elixir のエントリからひと月も経ってしまった。
ま、気を取り直して。FizzBuzz を case を使って書け、と。

^o^ > elixir practice_12_1.exs
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz