記事一覧

    httpdデーモンをport#80とは違うpot#8080の別デーモンで起動する設定

    httpd(apache)をport#80とは別にport#8080でもう一つ作りたい時の設定をご紹介致します。

    デーモンを別にすることでメンテナンスや設定の反映、障害対応など起動・停止に伴う影響を最小限にとどめることが出来ます。

     

    [設定内容]

    デーモンネーム httpd-new
    設定フォルダー /etc/httpd-new/
    設定ファイル /etc/httpd-new/conf/httpd.conf
    VirtualHost設定ファイル /etc/httpd-new/conf.d/httpd-new.conf
    Listen port番号 8080
    アクセスログ保存先 /var/log/httpd-new/japan/access_log combined
    エラーログ保存先 /var/log/httpd-new/japan/error_log combined
    DocumentRoot /www/docs/

     

    [設定方法]

    1. serverへログイン

    sudo su –
    cd /etc
    pwd
    → /etc に移動されたことを確認

     

    2. フォルダー “httpd-new” を作成

    ls -l grep ^d | grep httpd*

     

    drwxr-xr-x 5 root root 92 Sep 7 2018 httpd

     

    今回作成するフォルダー “httpd-new” がないことを確認。

    mkdir httpd-new
    ls -l grep ^d | grep httpd*
    フォルダーhttpd-newが作成されたことを確認

     

    drwxr-xr-x 5 root root 92 Sep 7 2018 httpd
    drwxr-xr-x 5 root root 92 Sep 8 2021 httpd-new

     

     

    3. httpd-newへ移動し作業を開始

    cd httpd-new
    pwd
    → httpd-new であることを確認する。

    cp -pir /etc/httpd/conf /etc/httpd-new/
    cp -pir /etc/httpd/conf.d /etc/httpd-new/
    cp -pir /etc/httpd/conf.modules.d /etc/httpd-new/
    ※rオプションは再帰的(recursion)に繰り返すのでサブディレクトリー毎にコピーをしてくれます(^^♪

     

    4. シンボリックリンクの作成

    ln -s /var/log/httpd-new logs
    ln -s ../../usr/lib64/httpd/modules modules
    ln -s /run/httpd run

    ※ln -s リンク先 リンク元(アクセスが来た時の名前)
    シンボリックリンクを張る時は、そのリンク元があるディレクトリーまで移動してからコマンドを投入すること。移動しないと正しくシンボリックリンクが張れない。

     

    5. httpd.conf の編集

    cd /etc/httpd-new/conf/
    pwd
    → /etc/httpd-new/conf であることを確認する。

    httpd.conf バックアップ
    cp -pi /etc/httpd-new/conf/httpd.conf /etc/httpd-new/conf/httpd.conf.20210331

    vi httpd.conf
    ※httpd を httpd-new へ変更、listen port番号を8080へ変更をする。
    ※必要に応じてDirectoryなども変更をする

     

    ServerRoot “/etc/httpd-new”
    Listen 8080

     

     

    6. conf.d の個別設定ファイルhttpd-new.confを作成する。

    cd ../conf.d
    pwd
    → /etc/httpd-new/conf.d であることを確認する。

    vi httpd-new.conf
    #httpd-new

     

    <VirtualHost *:8080>
    ServerAdmin root@httpd-new.co.jp
    DocumentRoot /www/docs/
    ServerName httpd-new.co.jp
    CustomLog /var/log/httpd-new/japan/access_log combined
    ErrorLog /var/log/httpd-new/japan/error_log combined
    ScriptAlias /cgi-bin/ “www/docs/cgi-bin”
    DirectoryIndex index.php index.html index.htm
    <Directory “/www/docs/”>
    Options FollowSymLinks ExecCGI IncludesNOEXEC
    AllowOverride all
    Require all granted
    </Directory>
    </VirtualHost>
    # end httpd-new.com

     

    ※CustomLogとErrorLogのcombined フォーマットは common フォーマットに”リファラー”と”User Agent”が追加されています。

     

     

    7. 必要かどうか検討をするファイル

    autoindex.conf welcomeページやREADMEで表示されるアイコン画像が設定されている。 不要なので消すべし!
    php.conf phpのconfigファイル。必要に応じて設定するべし!
    userdir.conf userのhomeディレクトリへのアクセス設定。個別にconfファイルを作る必要がなし。
    welcome.conf welcomeページなので必要無し

     

    8. sysconfig の設定

    cp -pi /etc/sysconfig/httpd /etc/sysconfig/httpd-new
    ls -l /etc/sysconfig/httpd*
    → httpd-new が作成されたことを確認

    vi /etc/sysconfig/httpd-new

     

    OPTIONS=”-f /etc/httpd-new/conf/httpd.conf”

     

     

    9. httpdコマンドとシンボリックリンク

    ll /usr/sbin/httpd*
    → httpd が存在していることを確認
    cd /usr/sbin
    pwd
    ln -s httpd httpd-new

     

    lrwxrwxrwx 1 root root 5 Apr 17 12:27 httpd-new -> httpd

     

     

    10. ロギングフォルダーの作成

    mkdir -p /var/log/httpd-new/japan/
    ※ -p オプションは、サブディレクトリまで作成する。

     

    11. 起動用httpd-new.serviceの作成

    cd /etc/systemd/system/
    pwd
    ls -l httpd*

     

    -rw-r–r– 1 root 993 5月 17 2019 httpd.service

     

    cp -pi /etc/systemd/system/httpd.service /etc/systemd/system/httpd-new.service
    ls -l
    vi httpd-new.service
    ※3箇所の修正

     

    EnvironmentFile=/etc/sysconfig/httpd-new
    Environment=LANG-C

    ExecStart=/usr/sbin/httpd-new $OPTIONS -DFOREGROUND
    ExecReload=/usr/sbin/httpd-new $OPTIONS -k graceful

     

     

    11. 構文チェック

    httpd-new -t
    ※syntax errorが出ないことを確認する。

     

    12. 動作確認

    プロセスの起動確認・起動
    systemctl status httpd-new
    systemctl start httpd-new
    systemctl status httpd-new
    ps -e | grep httpd-new

    port#8080で起動していることを確認
    netstat -nat | grep 8080

    サービス自動起動設定確認
    systemctl is-enabled httpd-new.service

    サービス自動起動設定
    systemctl enable httpd-new

     

    13. logrotateの設定

    cd /etc/logrotate.d
    pwd
    → /etc/logrotate.dであることを確認
    ll

    vi httpd-new

     

    /var/log/httpd-new/*log /var/log/httpd-new/*/*log {
    daily
    rotate 30
    missingok
    notifempty
    sharedscripts
    compress
    delaycompress
    postrotate
    /bin/systemctl reload httpd-new.service > /dev/null 2 > /dev/null || true
    endscript
    }