我刚刚安装了全新安装的Ubuntu 16.04,我无法使用Varnish来处理自定义配置文件,就像我可以使用Ubuntu 14.04一样。
I have read更改为/etc/default/varnish
无效,因为它使用systemd而不是init.d。
因此,该流程已更改为编辑/lib/systemd/system/varnish.service
:
[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd
[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
[Install]
WantedBy=multi-user.target
现在我想将default.vcl与自定义vcl交换(在我正在处理的git存储库中)。所以我将ExecStart中的行更改为-f /home/bozdoz/path/to/default.vcl
,重新加载守护程序并重新启动服务后出现以下错误:
>> sudo systemctl status varnish.service
● varnish.service - Varnish HTTP accelerator
Loaded: loaded (/lib/systemd/system/varnish.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2016-09-07 14:29:58 ADT; 5s ago
Docs: https://www.varnish-cache.org/docs/4.1/
man:varnishd
Process: 7588 ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /home/bozdoz/path/to/default.vcl
Main PID: 7588 (code=exited, status=2)
Sep 07 14:29:58 bozdoz-dell systemd[1]: Started Varnish HTTP accelerator.
Sep 07 14:29:58 bozdoz-dell varnishd[7588]: Error: Cannot read -f file (/home/bozdoz/path/to/default.vcl)
我尝试将自定义文件的权限更改为varnish或vcache所有,但都没有工作。我试过打开777的权限(仅用于测试目的),但它仍然失败。
另请注意,如果将自定义文件复制到/etc/varnish/default.vcl
,则清漆可以正常工作;问题是我希望文件位于git存储库中,但是varnish服务似乎无法访问自定义文件。
如何在systemd的另一个目录中使用自定义文件?
答案 0 :(得分:1)
我怀疑/home/bozdoz
或/home/bozdoz
和default.vcl
之间的一个中间目录上的权限正在为您提供此权限被拒绝错误。
如果我可以提出更一般的建议,那么修改/lib/systemd/system
中的服务文件是不好的做法。如果Varnish软件包更新,它可能会覆盖您的更改。相反,您有两种选择:
/lib/systemd/system/varnish.service
复制到/etc/systemd/system/varnish.service
并在那里进行更改/etc/systemd/system/varnish.service.d/override.conf
并在那里应用 delta override.conf
看起来像这样:
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /home/bozdoz/path/to/default.vcl -S /etc/varnish/secret -s malloc,256m
第一个语句清除现有的ExecStart指令,第二个语句设置一个新的指令。