CentOS7 を最小限のサーバとしてセットアップするときのメモ。
もくじ:
ISOイメージによるインストール
minimal ISO を使うと、最小限のパッケージがインストールされます。必要に応じて下記の設定をします。
- kdumpの無効化(あまり意味はない)
- ネットワークの設定:起動した時自動的にオン、ホスト名
- パーティション設定
- タイムゾーン設定(Asia/Tokyo)
- 追加ユーザ(root以外の一般ユーザ)と管理者権限の付与:必要に応じて
パーティションの設定
ただし、パーティション設定についてはデフォルトで/home
ディレクトリに大きめの容量が割り当てられるので、使わない場合は変更してしまったほうが良いですね。
「インストール先」からパーティションを設定します。
「パーティションを自分で構成する」に変更して完了ボタンをクリック。
インストール後の初期設定
ネットワーク設定
Network Managerで設定します。ゆとりエンジニアのためのテキストベースUI。
1 | $ nmtui |
必要に応じて IP アドレスの固定、IPv4 の無効化など。より直観的に操作できるようになるので、使い方についてはそう困らないはず。
ip a
コマンドでネットワーク設定が確認できます。
デフォルトで SSH がインストールされるので、以降は ssh クライアントを使ってリモートで作業することもできます。
パッケージインストール
必要に応じてプロキシを設定します。root 権限を持つユーザでyum
を実行します。
インストールするものはお好みで。
1 2 3 4 | $ yum update -y $ yum install -y vim $ yum install -y git $ yum install -y epel-release |
sudo実行権限の追加
OSインストール時に作成したユーザについては、ウィザードで管理者権限をつけることができますが、基本的にroot以外のユーザではsudo
が使えない(権限エラーで拒否される)ので、必要であればroot権限を与えるよう設定を変更します。
su -
か、ログインしなおして root 権限で実行して下さい。
1 | $ visudo |
vi で設定ファイルが開くので、root ユーザの下に行を追加して保存します。下記はuser
という名前のユーザを追加する例です。
1 2 3 | root ALL=(ALL) ALL # add "user" user ALL=(ALL) ALL |
SELinuxの設定
ちょっと前までインフラエンジニアの間で SELinux と言えば、頼んでもないのに勝手にアクセス制御してくれるやつ、みたいなイメージがありとにかく親の仇のように無効化する風潮がありました。
最近は特に無効化しなくても問題になることはない印象。本当に問題にぶち当たってから初めて無効化を試すくらいでも十分です。
1 2 3 4 5 6 7 8 9 | # 設定の表示 $ getenforce # 一時的に無効化 $ setenforce 0 # 一時的に有効化 $ setenforce 1 # 永続化するには次のようにファイルを編集 $ vi /etc/selinux/config SELINUX=disabled |
ファイヤウォールの設定
設置する場所によってはファイヤウォールを使いたくなるときがありますよね。
firewalld はデフォルトでインストールされないケースがありますので、yum をたたいておきます。インストールされたらsystemctl
でサービスの設定をしておきます。
1 2 3 4 | $ yum install -y firewalld $ systemctl start firewalld $ systemctl status firewalld $ systemctl enable firewalld |
設定はfirewall-cmd
を使って行います。特に問題なければデフォルト(大抵はpublic
)のゾーンに設定していきます。
1 2 3 4 5 6 7 | # 設定の表示 $ firewall-cmd --list-all $ firewall-cmd --list-all-zones # 設定(アクセス許可)例 $ firewall-cmd --permanent --add-service=http --zone=public $ firewall-cmd --permanent --add-port=8080/tcp --zone=public $ firewall-cmd --reload |
Python3のインストール
CentOS でも Python3 はデフォルトでは入っていないので、追加のインストールが必要になります。
実行コマンドはバージョン番号を使ってpython3.{x}
の形式になります。python
コマンドとリンクしてもいいのですが、Python2 系を使って動いているモジュールが軒並み動かなくなったりするのでしないほうが良いです。
1 2 3 4 | $ yum install -y https://centos7.iuscommunity.org/ius-release.rpm $ yum install -y python36u python36u-libs python36u-devel python36u-pip $ python3.6 --version $ pip3.6 --version |
時刻同期
ここではNTPを使った、外部のNTPサーバを参照して時刻合わせを行うクライアントの設定のことを言っています。
従来は時刻同期と言えばntpd
でしたが、最近のバージョンではこのあたりの事情が変わってきているようです。
CentOSでのメインストリームはchrony
です。最小構成でもインストールされると思いますが、一応サービスが自動起動に設定されているかは確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ systemctl status chronyd ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabl> Active: active (running) Docs: man:chronyd(8) man:chrony.conf(5) Process: 743 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, statu> Process: 733 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 739 (chronyd) Tasks: 1 (limit: 25027) Memory: 2.6M CGroup: /system.slice/chronyd.service └─739 /usr/sbin/chronyd # 現在設定されている NTP サーバの確認 $ chronyc sources |
設定ファイルは/etc/chrony.conf
で、フォーマットはntp.confと似ています。最低限は参照したいサーバを設定しておけば大丈夫です。
設定ファイルを編集した後は、chronydデーモンを再起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ vim /etc/chrony.conf # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). # pool ... (コメントアウト) server {NTP server name/address} iburst $ systemctl restart chronyd $ chronyc sources 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* {your NTP sever} 4 6 17 7 -24us[ -147us] +/- 101ms # timedatectl コマンドも一応使える $ timedatectl status |
おわり。