『ゼロからはじめる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に入門したての人に最も適している。
- まあこんなこと書いといて、本書に記載されているコマンドやテクニックのうちのほとんどを三日後には忘れてるだろうが。