2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7 で Rails4 を Nginx, MariaBD で運用するための設定

Last updated at Posted at 2016-07-23

CentOS-7-x86_64-Minimal-1511.iso をインストール

途中で root のパスワード設定と管理者ユーザ(madoka)を作成
以後、

  • # は Linux(サーバ : server.com)での root の作業

  • % は Mac(ローカル)での madoka の作業

  • $ は Linux(サーバ : server.com)での madoka の作業

とする。

Linux を最新の状態に

% ssh madoka@server
$ sudo yum -y update

user の skel の作成

% ssh madoka@server
$ sudo mkdir /etc/skel/.ssh
$ sudo chmod 700 /etc/skel/.ssh
$ sudo touch /etc/skel/.ssh/authorized_keys
$ sudo chmod 600 /etc/skel/.ssh/authorized_keys

管理者ユーザ(madoka)の設定

パスコードでログインするための準備

% scp ~/.ssh/id_rsa.pub madoka@server:~/
% ssh madoka@server
$ cat id_rsa.pub >> .ssh/authorized_keys
$ rm id_rsa.pub

madoka のシェルを変更(各自の環境(好み)に合わせて適宜修正)

% scp ~/.tcshrc madoka@server:~/
% ssh madoka@server
$ chsh
新しいシェル [/bin/bash]: /bin/tcsh
パスワード:
シェルを変更しました。

各種設定

SELinux 関係のソフトのインストール

% ssh madoka@server
$ sudo yum -y install policycoreutils-gui
$ sudo yum -y install policycoreutils-restorecond
$ sudo yum -y install star
$ sudo yum -y install selinux-policy-minimum
$ sudo yum -y install selinux-policy-mls
$ sudo yum -y install iptstate
$ sudo yum -y install firewalld
$ sudo yum -y install setools

star はセキュリティコンテキストも保存できる(tar はできない)

$ star -H=exustar -xattr -cvz -f /tmp/log.tar gz var/log/maillog*

cp では --preserve=context オプションをつける

$ cp --preserve=context /etc/passowrd .

ssh の設定

  • ポートの確認
$ sudo semanage port -l | grep ssh
  • ssh で 22 番ポート以外を使う場合
$ sudo semanage port -a -t ssh_port_t -p tcp 9022
  • ポートを削除する場合
$ sudo semanage port -d -t ssh_port_t -p tcp 9022
  • ssh での認証の修正
$ sudo vi /etc/ssh/sshd_config
PermitRootLogin no          # root でのログインは不可
PasswordAuthentication no   # password による認証は不可

時刻同期(初期段階でインストール済み)

ntpd は obsolete

  • インストールする場合
$ sudo yum -y install chrony
  • 手動で起動する場合
$ sudo systemctl start chronyd
  • 自動設定
$ sudo systemctl enable chronyd
$ systemctl list-unit-files -t service | grep chronyd
  • 動作確認
$ sudo chronyc sources

各種コマンドのインストール

$ sudo yum -y install screen wget git emacs
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum install -y openssl-devel readline-devel zlib-devel mysql-devel

open-vm-tools のインストール(server.com を VMWare で運用している場合)

VMwareTools は非推奨になった

$ sudo yum -y install open-vm-tools
$ sudo reboot
  • 動作確認
$ ps -ef | grep vmtools
$ systemctl status vmtoolsd.service

madoka ユーザの git の設定

$ git config --global user.name "Kaname Madoka"
$ git config --global user.email "madoka@mitakihara.com"
$ git config --global core.editor "emacs"
$ git config --global color.ui auto
$ git config --global core.excludesfile ~/.gitignore_global
  • 改行コードを変換するための設定

コミット時の CRLF から LF への変換はさせたいけれどもそれ以外の自動変換が不要な場合 input

$ git config --global core.autocrlf input
$ emacs ~/.gitignore_global
.zip
.DS_Store
Thumbs.db
/nbproject/

Nginx のインストール

epel リポジトリのインストールと設定

$ sudo yum -y install epel-release
$ sudo vi /etc/yum.repos.d/epel.repo
[epel]部分の「enabled=1」を「enabled=0」に変更

Nginx パッケージのインストール

$ sudo yum -y install --enablerepo=epel nginx

サービス登録

  • サービスの確認
$ systemctl list-unit-files -t service | grep nginx
nginx.service                               disabled
  • 自動起動のための設定
$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
$ systemctl list-unit-files -t service | grep nginx
nginx.service                               enabled

サービス起動

$ sudo systemctl start nginx
$ systemctl -l status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2016-05-16 19:21:17 JST; 31s ago
  Process: 1741 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 1739 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 1737 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 1744 (nginx)
   CGroup: /system.slice/nginx.service
           ├─1744 nginx: master process /usr/sbin/ngin
           └─1745 nginx: worker proces

 5月 16 19:21:17 server.com systemd[1]: Starting The nginx HTTP and reverse proxy server...
 5月 16 19:21:17 server.com nginx[1739]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 5月 16 19:21:17 server.com nginx[1739]: nginx: configuration file /etc/nginx/nginx.conf test is successful
 5月 16 19:21:17 server.com systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
 5月 16 19:21:17 server.com systemd[1]: Started The nginx HTTP and reverse proxy server.
  • 動作確認
$ ps -ef | grep nginx
root       1744      1  0 19:21 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx      1745   1744  0 19:21 ?        00:00:00 nginx: worker process

firewall の設定

$ sudo firewall-cmd --get-default-zone
public

$ sudo firewall-cmd --list-services --zone=public
dhcpv6-client ssh

$ sudo firewall-cmd --add-service http --zone=public --permanent
success

$ sudo firewall-cmd --add-service https --zone=public --permanent
success

$ sudo firewall-cmd --reload
success

$ sudo firewall-cmd --list-services --zone=public
dhcpv6-client http ssh

動作チェック

$ wget -O - -q http://localhost
% wget -O - -q http://server.com

nginx のインストール状況を確認

$ sudo semanage fcontext -l | grep nginx
/etc/nginx(/.*)?                                   all files          system_u:object_r:httpd_config_t:s0
/var/run/nginx.*                                   all files          system_u:object_r:httpd_var_run_t:s0
/var/lib/nginx(/.*)?                               all files          system_u:object_r:httpd_var_lib_t:s0
/var/log/nginx(/.*)?                               all files          system_u:object_r:httpd_log_t:s0
/var/opt/rh/rh-nginx18/log(/.*)?                   all files          system_u:object_r:httpd_log_t:s0
/etc/opt/rh/rh-nginx18/nginx(/.*)?                 all files          system_u:object_r:httpd_config_t:s0
/usr/lib/systemd/system/nginx.*                    regular file       system_u:object_r:httpd_unit_file_t:s0
/var/opt/rh/rh-nginx18/lib/nginx(/.*)?             all files          system_u:object_r:httpd_var_lib_t:s0
/var/opt/rh/rh-nginx18/run/nginx(/.*)?             all files          system_u:object_r:httpd_var_run_t:s0
/usr/sbin/nginx                                    regular file       system_u:object_r:httpd_exec_t:s0

$ cd /etc/nginx
$ ls -lZ
drwxr-xr-x. root root system_u:object_r:httpd_config_t:s0 conf.d
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 fastcgi_params
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 koi-utf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 koi-win
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 mime.types
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 nginx.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 scgi_params
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 uwsgi_params
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 win-utf

nginx.conf を修正

バーチャルホストの設定は /etc/nginx/conf.d/*.conf に個別に格納する。
使わない場合は拡張子を *.stop などに変更する。

/etc/nginx/nginx.conf
File Edit Options Buffers Tools Conf Help
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
}

設定ファイルの構文チェック

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx の起動の確認

$ sudo systemctl restart nginx
$ systemctl status nginx

動作チェック

$ wget -O - -q http://localhost
% wget -O - -q http://server.com

MariaDB のインストールと設定

パッケージのインストール

$ sudo yum -y install mariadb-server mariadb

設定ファイルの修正

/etc/my.cnf
[mysqld]
max_allowed_packet = 128M

これを設定しないと、1M くらいのファイルのやり取りで、MySQL がエラーを出してはまる orz

/etc/my.cnf.d/server.cnf
[mysqld]
character-set-server = utf8
/etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set = utf8
show-warnings

起動の確認

$ sudo systemctl start mariadb.service
$ systemctl status mariadb

自動起動の設定

$ sudo systemctl enable mariadb.service
$ systemctl list-unit-files -t service | grep mariadb
mariadb.service                             enabled

mysql_secure_installation の実行

$ sudo mysql_secure_installation
...
Enter current password for root (enter for none):  [enter]
...
Set root password? [Y/n] [Y]
New password: 
Re-enter new password: 
...
Remove anonymous users? [Y/n] [Y]
...
Disallow root login remotely? [Y/n] [Y]
...
Remove test database and access to it? [Y/n] [Y]
...
Reload privilege tables now? [Y/n] [Y]
2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?