Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

CentOS 7 開発サーバ構築 完全版 (v.0.0.5)

More than 3 years have passed since last update.

目次

初期設定

インストール

基本パッケージのインストール Git 含む

$ yum update
$ yum groupinstall -y Base

EPEL リポジトリの追加

$ yum install -y epel-release

vim エイリアスを設定 (オプション)

Bash 設定ファイルの編集

$ vim ~/.bashrc
~/.bashrc
+alias vi='vim '

再読み込み

$ source ~/.bashrc

▲ 目次に戻る

Amazon EC2 スタイル

機能

  • ec2-user に相当するユーザー(キーペア認証、パスワードなしsudo
  • Amazon EC2 と同一の SSH 設定
  • その他 同一設定の適用

ユーザー

admin ユーザー (ec2-user)
ユーザー名 admin は OpenSSL サーバ証明書の発行にも使用

$ useradd -G wheel admin

鍵認証の設定

リモート

admin ユーザーとしてログイン

$ su - admin

適切なアクセス権限のフォルダとファイルを設置

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

秘密鍵と公開鍵を作成

$ ssh-keygen -t rsa -C "dev.example.com"
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.

公開鍵は authorized_keys ファイルに追記して削除

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/.ssh/id_rsa.pub

ローカル

秘密鍵は scp コマンドでリモートからローカルに設置

$ scp root@dev.example.com:/home/admin/.ssh/id_rsa ~/.ssh/dev.example.com.pem

リモート

秘密鍵を削除してログアウト

$ rm ~/.ssh/id_rsa
$ exit  # admin
$ exit  # root

ローカル

$ vim ~/.ssh/config
~/.ssh/config
+Host dev.example.com
+    HostName        dev.example.com
+    User            admin
+    IdentityFile    ~/.ssh/dev.example.com.pem

admin ユーザーでログイン出来るか確認
失敗した場合は、再度 root ユーザーでログインして設定を再確認

$ ssh dev.example.com

Sudo ユーザーの設定

wheel グループの sudo コマンドを無効

$ sudo visudo
/etc/sudoers
-Defaults    requiretty
+#Defaults    requiretty

-%wheel  ALL=(ALL)       ALL
+#%wheel ALL=(ALL)       ALL

個別設定で admin ユーザーのパスワードなし sudo コマンドを有効化

$ visudo -f /etc/sudoers.d/admin
/etc/sudoers.d/admin
admin ALL = NOPASSWD: ALL
admin ALL=(ALL) NOPASSWD:ALL

admin ユーザーとしてログインして sudo コマンドの動作確認

$ su - admin
$ sudo tail /var/log/secure

SSH の設定

設定ファイルの編集
Amazon EC2 (Amazon Linux) と同一の設定

$ vim /etc/ssh/sshd_config
/etc/ssh/sshd_config
-#PermitRootLogin yes
+PermitRootLogin forced-commands-only

-PasswordAuthentication yes
+PasswordAuthentication no

-GSSAPIAuthentication yes
-GSSAPICleanupCredentials no
+#GSSAPIAuthentication yes
+#GSSAPICleanupCredentials no

-#PrintLastLog yes
+PrintLastLog yes

SSH を再起動
admin ユーザーの鍵認証に失敗している場合はログイン出来なくなるので注意

$ sudo systemctl restart sshd

SELinux の無効化

現在の状態を確認

$ getenforce
Enforcing

設定ファイルの編集

$ sudo vim /etc/sysconfig/selinux
/etc/sysconfig/selinux
-SELINUX=enforcing
+SELINUX=disabled

設定を反映させるために再起動

sudo reboot

Disabled となっていることを確認

$ getenforce
Disabled

ホスト名を変更 (オプション)

現在のホスト名を確認

$ hostname

設定ファイルの編集

$ sudo vim /etc/hostname
/etc/hostname
dev.example.com

設定を反映させるために再起動

$ sudo reboot

新しいホスト名を確認

$ hostname
dev.example.com

▲ 目次に戻る

OpenSSL (オプション)

[CSR生成] Apache 2.x + mod_ssl + OpenSSL(新規・更新)

SSL サーバ証明書の作成

秘密鍵を作成してパスフレーズを解除

$ sudo openssl genrsa -des3 -out dev.example.com.key 2048
$ sudo openssl rsa -in dev.example.com.key -out dev.example.com.key

秘密鍵から CSR を作成

$ sudo openssl req -new -key dev.example.com.key -out dev.example.com.csr
フィールド 説明
Country Name※ 国を示す2文字のISO略語です。 JP
State or Province Name※ 組織が置かれている都道府県です。 Osaka
Locality Name※ 組織が置かれている市区町村です。 Osaka-shi
Organization Name※ 組織の名称です。 GlobalSign K.K.
Organization Unit Name 組織での部署名です。
※指定がない場合は - (ハイフン)を入力してください。
Sales
Common Name※ ウェブサーバのFQDNです。 dev.example.com
Email Address 入力不要です。
A challenge password 入力不要です。
An optional company name 入力不要です。

おすすめ認証局

CSR を用いてSSL 認証局より発行した証明書から、サーバ証明書ファイルを作成
サーバ証明書、中間証明書、ルート証明書の順序で記述

$ sudo vim dev.example.com.crt

サーバ証明書、秘密鍵を配置
CSR はサーバから削除 (使い回しは非推奨)

$ sudo mv dev.example.com.crt /etc/pki/tls/certs/dev.example.com.crt
$ sudo mv dev.example.com.key /etc/pki/tls/private/dev.example.com.key
$ sudo rm dev.example.com.csr

▲ 目次に戻る

Apache 2.4

インストール

最新版をインストール

$ sudo yum install -y httpd

自動起動を有効

$ sudo systemctl enable httpd

Apache を起動

$ sudo systemctl start httpd

ファイアウォールの設定

4.5. ファイアウォールの使用

HTTP(80) のポートを解放

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

基本設定

設定ファイルをバックアップ

$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

VirtualHost の設定

$ sudo vim /etc/httpd/cond.d/vhosts.conf
/etc/httpd/cond.d/vhosts.conf
<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/dev.example.com/public_html
    ServerName dev.example.com

    <Directory /var/www/dev.example.com/public_html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Apache を再起動

$ sudo systemctl restart httpd

OpenSSL の設定

Apache OpenSSL モジュールの追加

$ sudo yum install -y mod_ssl

設定ファイルのバックアップ

$ sudo cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org

設定ファイルの編集

$ sudo vim /etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.d/ssl.conf
-#DocumentRoot "/var/www/html"
-#ServerName www.example.com:443
+DocumentRoot "/var/www/dev.example.com/public_html"
+ServerName dev.example.com:443

-SSLCertificateFile /etc/pki/tls/certs/localhost.crt
+SSLCertificateFile /etc/pki/tls/certs/dev.example.com.crt

-SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
+SSLCertificateKeyFile /etc/pki/tls/private/dev.example.com.key

SSL優先 (オプション)

HTTP(80) に来たユーザーを HTTPS(443) にリダイレクト

$ sudo vim /etc/httpd/conf.d/vhosts.conf
/etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
    ServerName dev.example.com
    RewriteEngine On
    RewriteRule ^(.*) https://dev.example.com$1 [L,R=301]
</VirtualHost>

Apache の設定を再読み込み

$ sudo systemctl reload httpd

ファイアウォールの設定

4.5. ファイアウォールの使用

HTTPS(443) のポートを解放

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

▲ 目次に戻る

MariaDB 10.1

CentOS 7 から MySQL から MySQL 互換の MariaDB に変更

インストール

最新版の MariaDB リポジトリを追加

$ sudo vim /etc/yum.repos.d/MariaDB.repo
/etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

最新版をインストール

$ sudo yum install -y MariaDB-server MariaDB-client

自動起動を有効

$ sudo systemctl enable mariadb

MariaDB の起動

$ sudo systemctl start mariadb

基本設定

初期設定をインストール

$ mysql_secure_installation
フィールド
Enter current password for root (enter for none): 未入力
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

設定ファイルを編集
文字コードを UTF-8 に変更

$ sudo vim /etc/my.cnf.d/server.cnf
/etc/my.cnf.d/server.cnf
[mysqld]
+character-set-server=utf8

MariaDB の再起動

$ sudo systemctl restart mariadb

ファイアウォールの設定 (オプション)

4.5. ファイアウォールの使用

  • MariaDB(3306) のポートを解放
$ sudo firewall-cmd --zone=public --add-service=mysql --permanent
$ sudo firewall-cmd --reload

▲ 目次に戻る

PHP 7.0

インストール

Remi リポジトリを追加

Remi's RPM repository

$ wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo rpm -Uvh remi-release-7.rpm
$ rm remi-release-7.rpm

最新版の PHP をインストール

$ sudo yum --enablerepo=remi-php70 install php php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-posix php-xml

基本設定

設定ファイルのバックアップ

$ sudo cp /etc/php.ini /etc/php.ini.default

PHP 設定ファイルを編集

$ sudo vim /etc/php.ini
/etc/php.ini
-;date.timezone =
+date.timezone = "Asia/Tokyo"

Apache を再起動

$ sudo systemctl restart httpd

Composer

PHP パッケージマネージャー

Download Composer

ダウンロード

$ sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ sudo php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ sudo php composer-setup.php
$ sudo php -r "unlink('composer-setup.php');"

実行フォルダに移動

$ sudo mv composer.phar /usr/local/bin/composer

phpMyAdmin 4.6

Web上で実行される MySQL (MariaDB) データベース接続クライアントツール

最新版をインストール (remi-test リポジトリ)

$ sudo yum --enablerepo=remi-test,remi-php70 install phpMyAdmin

許可IPアドレスを追加

$ sudo vim /etc/httpd/conf.d/phpMyAdmin.conf
/etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     Require local
+    Require ip IPアドレス
   </IfModule>
</Directory>

Apache を再起動

$ sudo systemctl restart httpd

動作確認
http://dev.example.com/phpMyAdmin/
http://dev.example.com/phpmyadmin/

▲ 目次に戻る

Node.js v6

Installing Node.js via package manager

最新版のリポジトリを追加

$ curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -

最新版をインストール

$ sudo yum install -y nodejs

基本パッケージをインストール (オプション)

$ sudo npm install -g bower less

▲ 目次に戻る

TODO

  • 見出し、内容の整理
  • Node.js Apache リバースプロキシ
  • FTP サーバ
  • メールサーバ Postfix, Dovecot
  • Ruby, Python
  • nginx (未定)
  • ファイアウォール trusted の追加 ssh mysql の削除
  • Redmine
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away