はじめに
こんにちは。
最近、個人的にConohaサーバーを借りてみました。
折角なので勉強用サーバーにしようと思い、環境を作ってみました。
はじめてであったため、色々不足している設定などもあるかと思いますが、その場合は指摘していただけると嬉しいです。
今回はRailsを入れる前の、nginx、MySQLのインストールまで記載したいと思います。
また、本ブログでは既に「WordPressのサーバー移設とnginxで無料SSLをやってみた」を公開しております。
こちらと似た内容もございますので、合わせてご覧ください。
環境
- CentOSはConohaで用意されている7.3
- nginx、MySQLは最新版をインストール(後述します。)
Conohaでサーバーをレンタル
こちらでサーバーをレンタルします。
このとき、OSのイメージも選択できるので、CentOS 7.3を選択しました。
また、秘密鍵も設定できるようですが、このときには作成しませんでした。
サーバーの初期設定
サーバーにrootユーザーでログイン
まずは最初から用意されているrootユーザーを使って設定をしていきます。
sshコマンドを使用してサーバーにログインしますが、ここでは対象サーバーのIPアドレスを「111.222.333.444」とします。
1 2 3 4 5 | $ ssh root@111.222.333.444 -p 22 root@111.222.333.444's password: # パスワード入力 # ログイン成功! [root@1xxx.yyy.zzz.aaa ~]# |
ユーザー作成
rootユーザー以外のユーザーを用意したいので、「hoge」という名前のユーザーを作成します。
1 2 3 4 5 6 7 8 | # ユーザー作成 $ adduser hoge # パスワード設定 $ passwd hoge # wheelグループに追加 $ gpasswd -a hoge wheel |
また、visudoをしてwheelグループでsudo使用時の設定を確認します。
今回は面倒なので、sudo時にパスワードを尋ねないようにします。
1 2 3 4 5 6 7 8 | $ 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」ユーザーに変更しておきます。
1 | $ su hoge |
SSHログインを許可
1 2 3 4 5 6 | $ sudo vi /etc/ssh/sshd_config # 以下の部分を変更する RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys |
サーバーを再起動します。
1 | $ sudo service sshd restart |
秘密鍵を生成
それでは鍵を作ります。
作成するファイル名などを聞かれますが、全て「conoha」とします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # ~/.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 |
ローカルに秘密鍵をコピー
まずは、生成した秘密鍵をコピーします。
1 | $ cat conoha |
ここで1度ログアウトして、ローカルPCに戻ります。
1 2 3 4 | $ cd ~/.ssh # 先ほどコピーした秘密鍵を貼り付ける $ vi conoha $ chmod 600 conoha |
また、あらかじめ
ssh_config
に記載しておけば後々ログインが楽になります。
1 2 3 4 5 | Host conoha HostName 111.222.333.444 User tonny Port 22 IdentityFile ~/.ssh/conoha |
ログインできるかテストしてみます。
1 | $ ssh conoha |
rootユーザーからのログインを禁止する
hogeユーザーでログインできることを確認できたら、rootユーザーを禁止しておきます。
1 2 3 4 5 | $ sudo vi /etc/ssh/sshd_config # 以下の部分を変更する PermitRootLogin no PasswordAuthentication no |
再起動します。
1 | $ sudo service sshd restart |
SSHのポート番号を変更
CentOS7にはデフォルトでiptablesが入っていないようなので、インストールします。
1 | $ sudo yum install iptables-services |
1 2 | - -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を再起動します。
1 | $ sudo service iptables restart |
ポート番号を変更したことに伴い、
sshd_config
を修正します。
1 2 3 4 | $ sudo vi /etc/ssh/sshd_config # 以下を修正 Port 10022 |
1 | $ sudo service sshd restart |
ローカルの
ssh_config
も修正しておきます。
1 2 3 4 5 6 | Host conoha HostName 111.222.333.444 User hoge - Port 22 + Port 10022 IdentityFile ~/.ssh/conoha |
これで22番ポートからのログインができなくなりました。
iptablesの自動起動
1 2 3 | $ sudo systemctl stop firewalld.service $ sudo systemctl mask firewalld.service $ sudo systemctl enable iptables.service |
nginxのインストール
設定ファイルを編集
yumでインストールしたいのですが、CentOS 7用のリポジトリを登録しておきます。
https://www.nginx.com/resources/wiki/start/topics/tutorials/install/?highlight=centos
1 2 3 4 5 | [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 |
インストール
あとはyumでインストールしますが、
enablerepo
オプションを使用することで、設定ファイルを読み込みます。
1 | $ sudo yum -y --enablerepo=nginx install nginx |
インストールが完了したら、バージョンも確認しておきます。
そして、nginxを起動します。
1 2 3 4 | $ nginx -v nginx version: nginx/1.10.3 $ sudo systemctl start nginx.service |
111.222.333.444:80
にアクセスすると、nginxのデフォルトページが表示されるかと思います。
MySQLのインストール
インストール
CentOS7にはMariaDBがデフォルトでインストールされているので、そちらを削除します。
1 2 | $ yum remove mariadb-libs $ rm -rf /var/lib/mysql/ |
MySQLのyumリポジトリを登録します。
https://dev.mysql.com/downloads/repo/yum/
1 | # yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm |
mysql-community-serverという名前のパッケージでインストールします。
1 | # yum -y install mysql-community-server |
インストールが完了したらバージョン情報も確認しておきます。
また、起動もさせておきます。
1 2 3 4 5 6 7 | $ 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 |
MySQLの初期設定
MySQL5.7ではrootユーザーには初期パスワードが設定されます。
ファイルは
/var/log/mysqld.log
になります。
そこで、
[Note] A temporary password is generated for root@localhost
というメッセージを探して控えておきます。
mysql_secure_installationコマンドで初期設定をします。
1 | $ mysql_secure_installation |
このコマンドを実行すると、以下の内容を聞かれます。
(詳細は割愛します。)
- root ユーザーのパスワードの変更
- VALIDATE PASSWORDプラグインのインストール(y)
- VALIDATE PASSWORDのポリシーに沿ったroot ユーザーパスワードの設定(8文字以上で、数字、特殊文字が入っていると良いようです。)
- anonymous ユーザーの削除(y)
- リモートホストからrootユーザーでログインするのを禁止する(y)
- testデータベースの削除 (y)
設定ファイルも修正しておきます。
1 2 3 4 5 6 | [mysqld] # 省略 character-set-server = utf8 default_password_lifetime = 0 |
再起動してログインの確認もしておきます。
1 2 3 | $ systemctl restart mysqld.service $ mysql -u root -p |
さいごに
今回は、nginxとMySQLをインストールするところまで記載しました。
本当は、Railsの勉強用にしたいので、次回はRubyやRailsのインストールも記載したいと思います。