在 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@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users