ubuntu
カテゴリ
Webサーバー Apache と Nginx
2026/03/14 10時apache
経費節約のため、光回線からホームルーター ZTE Speed Wi-Fi L13 ZTR02での楽天モバイルに切り替えたら、回線環境は問題ないが、Webサーバーの公開が出来なくなり頓挫していたが、Ubuntu Server 導入に伴い、ホームルーターでのポート開放では無く、Nginx と Tailscale Funnel とで、自分だけの公開に向け再トライする。
項目Apachenginx
登場1995年頃2004年
処理方式プロセス/スレッド型イベント駆動型
特徴柔軟・設定豊富高速・軽量・同時接続に強い
CGI(.cgiファイル)得意苦手(別途設定が複雑)
設定のしやすさ簡単やや難しい
Basic認証簡単できるが設定が面倒
特徴1リクエストごとにプロセス/スレッドを使う少数のプロセスで大量接続をさばく(イベント駆動)
柔軟でカスタマイズ性が高い静的ファイル(画像・動画)配信がめちゃ速い
同時アクセスが増えると重くなりやすいリバースプロキシが得意(裏で別サーバー動かす構成)
Web公開のツールはいくつか有るようだが、代表的なのが Apache と Nginx 後者のほうが後発なので良いかと思ったが、掲示板やBasic認証を使用するなら、Apache 一択となった。

■Apache 2 インストール

ホストにApache 2 をインストール
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2
sudo a2enmod cgi

以前Windowsでのcgiファイルは shift-JIS を使用していたが、Ubuntu Server は、UTF-8に変換するので nkf(Network Kanji Filter)をインストール
sudo apt update && sudo apt install nkf -y

基本設定 000-default.conf ファイルの作成
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /mnt/data/docker/vafee-server/html
    <Directory /mnt/data/docker/vafee-server/html>
        Options +ExecCGI +Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
        AddHandler cgi-script .cgi
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

詳細設定 vafee2.conf ファイルの作成
 sudo nano /etc/apache2/sites-enabled/vafee2.conf
<VirtualHost *:80>
    ServerName  vafee-lab.com
    ServerAlias www.vafee-lab.com
    ServerAlias ubuntu-sv.xxxxxxxx.ts.net

    DocumentRoot /mnt/data/docker/vafee-server/html
    ProxyPreserveHost On

    # --- Vaultwarden ---
    # /vault/ で始まるパスのみ 8080 へ転送(末尾スラッシュ必須)
    ProxyPass        /vault/ http://127.0.0.1:8080/vault/
    ProxyPassReverse /vault/ http://127.0.0.1:8080/vault/

    # --- Netdata ---
    ProxyPass        /netdata/ http://127.0.0.1:19999/
    ProxyPassReverse /netdata/ http://127.0.0.1:19999/

    # --- EPGStation ---
    ProxyPass        /epgstation/ http://127.0.0.1:8888/
    ProxyPassReverse /epgstation/ http://127.0.0.1:8888/

    # --- passmanager API ---
    ProxyPass        /passmanager/ http://127.0.0.1:8100/
    ProxyPassReverse /passmanager/ http://127.0.0.1:8100/

   # lounge Basic認証
    <Location /vafee2/lounge/>
        AuthType Basic
        AuthName "Restricted Access"
        AuthUserFile /mnt/data/docker/vafee-server/conf/userpass
        Require valid-user
    </Location>

    # iconsフォルダは認証不要・Apache直接配信
    <Location /vafee2/lounge/icons/>
        Require all granted
    </Location>
    ProxyPass        /vafee2/lounge/icons/ !
    ProxyPassReverse /vafee2/lounge/icons/ !

    <Location /vafee2/lounge/lounge_bg.gif>
        Require all granted
    </Location>
    ProxyPass /vafee2/lounge/lounge_bg.gif !

    # bgフォルダは認証不要・Apache直接配信
    <Location /vafee2/lounge/bg/>
        Require all granted
    </Location>
    ProxyPass /vafee2/lounge/bg/ !

    # メディアフォルダは認証不要・Apache直接配信
    <Location /vafee2/lounge/jpg/>
        Require all granted
    </Location>
    ProxyPass        /vafee2/lounge/jpg/ !

    <Location /vafee2/lounge/video/>
        Require all granted
    </Location>
    ProxyPass        /vafee2/lounge/video/ !

    <Location /vafee2/lounge/music/>
        Require all granted
    </Location>
    ProxyPass        /vafee2/lounge/music/ !

    # --- vafee2 lounge ---
    # /api/ の独立ルールは不要(lounge の JS はすべて /vafee2/lounge/api/ を使用)
    RequestHeader set X-Remote-User expr=%{REMOTE_USER}
    ProxyPass        /vafee2/lounge/ http://127.0.0.1:5000/
    ProxyPassReverse /vafee2/lounge/ http://127.0.0.1:5000/

    # --- 画像・動画ファイル配信 ---
    ProxyPass        /files/ http://127.0.0.1:5000/files/
    ProxyPassReverse /files/ http://127.0.0.1:5000/files/

    # --- 静的ファイル・CGI ---
    <Directory /mnt/data/docker/vafee-server/html>
        Options +ExecCGI +FollowSymLinks +Indexes
        AddHandler cgi-script .cgi
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog  ${APACHE_LOG_DIR}/vafee2_error.log
    CustomLog ${APACHE_LOG_DIR}/vafee2_access.log combined

</VirtualHost>

Apache 2 起動
sudo systemctl start apache2

設定ファイルのバックアップ用シンボリックリンク(バックアップ対象に含める
sudo ln -s /etc/apache2/sites-available/000-default.conf \
    /mnt/data/docker/vafee-server/apache-000-default.conf

■メール発信ソフト msmtp インストール

msmtp インストール
sudo apt install msmtp msmtp-mta -y

設定ファイル msmtprc の作成
sudo nano /etc/msmtprc
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log
account        gmail
host           smtp.gmail.com
port           587
from           ◯◯@gmail.com
user           ◯◯@gmail.com
password       (Gmailアプリパスワード16文字)
account default : gmail

Ubuntu 側のファイアウォール80番ポートを開ける
sudo ufw allow 80/tcp
sudo ufw reload

■Windowsで使用していたcgiファイル等の修正

CGIプログラムと設定ファイル(.cgi, .pl, .dat)だけをShift-JIS /CRLF⇒UTF-8 / LF 一括変換
cd /mnt/data/docker/nginx/html
sudo find . -name ".cgi" -o -name ".pl" -o -name "*.dat" | xargs -n 10 sudo nkf -w -Lu --overwrite

全ファイルの持ち主をユーザーに変え、読み書き権限を与える
sudo chown 33:33 .
sudo chmod 777 .

htmlファイルのヘッダーを一個一個変更
<......" CONTENT="text/html; charset=SHIFT_JIS">

<......" CONTENT="text/html; charset=UTF-8">

cgiファイルは、Windows ActivePerlで、動かしていたので、Ubuntu Perl用に 先頭の一行のヘッダーを一個一個変更
#!/usr/local/bin/perl

#!/usr/bin/perl

掲示板フォルダ全体の権限を読み書き可能にする
sudo chmod -R 755 /mnt/data/docker/vafee-server/html/

windows と違って、 Ubuntu は、cgiファイルの修正を行うとコマンドを打たないと表示されなくなる
chmod 755 /mnt/data/docker/vafee-server/html/vafee2/view25/view25.cgi
sed -i 's/\r//' /mnt/data/docker/vafee-server/html/vafee2/view25/view25.cgi
docker exec -it vafee-apache perl -c /var/www/html/vafee2/view25/view25.cgi

これで、自宅内での掲示板が復活した。
記事一覧