配置 Apache2 網站

正常來說,Apache的網站配置檔會在「/etc/apache2/sites-available」之下,因此可以為每個網站建立不同的配置檔。

配置HTTP (80 port)

編輯「/etc/apache2/sites-available/<your.domain.name>.conf

<VirtualHost *:80>
        # 配置網站資訊
        ServerName <your.domain.name>
        ServerAdmin admin@localhost
        DocumentRoot /var/www/<網站根目錄>

        # 配置LOG資訊
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        # 代理設定
        # ProxyPass / http://localhost:8080/                 # 導到http
        # ProxyPass / unix:/path/to/project/uwsgi/uwsgi.sock # 導到uwsgi

        # [可選] 配置Rewrite資訊(需要啟用mod_rewrite)
        #ReDirect any HTTP request to HTTPS
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

有些情況要啟用模組

若有啟用RewriteEngine,要啟用模組

sudo a2enmod mod_rewrite

若有啟用proxy,要啟用模組

# PROXY
sudo a2enmod proxy

# PROXY到HTTP
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http

# PROXY到uWSGI
sudo a2enmod proxy_uwsgi

若有啟用ssl,要啟用模組

sudo a2enmod ssl

配置HTTPS (SSL 443 port)

編輯「/etc/apache2/sites-available/<your.domain.name>-ssl.conf

<IfModule mod_ssl.c>

    <VirtualHost *:443>
        # 開啟SSL
        SSLEngine On
        SSLCertificateFile /path/to/you_domain_ssl_cert/cert.pem
        SSLCertificateKeyFile /path/to/you_domain_ssl_cert/privkey.pem
        SSLCertificateChainFile /path/to/you_domain_ssl_cert/fullchain.pem
        # 網站設定
        ServerName <your.domain.name>
        ServerAlias <your.domain.name>
        DocumentRoot /var/www/<網站根目錄>
        # 網站日誌
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

</IfModule>

編輯「/etc/apache2/ports.conf」打開apache監聽port

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

打開防火牆

ufw allow 443
sudo ufw reload

配置目錄存取規則

配置目錄設定,編輯「/etc/apache2/apache2.conf

<Directory /var/www/<網站根目錄> >
        Options Indexes FollowSymLinks # 若想禁止存取檔案,改為Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

啟用配置

查看已啟用的conf檔

ls -la /etc/apache2/sites-enabled

啟用網站配置並重置伺服器(ssl和非ssl若有多個conf檔,多個都要啟用)

# 啟用網站配置
sudo a2ensite <your.domain.name>
sudo a2ensite <your.domain.name>-ssl

# 重新載入Apache2配置
sudo systemctl reload apache2
# 重啟Apache2
sudo systemctl restart apache2
# 停止Apache2
sudo systemctl stop apache2
# 啟動Apache2
sudo systemctl start apache2