はじめに
こんにちは。
最近、個人的に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-p22 root@111.222.333.444'spassword:# パスワード入力 # ログイン成功! [root@1xxx.yyy.zzz.aaa~]# |
ユーザー作成
rootユーザー以外のユーザーを用意したいので、「hoge」という名前のユーザーを作成します。
1 2 3 4 5 6 7 8 | # ユーザー作成 $adduser hoge # パスワード設定 $passwd hoge # wheelグループに追加 $gpasswd-ahoge 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に設定 $chmod700.ssh # 鍵を作成 $cd~/.ssh $ssh-keygen-trsa-b2048 Enter fileinwhich tosave the key:conoha Enter passphrase: Enter same passphrase again: # 公開鍵をAuthorizedKeysFileで設定したファイル名に名前変更 $mvconoha.pubauthorized_keys # ファイルのパーミッションを600に設定 $chmod600authorized_keys |
ローカルに秘密鍵をコピー
まずは、生成した秘密鍵をコピーします。
1 | $catconoha |
ここで1度ログアウトして、ローカルPCに戻ります。
1 2 3 4 | $cd~/.ssh # 先ほどコピーした秘密鍵を貼り付ける $viconoha $chmod600conoha |
また、あらかじめssh_config
に記載しておけば後々ログインが楽になります。
1 2 3 4 5 | Host conoha HostName111.222.333.444 User tonny Port22 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 # 以下を修正 Port10022 |
1 | $sudo service sshd restart |
ローカルのssh_config
も修正しておきます。
1 2 3 4 5 6 | Host conoha HostName111.222.333.444 User hoge - Port22 + Port10022 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 Ver5.7.17forLinux 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-uroot-p |
さいごに
今回は、nginxとMySQLをインストールするところまで記載しました。
本当は、Railsの勉強用にしたいので、次回はRubyやRailsのインストールも記載したいと思います。