[squid-users] Can't start Squid with workers via systemd on CentOS 7

段垚 duanyao at ustc.edu
Thu Mar 9 16:32:14 UTC 2017



在 2017/3/9 23:22, Amos Jeffries 写道:
> On 10/03/2017 3:57 a.m., Alex Rousskov wrote:
>> On 03/09/2017 07:00 AM, 段垚 wrote:
>>> I installed Squid 4.0.18 on CentOS 7 X86_84 according to
>>> http://wiki.squid-cache.org/KnowledgeBase/CentOS#Squid_Beta_release
>>>
>>> I add a line "workers 2" to `/etc/squid/squid.conf` (just a copy of
>>> `squid.conf.default`)
>>> and start squid via `systemctl start squid`, It seems squid is running,
>>> except that it is not listening to the port 3128 (confirmed by netstat).
>>>
>>> However, if I start squid in command line (`squid -sYC`), squid does
>>> listen to port 3128.
>>>
>>> There are some differences in `/var/log/squid/cache.log` for these two
>>> cases:
>>>
>>> * start via `systemctl start squid`:
>>>
>>>    2017/03/09 21:12:54 kid3| commBind Cannot bind socket FD 12 to [::]: (98) Address already in use
>>>    2017/03/09 21:12:54 kid2| commBind Cannot bind socket FD 21 to [::]: (98) Address already in use
>>>    2017/03/09 21:12:54 kid1| commBind Cannot bind socket FD 21 to [::]: (98) Address already in use
>>>
>>> * start via `squid -sYC`:
>>>
>>>    2017/03/09 21:19:28 kid1| Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 15 flags=1
>>>    2017/03/09 21:19:28 kid2| Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 15 flags=1
>>>
>>> The full logs are attached. Please help.
>> Most likely, your systemctl script for Squid is broken. I do not know
>> about CentOS 7 specifically, but many older scripts often start two
>> modern Squids at once due to various backward compatibility problems
>> with Squid startup interface and the way those scripts were written.
>> Study/log what that script does and you will probably find the answer to
>> your question.
>
> Please check that you are using the squid.service file provided with
> Squid-4 sources (under tools/systemd/squid.service). Remove the startup
> scripts or any squid.service file created for Squid-3 versions, they are
> usually wrong for Squid-4 with systemd.
The `squid.service` I used was shipped with the prebuild 4.0.18 rpm from
http://www1.ngtech.co.il/repo/centos/$releasever/beta/$basearch/

I uninstalled squid-3.5.20 rpm before install 4.0.18.
The `squid.service` content:

[Unit]
Description=Squid Web Proxy Server
Documentation=man:squid(8)
After=network.target

[Service]
Type=forking
LimitNOFILE=16384
PIDFile=/var/run/squid.pid
ExecStartPre=/usr/bin/mkdir -p /var/run/squid
ExecStartPre=/usr/bin/chown squid.squid /var/run/squid
ExecStart=/usr/sbin/squid -sYC
ExecReload=/usr/sbin/squid -kreconf
ExecStop=/usr/sbin/squidshut.sh
TimeoutStopSec=36
KillMode=none

[Install]
WantedBy=multi-user.target


Even if I replace it with the one under `tools/systemd/squid.service` of 
squid 4.0.18 source,
still no luck:

[Unit]
Description=Squid Web Proxy Server
Documentation=man:squid(8)
After=network.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/squid.pid
ExecStartPre=/usr/sbin/squid --foreground -z
ExecStart=/usr/sbin/squid -sYC
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed

[Install]
WantedBy=multi-user.target

>
> After that you will need to carefully check that any previous attempts
> to run Squid have been fully stopped and have not left any files (ie
> .pid) or /dev/shm sockets behind before attempting to start Squid again.

I checked that there are no `/run/squid.pid `, `/var/run/squid.pid ` and 
`/dev/shm/squid*` before starting squid.

There are still similar messages in `/var/log/squid/cache.log`:

2017/03/10 00:20:00 kid2| commBind Cannot bind socket FD 21 to [::]: (2) 
No such file or directory
2017/03/10 00:20:00 kid1| commBind Cannot bind socket FD 21 to [::]: (2) 
No such file or directory
2017/03/10 00:20:00 kid3| commBind Cannot bind socket FD 12 to [::]: (2) 
No such file or directory

>
> HTH
> Amos
>
> _______________________________________________
> squid-users mailing list
> squid-users at lists.squid-cache.org
> http://lists.squid-cache.org/listinfo/squid-users




More information about the squid-users mailing list