我正在尝试在 ubuntu 16.04 上安装 varnish,
我读了几篇文章,但都不起作用。从我读到的内容来看,从 ubuntu 15.04 开始,配置 varnish 的方式已经改变(因为 systemd)。
现在我遇到了一个真正混乱的情况,无法工作:
在/etc/default/varnish中:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
/etc/varnish/default.vcl(通常它指向指向 127.0.0 和端口 8080 的主机,但出于调试目的我将其修改为外部域)vcl 4.0;
# Default backend definition. Set this to point to your content server.
backend default {
.host = "www.varnish-cache.org";
.port = "80";
}
/etc/apache2/ports.conf
Listen 8080
grep -R 'ExecStart=/usr/sbin/varnishd' /etc/
/etc/systemd/system/varnish.service: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
/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
/etc/systemd/system/multi-user.target.wants/varnish.service: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
/lib/systemd/system/varnish.service:
GNU nano 2.5.3 Fichier : /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 :80 -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
service --status-all | grep varnish
[ - ] varnish
[ + ] varnishlog
[ + ] varnishncsa
之后
sudo service varnish stop
sudo service varnish start
清漆服务没有监听http://127.0.0.1:80/
,在重新启动之前,它监听了http://127.0.0.1:6081/
但不再工作...我不知道该做什么......
编辑:重启后,什么都不起作用,
如果我做 :
systemctl status varnish
● varnish.service - Varnish HTTP accelerator
Loaded: loaded (/etc/systemd/system/varnish.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/varnish.service.d
└─customexec.conf
Active: inactive (dead) since jeu. 2017-01-05 14:48:09 CET; 1s ago
Docs: https://www.varnish-cache.org/docs/4.1/
man:varnishd
Process: 5077 ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m (code=exited, status=0/SUCCESS)
Main PID: 5077 (code=exited, status=0/SUCCESS)
janv. 05 14:48:09 xubuntu-16 systemd[1]: Started Varnish HTTP accelerator.
service --status-all | grep varnish
[ - ] varnish
[ - ] varnishlog
[ - ] varnishncsa
如果我 sudo : varnishd -d -f /etc/varnish/default.vcl
,那么start
一切都会正常……直到我退出 cli
感谢@Gerald Schneider 的回复,问题已解决。我发布了我必须执行的步骤:
sudo apt remove varnish
sudo apt-get purge varnish
# I manually remove the 3 files in created in /etc/systemd/system/*
sudo apt install varnish
sudo nano /lib/systemd/system/varnish.service # put the rigth conf
sudo nano /etc/varnish/default.vcl #put the rigth conf
sudo systemctl daemon-reload
sudo service varnish restart
一切正常!魔法就在/lib/systemd/system/varnish.service
文件中,我发现的其他在线资源让我误以为它在别处,所以要小心在线(过时的)教程!
答案1
您还需要更改 systemd 服务定义中的 varnish 启动参数。您可以ExecStart
在服务定义文件中编辑以以下内容开头的行:
sudo vi /lib/systemd/system/varnish.service
但是,修改此文件的缺点是,它不会在软件包的未来更新中更新。或者,如评论中所建议的,您可以创建一个systemd 放入文件,这是向 systemd 定义添加设置的首选方式。
# create the drop in directory
sudo mkdir /etc/systemd/system/varnish.service.d
# create the drop in file. The name is irrelevant, as long as it ends in .conf
sudo vi /etc/systemd/system/varnish.service.d/mysettings.conf
在这里您只需添加您想要更改的设置,其他所有内容都将从默认定义文件中加载。
例子:
[Service]
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
这是默认线路,请根据需要进行更改
之后,告诉 systemctl 重新加载其配置文件并重新启动服务
sudo systemctl daemon-reload
sudo service varnish restart
Varnish 现在应该监听端口 80。
答案2
请注意,插件应该有一个空的 ExecStart=,否则启动服务时会出错(重复的 ExecStart)
sudo mkdir /etc/systemd/system/varnish.service.d
sudo nano /etc/systemd/system/varnish.service.d/varnishd.conf
和
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T <YOUR WEBSERVER IP>:8081 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m