jpuck / avhost
为 Ubuntu 创建 Apache 2.4 虚拟主机
Requires
- php: ^7.0
- jpuck/phpdev: ^1.5
- symfony/console: ^3.1
- symfony/process: ^3.1
Requires (Dev)
- phpunit/phpunit: ^5.6
This package is not auto-updated.
Last update: 2024-09-28 20:14:36 UTC
README
PHP 7 命令行 symfony console application,用于为 Ubuntu 创建 Apache 2.4 虚拟主机。
入门
这是一个 Apache 管理工具,其命令大多需要 sudo 权限。它可以写入到 /etc/apache2/sites-available/ 的配置文件,调用 a2ensite,并将 SSL 证书写入到 /etc/ssl/certs/ 和密钥写入到 /etc/ssl/private/,因此最好的安装方法是在 root 路径中某处。
下载最新版本,设置可执行权限,并将其移动到合适的路径。以下是一个单行命令:
curl -s -L https://github.com/jpuck/avhost/releases/latest | egrep -o '/jpuck/avhost/releases/download/[0-9\.]*/avhost.phar' | wget --base=http://github.com/ -i - -O avhost && chmod +x avhost && sudo mv avhost /usr/local/bin/
安装后,无需任何参数运行,即可查看命令列表
avhost
使用任何命令的 -h 标志来获取使用帮助
avhost <command> -h
故障排除
因为控制进程以错误代码退出,导致 apache2.service 的任务失败。请参阅 "systemctl status apache2.service" 和 "journalctl -xe" 以获取详细信息。
查看这些日志当然很有帮助,但这里有一些可能第一次并不明显的事情
没有 ssl
要运行加密的虚拟主机(通过 TLS(SSL)),您必须已启用 Apache 模块 mod_ssl。
sudo a2enmod ssl
没有重写
使用 avhost 的默认配置是在可用时将所有流量重定向到加密连接。这是通过 Apache 模块 mod_rewrite 实现的。
sudo a2enmod rewrite
这是出于许多原因所推荐的。如果需要,可以通过传递选项 --no-require-ssl 来覆盖它,这在某些情况下是有意义的,例如当使用可能会引起信任问题的自签名证书时。然而,由于您可以从 Let's Encrypt 获取免费的受信任证书,因此在公共网站上使用自签名证书就没有必要了。
403 禁止访问
如果您在某个随机的文件夹中创建了文档根,那么不仅该文件夹和文件必须是 Apache 可读的,而且直到根目录的每个目录都必须是 Apache 可执行的,以便它能够遍历文件系统。
例如,如果您的网站文件位于 /path/to/private/web/folder
# up to directory, folders executable chmod go+X / chmod go+X /path chmod go+X /path/to chmod go+X /path/to/private chmod go+X /path/to/private/web # in directory, folders executable, files readable chmod -R go+rX /path/to/private/web/folder
没有头部信息
为了添加如 X-Content-Type-Options "nosniff" 的保护,并删除 X-Powered-By 信息,您必须启用 Apache 模块 mod_headers。这还需要允许 跨源资源共享,而这并不是本项目所启用的 - 如果您想这样做,您必须手动定义您的 CORS 头部。
sudo a2enmod headers
没有压缩
出于性能原因,大多数文件类型都会被压缩,但您必须已启用 Apache 模块 mod_deflate。
sudo a2enmod deflate