『ゼロからはじめるLinuxサーバー構築・運用ガイド』読んだ

Page content

インフラ運用なんも知らんしKindleのセールで半額だったから購入。

本書は、さくらインターネットのVPSサービス上にWebサーバとDBサーバの構成で、WordPressサイトの構築・運用の方法を解説する。
WordPress自体にそれほど興味はないが、インフラド素人向けの丁寧そうな雰囲気を醸し出しているので興味が湧いた。

以下に記述するのは、おれが知らなかったことや本書発刊当時(2016年)と状況が変わって本書通りの操作ではうまくいかない部分のメモ。


第1章 Linuxって何

  • BIND : DNSサーバ。
  • Samba : Windowsのファイルサーバ機能機能などを実現し、LinuxサーバをWindowsサーバの代替として使用可能にする。
  • Squid : プロキシサーバ。
  • VPS : Virtual Priate Server。物理サーバ上の仮想化ソフトウェアで管理された仮想サーバ。

第2章 仮想サーバーを用意しよう

学習環境を用意しよう

VPSに申し込み

  • さくらのVPSでサーバーを新規作成する際、ブラウザがFireFoxだとクレカのセキュリティコードを正しく認識してくれないので、Edgeから登録。
  • 以後、さくらのコントロールパネルはEdgeからアクセスすることにする。
  • 2021/12現在、CentOS 7が標準で用意されているのでそれを選択。

US配列の場合

  • さくらのコントロールパネルにてサーバー -> サーバー情報 -> コンソール設定のコンソールキー配列をen-usに変更しておく。

CentOS 7のインストール

ユーザ追加

$ useradd -d /home/centuser -s /bin/bash centuser
$ passwd centuser # 対話形式でパスワードを入力

SSHの準備

おれはviの初歩的な操作は可能だが、nanoはなんも知らんのでインストールしていない。

SELinuxとファイヤウォールの変更

firewalldがデーモンとして有効化されていないので設定してから再読み込み。

$ systemctl start firewalld
$ systemctl enable firewalld
$ systemctl is-enabled firewalld # 確認
$ firewall-cmd --reload

SSHクライアントの準備

さくらのコントロールパネルで10022ポートを解放させる。

  • サーバー -> グローバルネットワーク -> パケットフィルターを設定 -> 接続可能ポートを追加
    • フィルターの種類 : カスタム
    • プロトコル : TCP
    • ポート番号 : 10022
    • 許可する送信元IPアドレス : 全て許可

centuserにsudo実行権を付与。パスワードは毎回入力させる。

$ visudo
# /etc/sudoers
centuser ALL=(ALL) PASSWD: ALL

Windows側で公開鍵・秘密鍵作成。

$ ssh-keygen ecdsa
$ cd .ssh
$ scp -P 10022 id_ecdsa.pub centuser@<IP_ADDRESS>:.

centos側の準備。

$ su centuser
$ cd $HOME
$ mkdir .ssh && touch authorized_keys
$ sudo chmod 700 .ssh
$ sudo chmod 600 .ssh/authorized_keys
$ cat ../id_ecdsa.pub >> .ssh/authorized_keys

Windows側からssh接続。

$ ssh -p 10022 -i .\id_ecdsa centuser@<IP_ADDRESS>

第3章 基本的なコマンドを覚えよう

  • lsにもワイルドカードなどのメタ文字が使える。
  • アーカイブファイル : 複数のファイルを一つにまとめたファイル。ディレクトリを圧縮する際の前準備。
  • tarの使い方(いまさら?)。
    • オプション
      • -c : アーカイブを作成
      • -x : アーカイブを展開
      • -f <PATH> : アーカイブファイルを指定
      • -z : gzip
      • -j : bzip2
      • -J : xz
      • -t : アーカイブの内容を表示
      • -v : 詳細を表示
    • tar -cvf <DST> <SRC> : SRCディレクトリをDSTファイルにアーカイブ化。
    • tar -czvf <DST> <SRC> : SRCディレクトリをアーカイブ化するとともにDSTファイルに圧縮(圧縮方式はgzip)。
    • tar -zxvf <SRC> : SRC圧縮ファイルをカレントディレクトリに展開。

第4章 ネットワークの基本と設定

知らんかったのはNetworkManagerとその付属品nmcliぐらい。これらを試そうにも変な設定しちゃったらsshが繋がらなくなるので、下手に実演できない。


第5章 サーバーを構築しよう

  • suコマンドで-オプションがないと、変更元のユーザの環境変数を引き継いでしまう(変更先の環境変数にはいくつかを除いて切り替わらない)ので、-をつけるのを推奨。
  • yum-cron : yumコマンドを自動化するデーモン。
  • uptime : 右端3つの数値がCPUコア数を上回ればシステムに負荷がかかっていることを示す。
  • デーモンとサービスの違い
    • デーモン : 主にUnix系OSでの呼び名。
    • サービス : 主にWindowsでの呼び名。
  • crontab
    • オプション
      • -e : スケジュール設定を編集。
      • -l : スケジュール設定を表示。
      • -r : すべてのスケジュール設定を削除。
    • 書式 : 分 時 日 月 曜日 実行コマンド
      • 実行コマンド以外をすべて*にしたら1分毎に実行される。
    • 指定したコマンドは、crontabを実行したユーザの権限を受け継ぐ。
  • NTP (Network Time Protocol)
    • インターネット経由で時刻を正確に同期させるプロトコル。
  • chronyd : NTPを使うデーモン。

第6章 Webページをアップしよう

Apacheの基本

  • ドキュメントルート以下は、ファイルの書き込みにrootユーザ権限が必要。
  • httpd -t : Apacheの設定ファイルに構文エラーがないかチェックする。
  • sshの10022ポートと同じように、さくらのコントロールパネルで80ポートを開放する。
    • サーバー -> グローバルネットワーク -> パケットフィルターを設定 -> 接続可能ポートを追加
    • フィルターの種類 : Web
    • プロトコル : TCP
    • ポート番号 : 80/443
    • 許可する送信元IPアドレス : 全て許可
  • systemctl
    • systemctl reload : 設定ファイル再読み込み。
    • systemctl restart : デーモンを再起動。

第7章 LAMPサーバーを作ってみよう

必要なソフトウェアのインストール

PHPのバージョンが5.4.16なので、インストールするWordPressのバージョンもそれに合わせる。

$ curl -LO http://ja.wordpress.org/wordpress-5.1.11-ja.tar.gz

第8章 セキュリティのポイントを押さえよう

セキュリティ対策の基本

  • netstat -ltu : 開いているTCP/UDPポートを表示。
    • オプション
      • -l : listenしているポートのみ表示。
      • -t : TCPを表示。
      • -u : UDPを表示。
      • -n : ポートやホストを数値で表示。
      • -p : ポートを開いているプロセスを表示。
      • -4 : IPv4のみ表示。
      • -6 : IPv6のみ表示。
  • ss : netstatの後継。
  • /etc/ssh/sshd_configの推奨設定
    • AllowUsers <ユーザ名> : 接続を許可するユーザをホワイトリスト形式で指定。
  • last : ログイン履歴を表示。
  • lastlog : ユーザ毎の最終ログインを表示。
  • /etc/logrotate.conf : ログファイルのバックアップ設定ファイル。
    • デフォルトでは週に一回バックアップがとられる。
    • rotate 52 : ログファイルのバックアップファイルが約1年間分保存される。

第9章 Dockerを使ってみよう

P.219のDockerfileはそのままではRUN yum -y install httpdの部分で失敗する。CentOS 6がEOLを迎え、yumのリポジトリが死んでいるため。
以下のように編集し、リポジトリURLを変更する。

FROM centos:6
MAINTAINER testimage <centuser@sakura>

RUN sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo \  
    && sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo

RUN yum -y install httpd

EXPOSE 80

CMD /etc/init.d/httpd start && bash

また、このイメージからコンテナを起動する前に、80ポートを使用しているホストOSのhttpdを停止させておく。

$ sudo systemctl stop httpd
参考

雑な感想

  • おれにとって本書は難易度が低すぎた。思っていたよりもあっさりとした解説で終了しちまった感じ。
  • たぶんLinuxに入門したての人に最も適している。
  • まあこんなこと書いといて、本書に記載されているコマンドやテクニックのうちのほとんどを三日後には忘れてるだろうが。