カテゴリー: Server

Conohaのサーバーを借りて、CentOS+MySQL+nginxの環境を作ってみた。

はじめに

こんにちは。

最近、個人的にConohaサーバーを借りてみました。
折角なので勉強用サーバーにしようと思い、環境を作ってみました。

はじめてであったため、色々不足している設定などもあるかと思いますが、その場合は指摘していただけると嬉しいです。
今回はRailsを入れる前の、nginx、MySQLのインストールまで記載したいと思います。

また、本ブログでは既に「WordPressのサーバー移設とnginxで無料SSLをやってみた」を公開しております。
こちらと似た内容もございますので、合わせてご覧ください。

環境

  • CentOSはConohaで用意されている7.3
  • nginx、MySQLは最新版をインストール(後述します。)

Conohaでサーバーをレンタル

https://www.conoha.jp/

こちらでサーバーをレンタルします。
このとき、OSのイメージも選択できるので、CentOS 7.3を選択しました。

また、秘密鍵も設定できるようですが、このときには作成しませんでした。

サーバーの初期設定

サーバーにrootユーザーでログイン

まずは最初から用意されている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

SSHログインを許可

$ 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

rootユーザーからのログインを禁止する

hogeユーザーでログインできることを確認できたら、rootユーザーを禁止しておきます。

$ sudo vi /etc/ssh/sshd_config

# 以下の部分を変更する
PermitRootLogin no
PasswordAuthentication no

再起動します。

$ sudo service sshd restart

SSHのポート番号を変更

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番ポートからのログインができなくなりました。

iptablesの自動起動

$ 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

[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のデフォルトページが表示されるかと思います。

MySQLのインストール

インストール

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

MySQLの初期設定

MySQL5.7ではrootユーザーには初期パスワードが設定されます。
ファイルは`/var/log/mysqld.log`になります。
そこで、`[Note] A temporary password is generated for root@localhost`というメッセージを探して控えておきます。

mysql_secure_installationコマンドで初期設定をします。

$ mysql_secure_installation

このコマンドを実行すると、以下の内容を聞かれます。
(詳細は割愛します。)

  • root ユーザーのパスワードの変更
  • VALIDATE PASSWORDプラグインのインストール(y)
  • VALIDATE PASSWORDのポリシーに沿ったroot ユーザーパスワードの設定(8文字以上で、数字、特殊文字が入っていると良いようです。)
  • anonymous ユーザーの削除(y)
  • リモートホストからrootユーザーでログインするのを禁止する(y)
  • testデータベースの削除 (y)

設定ファイルも修正しておきます。

[mysqld]

# 省略

character-set-server = utf8
default_password_lifetime = 0

再起動してログインの確認もしておきます。

$ systemctl restart mysqld.service

$ mysql -u root -p

さいごに

今回は、nginxとMySQLをインストールするところまで記載しました。
本当は、Railsの勉強用にしたいので、次回はRubyやRailsのインストールも記載したいと思います。

naoki85

シェア
執筆者:
naoki85
タグ: CentOS

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

2週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

4週間 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前