如何解决无法将清漆放在端口80上
我刚刚在Ubuntu 18.04上安装了 Varnish 5.2.1 ,并且我遵循tutorial尝试将其放在端口80上,但是它不起作用。
我首先以sudo service varnish stop
停止Varnish。
然后我编辑/etc/varnish/default.vcl
来更改目标端口:
backend default {
.host = "127.0.0.1";
.port = "8080";
}
然后我创建一个/etc/systemd/system/varnish.service.d/customexec.conf
来指定Varnish运行的端口:
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
然后我重新启动Varnish:
sudo systemctl daemon-reload
sudo service varnish status
但是当我检查sudo service varnish status
的状态时,我会看到:
● varnish.service - Varnish HTTP accelerator
Loaded: loaded (/lib/systemd/system/varnish.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/varnish.service.d
└─customexec.conf
Active: inactive (dead) since Thu 2020-09-03 11:55:26 BST; 37s ago
Docs: https://www.varnish-cache.org/docs/4.1/
man:varnishd
Process: 20459 ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256
Main PID: 20459 (code=exited,status=0/SUCCESS)
Sep 03 11:55:24 me systemd[1]: Started Varnish HTTP accelerator.
Sep 03 11:55:25 me varnishd[20459]: Debug: Platform: Linux,4.15.0-115-generic,x86_64,-junix,-smalloc,-hcritbit
Sep 03 11:55:25 me varnishd[20462]: Platform: Linux,-hcritbit
Sep 03 11:55:25 me varnishd[20459]: Debug: Child (20474) Started
Sep 03 11:55:25 me varnishd[20462]: Child (20474) Started
Sep 03 11:55:25 me varnishd[20462]: Child (20474) said Child starts
Sep 03 11:55:25 me varnishd[20462]: Manager got SIGINT
Sep 03 11:55:25 me varnishd[20462]: Stopping Child
Sep 03 11:55:26 me varnishd[20462]: Child (20474) died signal=15
Sep 03 11:55:26 me varnishd[20462]: Child cleanup complete
当我在默认端口6081上运行时,Varnish可以很好地工作,但是当我使用上述步骤更改端口时,它会不断消失。我已经停止了所有其他Web服务器(如Apache),因此端口80上没有任何运行可能与Varnish发生冲突的情况。
我不确定从哪里可以调试出什么问题了。有谁知道为什么会这样?
解决方法
我找到了解决方法。
不要将这一行放在/etc/systemd/system/varnish.service.d/customexec.conf
中:
ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
我改用这行:
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
较新的命令是我在sudo service varnish status
成功运行后发现的命令。
我不确定官方文档为什么一开始不包含-j unix,user=vcache -F
部分,但是由于某种原因,这是我需要使用来使Varnish工作的命令的默认部分。
这是docs中的含义:
-
-j <jail[,jailoptions]>
:指定要使用的屏蔽机制。 -
-F
:请勿分叉,在前台运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。