我无法连接到由 nginx 和 uwsgi 提供的烧瓶应用程序(searx 搜索引擎)。
我的网络服务器显示“502 Bad Gateway nginx”
这是我的 nginx 错误:错误日志:/var/log/nginx/error.log
[crit] 2688#2688: *4 connect() to unix:/run/uwsgi/app/searx/socket.sock failed
(2: No such file or directory) while connecting to upstream,
client: 216.186.XXX.XXX, server searx.mysite.com,
request: "GET / HTTP/1.1",
upstream: "uwsgi://unix:/run/uwsgi/app/searx/socket.sock:",
host: "searx.mysite.com"
所以我可以看到socket.sock和上游不一样。
这是我的 nginx.conf
user http;
worker_processes auto;
worker_cpu_affinity auto;
events {
multi_accept on;
worker_connections 1024;
}
http {
charset utf-8;
sendfile on;
tcp-nopush on;
tcp_nodelay on;
server_tokens off;
log_not_found off;
types_hash_max_size 4096;
client_max_body_size 16M;
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
include /etc/nginx/sites-enabled/*;
}
这是我的 searx.conf,我指定 .sock 文件所在的唯一位置:
/etc/nginx/sites-enabled/searx.conf
server {
listen 80;
server_name searx.mysite.com;
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/app/searx/socket.sock;
}
root /usr/local/searx/searx-src/searx;
location /static { }
}
当我查看我的套接字文件夹时,那里没有文件......
ls -alh /run/uwsgi/app/searx/
total 0
drwxr-xr-x 2 searx searx 40 Jul 22 05:02 .
drwxr-xr-x 3 root root 60 Jul 22 05:02 ..
我用来运行 uwsgi 的命令是:
exec chpst -u http env LC_ALL=en_US.UTF-8 /usr/bin/uwsgi --master --die-on-term --emperor /etc/uwsgi/sites
我用来运行 nginx 的命令:
exec chpst -u root /usr/bin/nginx -c /etc/nginx/nginx.conf -g "daemon off;"
这是我的 searx uwsgi 文件
/etc/uwsgi/sites/searx.ini
[uwsgi]
project = searx
uid = searx
gid = searx
base = /usr/local/searx/searx-src
chdir = %(base)/%(project)
env = SEARX_SETTINGS_PATH=/etc/searx/settings.yml
disable-logging = false
workers = 2
chmod-socket = 666
vacuum = true
single-interpreter = true
master = true
plugin = python
lazy-apps = true
enable-threads = true
module = searx.webapp
route-run = fixpathinfo:
virtualenv = /usr/local/searx/searx-pyenv
pythonpath = %(base)
# NOTE: if I add or delete the next line there is no difference in output
socket = /run/uwsgi/app/searx/socket.sock
更多挖掘:在我设置的 searx.ini中,在日志disable-logging = false
中找到了这个:/var/log/uwsgi/current
thunder lock: disabled (you can enable it with --thunder-lock
bind(): Permission denied [core/socket.c line 230]
Wed July 22 15:05:31 2020 - [emperor] curse the uwsgi instance searx.ini (pid: 3320)
Wed July 22 15:05:31 2020 - [emperor] removed uwsgi instance searx.ini
所以我的 searx.ini 或者我怎么称呼它肯定有问题?
我不确定您可能需要哪些其他信息,但很高兴根据需要更新问题。我已经在这几天了,所以我非常感谢你能提供的任何帮助。
发现问题。回答谷歌后代...
当然是文件权限:
usermod -a -G http searx
chgrp -R http /usr/local/searx
chmod -R g+w user/local/searx
chgrp -R http /run/uwsgi/app/searx
chmod -R g+w /run/uwsgi/app/searx