Ubuntuサーバー構築入門

  • Ubuntu 20
  • Ubuntu 18
  • Ubuntu 16

UbuntuとCentOSの違うところ・共通化されたところ

UbuntuとCentOSの違うところをここでまとめておきます。両方で動くようになるのがよいですね。

CentOSでは「/bin/sh」は「/bin/bash」にシンボリックリンクが張られている

CentOSでは「/bin/sh」は「/bin/bash」にシンボリックリンクが張られている。

シェバンを以下のように書いているとCentOSでは、bashで実行されるのに対して、Ubuntuでは、shで実行される。

#!/bin/sh

そして、bashの文法を使っていると以下のように文法エラーになる。

./morbo: 10: ./morbo: Syntax error: "(" unexpected

ポータビリティを持たせるためには、明示的にbashとシェバンを書くのがよい。

#!/bin/bash

パッケージ管理

パッケージ管理ツールUbuntuではapt、CentOSではyumの違いがある。パッケージ名も異なります。

sudo

Ubuntuは、sudoがデフォルトです。CentOSと、手順を共通化するには、CentOSでも、sudoを使うように、サーバー管理を行いましょう。

サーバー

Apache

Apacheは名前が異なります。CentOSではhttpdなのに対して、Ubuntuでは、apache2です。

設定ファイルの場所や、systemctlコマンドを実行するときの名前が異なっています。

設定ファイルの構成も、CentOSとUbuntuで異なっています。

UbuntuのApacheには、a2ensite, a2enmod, a2enconfなどの、設定ファイル有効化コマンドがあります。

コマンドを使って設定ファイルを有効化・無効可するといったことが、Ubuntuでは、やりやすくなっています。

ファイアーウォール

ファイアーウォールは、Ubuntuはufw、CentOSはfirewalldと異なる。

ファイアーウォールは、コマンドラインでの設定は、非常にややこしく、やりたくないという気持ちは強い。

VPS、クラウドサービスには、たいてい、ネットワークのパケット制御が存在するので、それで設定すると、Linux自体のファイアーウォールを意識しないですむ。

cron

Ubuntuの場合は、デフォルトでcronがインストールされていて、普通のcronです。自然にcronを使えます。

CentOSの場合は、デフォルトのcronがanacronです。普通のcronが欲しい場合は、anacronをアンインストールして、普通のcronをインストールする必要があります。

SeLinux

CentOSの場合は、SeLinuxがデフォルトでonになっている。この機能、リバースプロキシでの接続で、プロキシエラーになっちゃうので、SeLinuxを無効にするか、リバースプロキシができる設定にする必要があります。

Ubuntuの場合は、CentOSのSeLinuxに該当する機能は、デフォルトでoffになっているようです。

Let's EncryptによるSSL証明書

Ubuntuでは、certbotがaptからインストールできます。

CentOSでは、以下のようにcertbotをインストールします。

# Cent OS 7
yum install epel-release
yum install --enablerepo=epel certbot

新しいCent OSのバージョンが出たばかりなど、certbotがepelレポジトリに含まれていない場合は、ソースコードからインストールしする必要があります。またcertbotは、certbot-autoという名前です。

ここ最近共通になったもの(2020年5月21日現在)

CentOSとUbuntuで、ここ最近共通になったもの。

systemctl

CentOSもUbuntuもサービス(サーバーとして起動する者)は、systemdで管理するようになって、管理コマンドもsystemctlになりました。

journalctl

systemdのログ管理もjournalctlがUbuntuとCentOSで共通で使える。