Server

CentOS7でwebサーバの初期設定

投稿日:2018年6月25日 更新日:

はじめに

CentOSでのサーバ構築は6までしか経験してなかったのですが、今後建てるなら7でしょ、ということで手順をまとめてみます。

設定内容

VPSでCentOS7を選び、webサーバとして最低限の機能を構築することを想定しています。

  • 必要なパッケージをインストール
  • SSH設定
  • httpd2.4 + let’s encryptでhttps接続

必要なパッケージをインストール

まずはカーネルその他諸々アップデート

yum -y install yum-priorities yum-fastestmirror
yum update

dnf

yumの後継として、Fedoraでは22以降で標準になっているパッケージ管理システムです。
CentOS7でも使えますが、標準では入っておらず、yumでインストールすることもできないようです。

ということで、RPMを直接ダウンロードしてインストールします。
参考:CentOS 7.2でdnfを使う方法

以後はdnfを使っていきます。yumと同じような感じで使えます。

SSH設定

ユーザー作成・設定

ローカル側で鍵作成

パスなしで作成します(何も入力せずEnterでOK)。
hoge_rsaとhoge_rsa.pubが作成されるので.pubの方をリモートにアップロードします。
scp -P ポート番号 ローカルからアップロードしたいファイルのパス ユーザ名@リモートのホスト名:リモートのコピー先ディレクトリ

サーバにアップロードした公開鍵をリネーム

sshd_config編集

ここまでやったらsshdを再起動します。
sudo systemctl restart sshd

サービスの自動起動は最後にまとめて設定します。

ファイアウォールの設定変更

参考:CentOS7でSSHのポート番号を変更する

ローカルから鍵認証でSSHログインできるかを確認します。
ssh -p 23456 -i ~/.ssh/hoge_rsa xxx@xxx.xxx.xxx.xxx

httpd2.4

インストール

Baseリポジトリには2.4系の古いバージョンしかないので、最新バージョンを扱うリポジトリを登録します。
参考:CentOS7にApache2.4最新版をyum installする
dnf -y install https://centos7.iuscommunity.org/ius-release.rpm

iusリポジトリに無いが、httpdインストール時に必要となるパッケージをBaseリポジトリから入れておきます。
dnf install expat-devel libdb-devel cyrus-sasl-devel

これで準備完了です。httpdの古いバージョンが入ることを防ぐため、Baseリポジトリを無効化してインストールします(ついでにopensslとmod_sslも)。
dnf install --disablerepo=base --enablerepo=ius httpd-devel openssl-devel mod_ssl

ファイアウォール設定

httpで80番、httpsは443番を開放します。

ここまででhttp接続はできるようになっているはずです。ブラウザでアクセスして、おなじみの It works! が表示されればOKです。

let’s encryptでhttps化

certbotインストール&実行

let’s encryptで取得した証明書の期限は3ヶ月なので、定期的(ここでは毎月1日の04:00)に更新するようにcronを設定します。

正常に終了していれば、公開鍵ファイルが生成されています。

ssl.conf編集

以前にも紹介した「Mozilla SSL Configuration Generator」が便利です。

httpd2.4.33 + openssl1.0.2k + Modern(セキュリティ強め設定、要件次第では不要かも)

SSLProtocolSSLCipherSuite はVirtualHostディレクティブの外で設定しましょう。

サービスの自動起動設定

サーバが再起動した際、自動でサービスが立ち上がるようにします。

  • CentOS6まで: chkconfig サービス名 on
  • CentOS7: systemctl enable サービス名.service

.serviceは省略してもいいようです。

確認コマンドは下記の通りです。 enabled になっていればOKです。

httpsで接続確認

ブラウザで再度アクセスしてみます。
ssl.confで Strict-Transport-Security が有効になっていれば、http接続しても強制的にhttpsにリダイレクトされます。
It works! が出てくればOKです。お疲れ様でした。

さいごに

いかがでしたしょうか。元々あったCentOS6向けの自分用メモを更新して、その内容を一部改変し、説明を付け足した感じです。ある程度は定型的な作業になると思いますので、こうやって手順を整理して、サクサクできるように心がけています。

blog-page_footer_336




blog-page_footer_336




-Server

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

mkcertで簡単にオレオレ証明書を発行する

1 はじめに2 前提3 mkcert3.1 概要3.2 インストール3.3 証明書作成3.4 証明書設置と設定3.5 接続確認4 さいごに5 おすすめ書籍 はじめに ローカルのwebサーバにhttps ...

同じレコードがないときだけインサートする!

はじめに あるアイテムを持っていない人だけ、別のアイテムをあげたい! もしくはその逆で、あるアイテムを持っている人に追加でアイテムをあげたい! そういうことってないでしょうか? 先日、僕がそのような状 ...

DockerでRuby2.5、Rails5.2betaの環境をつくる【Compose file v3】

1 はじめに2 Dockerのインストール3 ファイルの準備3.1 Gemfile3.2 Gemfile.lock3.3 Dockerfile3.3.1 Ruby(Rails)3.3.2 MySQL3 ...

CircleCIを使ってみた(RailsのRSpecとデプロイのサンプル)

1 はじめに2 導入するにあたって3 項目B4 補足4.1 開発環境とCI環境でdatabase.ymlが異なる5 さいごに はじめに 個人的に作成しているアプリケーションのCIツールとして、Circ ...

aws

Amazon EC2を使ってみる

1 はじめに2 事前準備2.1 ルートアカウントのMFAを有効化2.2 個々のIAMユーザの作成(及びグループの作成)2.3 IAMユーザのMFAを有効化2.4 IAMパスワードポリシーの適用3 EC ...

フォロー

blog-page_side_responsive

2018年6月
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。