こんにちは。
最近、個人的にConohaサーバーを借りてみました。
折角なので勉強用サーバーにしようと思い、環境を作ってみました。
はじめてであったため、色々不足している設定などもあるかと思いますが、その場合は指摘していただけると嬉しいです。
今回はRailsを入れる前の、nginx、MySQLのインストールまで記載したいと思います。
また、本ブログでは既に「WordPressのサーバー移設とnginxで無料SSLをやってみた」を公開しております。
こちらと似た内容もございますので、合わせてご覧ください。
こちらでサーバーをレンタルします。
このとき、OSのイメージも選択できるので、CentOS 7.3を選択しました。
また、秘密鍵も設定できるようですが、このときには作成しませんでした。
まずは最初から用意されているrootユーザーを使って設定をしていきます。
sshコマンドを使用してサーバーにログインしますが、ここでは対象サーバーのIPアドレスを「111.222.333.444」とします。
$ ssh root@111.222.333.444 -p 22 root@111.222.333.444's password: # パスワード入力 # ログイン成功! [root@1xxx.yyy.zzz.aaa ~]#
rootユーザー以外のユーザーを用意したいので、「hoge」という名前のユーザーを作成します。
# ユーザー作成 $ adduser hoge # パスワード設定 $ passwd hoge # wheelグループに追加 $ gpasswd -a hoge wheel
また、visudoをしてwheelグループでsudo使用時の設定を確認します。
今回は面倒なので、sudo時にパスワードを尋ねないようにします。
$ visudo # コメントアウトされている場合は、外す ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL
「hoge」ユーザーに変更しておきます。
$ su hoge
$ sudo vi /etc/ssh/sshd_config # 以下の部分を変更する RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
サーバーを再起動します。
$ sudo service sshd restart
それでは鍵を作ります。
作成するファイル名などを聞かれますが、全て「conoha」とします。
# ~/.sshディレクトリを作成 $ cd ~/ $ mkdir .ssh # ディレクトリのパーミッションを700に設定 $ chmod 700 .ssh # 鍵を作成 $ cd ~/.ssh $ ssh-keygen -t rsa -b 2048 Enter file in which to save the key: conoha Enter passphrase: Enter same passphrase again: # 公開鍵をAuthorizedKeysFileで設定したファイル名に名前変更 $ mv conoha.pub authorized_keys # ファイルのパーミッションを600に設定 $ chmod 600 authorized_keys
まずは、生成した秘密鍵をコピーします。
$ cat conoha
ここで1度ログアウトして、ローカルPCに戻ります。
$ cd ~/.ssh # 先ほどコピーした秘密鍵を貼り付ける $ vi conoha $ chmod 600 conoha
また、あらかじめ`ssh_config`に記載しておけば後々ログインが楽になります。
Host conoha HostName 111.222.333.444 User tonny Port 22 IdentityFile ~/.ssh/conoha
ログインできるかテストしてみます。
$ ssh conoha
hogeユーザーでログインできることを確認できたら、rootユーザーを禁止しておきます。
$ sudo vi /etc/ssh/sshd_config # 以下の部分を変更する PermitRootLogin no PasswordAuthentication no
再起動します。
$ sudo service sshd restart
CentOS7にはデフォルトでiptablesが入っていないようなので、インストールします。
$ sudo yum install iptables-services
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT + -A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
ここで、iptablesを再起動します。
$ sudo service iptables restart
ポート番号を変更したことに伴い、`sshd_config`を修正します。
$ sudo vi /etc/ssh/sshd_config # 以下を修正 Port 10022
$ sudo service sshd restart
ローカルの`ssh_config`も修正しておきます。
Host conoha HostName 111.222.333.444 User hoge - Port 22 + Port 10022 IdentityFile ~/.ssh/conoha
これで22番ポートからのログインができなくなりました。
$ sudo systemctl stop firewalld.service $ sudo systemctl mask firewalld.service $ sudo systemctl enable iptables.service
yumでインストールしたいのですが、CentOS 7用のリポジトリを登録しておきます。
https://www.nginx.com/resources/wiki/start/topics/tutorials/install/?highlight=centos
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
あとはyumでインストールしますが、enablerepo
オプションを使用することで、設定ファイルを読み込みます。
$ sudo yum -y --enablerepo=nginx install nginx
インストールが完了したら、バージョンも確認しておきます。
そして、nginxを起動します。
$ nginx -v nginx version: nginx/1.10.3 $ sudo systemctl start nginx.service
`111.222.333.444:80`にアクセスすると、nginxのデフォルトページが表示されるかと思います。
CentOS7にはMariaDBがデフォルトでインストールされているので、そちらを削除します。
$ yum remove mariadb-libs $ rm -rf /var/lib/mysql/
MySQLのyumリポジトリを登録します。
https://dev.mysql.com/downloads/repo/yum/
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
mysql-community-serverという名前のパッケージでインストールします。
# yum -y install mysql-community-server
インストールが完了したらバージョン情報も確認しておきます。
また、起動もさせておきます。
$ mysqld --version mysqld Ver 5.7.17 for Linux on x86_64 (MySQL Community Server (GPL)) # サーバーが起動したらMySQLも起動させる $ systemctl enable mysqld.service # MySQLの起動 $ systemctl start mysqld.service
MySQL5.7ではrootユーザーには初期パスワードが設定されます。
ファイルは`/var/log/mysqld.log`になります。
そこで、`[Note] A temporary password is generated for root@localhost`というメッセージを探して控えておきます。
mysql_secure_installationコマンドで初期設定をします。
$ mysql_secure_installation
このコマンドを実行すると、以下の内容を聞かれます。
(詳細は割愛します。)
設定ファイルも修正しておきます。
[mysqld] # 省略 character-set-server = utf8 default_password_lifetime = 0
再起動してログインの確認もしておきます。
$ systemctl restart mysqld.service $ mysql -u root -p
今回は、nginxとMySQLをインストールするところまで記載しました。
本当は、Railsの勉強用にしたいので、次回はRubyやRailsのインストールも記載したいと思います。