我已经在NGINX上部署了我的应用程序。而且我的error.log充满了:
upstream timed out (110: Connection timed out) while reading upstream, client: 10.107.46.176, server: myApp, request: "GET /myApp/Home/index.load HTTP/1.1", upstream: "uwsgi://unix:///tmp/web2py.socket:", host: "myApp.eng.home.com", referrer: "http://myApp.eng.home.com/"
我已经部署了Postgres数据库。这就是index.html页面的外观:
<div class="clicks">{{=LOAD(c='Home',f='index',extension='load',ajax=True,timeout=30000,times=3)}}
{{pass}}
</div>
这是index.load页面:
{{=numHits}}
这是我的Home.py控制器:
def index():
numHits = db(db.opStatus.id > 0).count()
return dict(numHits=numHits)
这在火箭服务器上运行良好,只有在NGINX出现故障的情况下。请为此提供帮助。
web2py.ini
$ cat /etc/uwsgi/web2py.ini
[uwsgi]
socket = /tmp/web2py.socket
pythonpath = /home/www-data/web2py/
mount = /=wsgihandler:application
processes = 4
master = true
harakiri = 60
reload-mercy = 8
cpu-affinity = 1
stats = /tmp/stats.socket
max-requests = 2000
limit-as = 512
reload-on-as = 256
reload-on-rss = 192
uid = www-data
gid = www-data
touch-reload = /home/www-data/web2py/routes.py
cron = 0 0 -1 -1 -1 python /home/www-data/web2py/web2py.py -Q -S myApp -M -R scripts/sessions2trash.py -A -o
no-orphans = true
uwsgi-emperor.conf
/etc/init$ cat uwsgi-emperor.conf
# Emperor uWSGI script
description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [06]
##
#remove the comments in the next section to enable static file compression for the welcome app
#in that case, turn on gzip_static on; on /etc/nginx/nginx.conf
##
#pre-start script
# python /home/www-data/web2py/web2py.py -S welcome -R scripts/zip_static_files.py
# chown -R www-data:www-data /home/www-data/web2py/*
#end script
respawn
exec uwsgi --master --die-on-term --emperor /etc/uwsgi --logto /var/log/uwsgi/uwsgi.log
emperor.uwsgi.service
cat /etc/systemd/system/emperor.uwsgi.service
[Unit]
Description = uWSGI Emperor
After = syslog.target
[Service]
ExecStart = /usr/local/bin/uwsgi --ini /etc/uwsgi/web2py.ini
RuntimeDirectory = uwsgi
Restart = always
KillSignal = SIGQUIT
Type = notify
StandardError = syslog
NotifyAccess = all
[Install]
WantedBy = multi-user.target
我通过以下方式启动服务: sudo服务emperor.uwsgi start
答案 0 :(得分:0)
由于我的声誉不允许评论您的问题,因此我不得不滥用回答部分,以免遇到麻烦:
自从我使用NGINX部署web2py应用程序以来,所有问题都基于uWSGI的错误配置。因此,我的首要建议是检查您的uWSGI installation and configuration。尤其要检查emperor.uwsgi.service,uwsgi / web2py.ini和uwsgi-emperor.conf。
此外,可能还有另一个web2py安装目录,默认情况下假定该目录为“ / home / www-data / web2py。在这种情况下,您必须调整nginx / sites-available / web2py。
最后,检查已安装web2py的用户。必须在nginx / nginx.conf
中正确配置该用户希望这些提示可以帮助您解决问题。如果没有,请如上所述发布您的配置文件。
其他信息:
感谢您提供配置文件。我已经将它们与我的配置进行了比较,看起来还不错。
但是我有点困惑你手动启动皇帝。在我的配置中,这是由/ etc / nginx / sites-available / web2py中配置的Nginx服务器完成的,如下所示:
# file /etc/nginx/sites-available/web2py
server {
listen 80;
server_name $hostname;
###to enable correct use of response.static_version
location ~* ^/(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
alias /home/www-data/web2py/applications/$1/static/$2;
expires max;
### if you want to use pre-gzipped static files (recommended)
### check scripts/zip_static_files.py and remove the comments
# include /etc/nginx/conf.d/web2py/gzip_static.conf;
}
###
###if you use something like myapp = dict(languages=['en', 'it', 'jp'], default_language='en') in your routes.py
#location ~* ^/(\w+)/(en|it|jp)/static/(.*)$ {
# alias /home/www-data/web2py/applications/$1/;
# try_files static/$2/$3 static/$3 =404;
#}
###
location / {
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix:///tmp/web2py.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
###remove the comments to turn on if you want gzip compression of your pages
# include /etc/nginx/conf.d/web2py/gzip.conf;
### end gzip section
### remove the comments if you use uploads (max 10 MB)
#client_max_body_size 10m;
###
}
}
server {
listen 443 default_server ssl;
server_name $hostname;
ssl_certificate /etc/nginx/ssl/web2py.crt;
ssl_certificate_key /etc/nginx/ssl/web2py.key;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_ciphers ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
keepalive_timeout 70;
location / {
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix:///tmp/web2py.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
###remove the comments to turn on if you want gzip compression of your pages
# include /etc/nginx/conf.d/web2py/gzip.conf;
### end gzip section
### remove the comments if you want to enable uploads (max 10 MB)
#client_max_body_size 10m;
###
}
###to enable correct use of response.static_version
location ~* ^/(\w+)/static(?:/_[\d]+\.[\d]+\.[\d]+)?/(.*)$ {
alias /home/www-data/web2py/applications/$1/static/$2;
expires max;
### if you want to use pre-gzipped static files (recommended)
### check scripts/zip_static_files.py and remove the comments
# include /etc/nginx/conf.d/web2py/gzip_static.conf;
}
###
}
请特别注意行和行
uwsgi_pass unix:///tmp/web2py.socket;
我将 .socket 标记为特殊,但不记得为什么。不确定我可能在安装脚本中错过了它。
这可以解决您的问题吗?
最好的问候 克莱门斯