Table of Contents

Apache网页服务器

Apache 2

所有的具体配置可以到谷歌云看:服务器配置

Apache开启Webdav服务

最标准的流程,推荐使用Apache 反向代理


总览

  1. 一般配置文件都在/etc/apache2/,网站文件都在/var/www/
  2. apache2在启动的时候自动读取/etc/apache2/apache2.conf文件的配置信息,不同的配置项按功能分布在不同的文件中,然后被Include包含到apache2.conf这个主配置文件中,方便管理。就是说事实上apache2主配置文件只有一个,即apache2.conf,其他的都是被include进来的
  3. Apache 2有两个配置文件夹,sites-enabled和sites-available。sites-available中存放的是网站的配置文件,sites-enabled中存放的是网站配置的链接(链接到sites-available中的配置文件)

安装和管理

安装:sudo apt-get install apache2
管理:管理系统服务

# 一些基础的管理Apache 2的命令
# 没有root/sudo权限的话,基本是不可能管理Apache 2的
sudo systemctl restart apache2
sudo service apache2 restart # 是这样写么?不太确定了...

为配置文件创建链接

mail_gzher@wikihost-us:/etc/apache2/sites-enabled$ sudo ln -s ../sites-available/com.gzher.cv.conf com.gzher.cv.conf

配置首页文档

DirectoryIndex home.html

绑定多个域名

sited-enabled里面放置多个配置文件就可以了

不配置域名,通过IP直接访问

直接在ServerName那里填IP就可以了

<virtualhost *:80>
    ServerName 115.28.85.69:80
    <location></location>
    Order Allow,Deny
    Deny from all
</virtualhost>

简短总结:一个HTTP模板网站

上述记录了一些核心操作,现在实操一下,创建一个简单的绑定域名的HTTP网站

  1. 安装apache2 配置防火墙等 重启服务 确保可以通过IP访问到 Welcome 页面
  2. 【以下操作可能都需要 root 权限,不要忘记】
  3. 创建网站目录:mkdir /var/www/mywebsite
  4. 在该目录中创建一个测试页面:随便一个HTML文件就可以,默认叫作index.html
  5. 创建网站的配置文件并编辑(参考下面配置模板,记得去掉注释):/etc/apache2/sites-available/mywebsite.conf
  6. 启用配置
    1. 也就是上述的「为配置文件创建链接」,为我们的配置文件在sites-enabled中创建链接
    2. apache2提供了a2ensitea2dissiteapache2ctl等命令辅助,可以了解一下
  7. 修改文件权限:chown -R www-data:www-data /var/www/mywebsite(注意,只能用在Debian系)
  8. 重启服务
  9. 修改域名的DNS记录
    1. 添加 A 记录:【主机记录(Name)是@,@表示这个域名本身】指向服务器的公网 IP 地址
    2. 如果希望www.mydomain.com也能访问到的话(非顶级域名的话不用太在意,不设置也行)【尚未测试】
      1. 方案1:增加 A 记录【主机记录(Name)是www】指向同一个IP
      2. 方案2:增加 CNAME 记录【主机记录(Name)是www】指向mydomain.com

/etc/apache2/sites-available/mywebsite.conf配置模板

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    # 修改为实际域名,是不是顶级域名不重要
    ServerName mydomain.com
    # 修改为实际域名,如果是顶级域名,这个建议写上(相应的上面也要多加一条DNS记录)
    # 如果不是,这个不写也行,看需求
    # 主要是,需不需要 www.mydomain.com 也能访问到
    ServerAlias www.mydomain.com
    DocumentRoot /var/www/mywebsite # 注意路径

    <Directory /var/www/mywebsite> # 注意路径
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

开启HTTPS(Rewrite)并安装证书

这一步的证书是手动申请的,自动申请证书可以参考:安装SSL证书

sudo a2enmod rewrite
sudo a2enmod ssl
# 80端口自动重定向到HTTPS
<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

# 注意端口号是443
# 启用SSL并安装证书
<VirtualHost *:443>
    ...
    SSLEngine on
    SSLCertificateFile /etc/ssl/certificate.crt
    SSLCertificateKeyFile /etc/ssl/private/private.key
    SSLCertificateChainFile /etc/ssl/ca_bundle.crt
</VirtualHost>

外链资料

  1. Apache2配置文件解读 https://www.cnblogs.com/Aurora-M/p/15619014.html (各个配置项解释)
  2. ubuntu apache2服务器配置 https://www.cnblogs.com/starof/p/4278370.html (流程完整,比较详细)
  3. apache配置Directory目录权限的一些配置 https://www.cnblogs.com/wuzhicms/p/6698174.html (主要是权限相关的内容,Wiki的权限相关的配置,可以参考一下这篇文章)
  4. Apache alias目录配置 https://www.cnblogs.com/bourneli/archive/2012/11/13/2767522.html (使用alias配置别名,区别于多域名/多站点)

静态网页配置文件模板(常用)

对于简单的静态网页,首先准备好你的资源(放在一个目录下)

然后使用一个基础的配置文件开启HTTP

<VirtualHost *:80>
    ServerName osakayaki.com
    ServerAlias www.osakayaki.com
    DocumentRoot /var/www/home

    <Directory /var/www/home>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/osakayaki.com_error.log
    CustomLog ${APACHE_LOG_DIR}/osakayaki.com_access.log combined
</VirtualHost>

然后申请证书(使用acme.sh,静态网站使用web root模式最简单) + 安装(注意证书统一安装到某个地方便于管理)

然后修改配置文件,配置HTTP到HTTPS的转发

<VirtualHost *:80>
    ServerName osakayaki.com
    ServerAlias www.osakayaki.com 

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    ServerName osakayaki.com
    ServerAlias www.osakayaki.com

    DocumentRoot /var/www/home/
    DirectoryIndex index.html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine                on
    SSLCertificateFile       /root/cert/osakayaki.com/cert.pem
    SSLCertificateKeyFile    /root/cert/osakayaki.com/key.pem
    SSLCertificateChainFile  /root/cert/osakayaki.com/fullchain.pem
</VirtualHost>