2019-06-08

【備忘録】httpd 設定のおぼえがき 〜 初期設定 〜

CentOS をほとんど使っていない古い PC にクリーンインストールして、家庭内 LAN で Web サーバーに使おうとしています。Apache HTTP Server との付き合いはとても長いのですが、使いはじめの設定は毎日するようなものではないので、その場限りの設定をしてしまっています。そのため、同じような設定を別のサーバーにするときにはいつも調べ直しています😅。

少しでも調べ直す無駄をなくすために備忘録として残すことにしました。ということで、今回のテーマは次のとおりです。

家庭内 LAN の Web サーバー用 PC に Web 関連パッケージをインストールして、必要な設定を加えてサーバーの各ユーザーアカウント内で Web コンテンツの作成をできるようにします。

使用した OS は前述のとおり、CentOS です。

OS
CentOS 7.6-1810

Web サーバー関連パッケージのインストール

CentOS は、ダウンロードした CentOS-7-x86_64-LiveGNOME-1810.isoFedora Media Writer で USB メモリに焼いてインストールしたのですが、通常のインストールでは Web サーバーに必要な Apache HTTP Server などのパッケージがインストールされません。下記のようにして関連パッケージをインストールしました。

Web サーバーに必要な基本的なパッケージをインストール 
$ sudo yum group install "ベーシック Web サーバー"

サービスの起動

Apache HTTP Server のサービス、httpd を起動 (start) します。また、OS 起動後にサービスが使えるように有効化 (enable) しておきます。

httpd の起動 
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
$ sudo systemctl status httpd
 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2019-06-08 10:09:02 JST; 38s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 7250 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─7250 /usr/sbin/httpd -DFOREGROUND
           ├─7254 /usr/sbin/httpd -DFOREGROUND
           ├─7255 /usr/sbin/httpd -DFOREGROUND
           ├─7256 /usr/sbin/httpd -DFOREGROUND
           ├─7257 /usr/sbin/httpd -DFOREGROUND
           ├─7258 /usr/sbin/httpd -DFOREGROUND
           └─7259 /usr/sbin/httpd -DFOREGROUND

 6月 08 10:09:01 localhost.localdomain systemd[1]: Starting The Apache HTTP ...
 6月 08 10:09:02 localhost.localdomain systemd[1]: Started The Apache HTTP S...
Hint: Some lines were ellipsized, use -l to show in full.
$ 

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

HTTP で使用する 80 番のポートを解放し、HTTP で通信できるようにサービスを追加後、ファイアーウォールのサービスを再起動して反映させます。

ファイアーウォールの設定 
$ sudo firewall-cmd --add-port=80/tcp --permanent
success
$ sudo firewall-cmd --add-service=http --permanent
success
$ sudo systemctl restart firewalld
$ 

LAN 内の他の PC のブラウザからこの CentOS (192.168.0.12) へアクセスして、トップページが表示されることを確認します。

 他の PC のブラウザからアクセスした例 

ユーザ毎のウェブディレクトリ

ユーザアカウント内の public_html 内をウェブサイトとして利用できるように /etc/httpd/conf.d/userdir.conf を編集します。下記にコメントを除いた設定ファイルの内容と、変更した箇所を赤字で示しました。

/etc/httpd/conf.d/userdir.conf の設定 
<IfModule mod_userdir.c>
    #UserDir disabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

ユーザアカウント内に public_html ディレクトリを作成します。この例ではユーザアカウントは bitwalk のみです。パーミッションは下記のようになっています。

ユーザアカウントのディレクトリとパーミッション 
$ cd ~
$ mkdir public_html
$ chmod 755 /home/bitwalk
$ ll -d /home/bitwalk
drwxr-xr-x. 17 bitwalk bitwalk 4096  6月  8 08:32 /home/bitwalk
$ ll -d /home/bitwalk/public_html
drwxrwxr-x. 2 bitwalk bitwalk 41  6月  8 08:32 /home/bitwalk/public_html
$ 

httpd を再起動します。

httpd の再起動 
$ sudo systemctl restart httpd

SELinux の設定

最後に SELinux で httpd_enable_homedirs を有効にします。

SELinux で httpd_enable_homedirs を有効にする 
$ sudo setsebool -P httpd_enable_homedirs 1

簡単な Web ページで確認

LAN 内の他の PC から、下記のサイトがアクセスできることを確認します。事前に index.htmltest.html を用意して /home/bitwalk/public_html/ に保存おきました。

http://192.168.0.12/~bitwalk/
 二つのテストページで確認 

まとめ

最低限の設定ですが、これで初期の目標を達成できました。今後も httpd に関わる設定について、何回も設定する場面が予想されるものについては備忘録でまとめて行く予定です。

また、まもなくリリースされるであろう CentOS 8 でも同じような確認をしていこうと考えています。

参考 サイト

  1. centos7でwebサーバー構築1-基礎的なシステムの構築 - Qiita [2018-12-27]

 

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: