zoukankan      html  css  js  c++  java
  • 阿里云 django的一次web维护记录

    首先, 丢给我一个阿里云的server的账号/password,之前没有玩过阿里云,想想应该也是ssh服务来远程登陆.

    环境:

    centos+nginx+uwsgi+python2.7+django.

    1. 首先看了下nginx和uwsgi的配置文件, 弄懂大概关系. 怎么使用能够參考django doc: 点击打开链接 . 而我主要參考帖子:点击打开链接,来确定问题的所在. 訪问的流程大概是:

    the web client <-> the web server <-> the socket <-> uWSGI <-> Python
    能够使用例如以下命令来执行uwsgi:

    uwsgi --ini mysite_uwsgi.ini

    极大的简化了uwsgi的配置过程,将配置都放在配置文件中面. 

    nginx的系统日志在位置:/usr/local/nginx/log/error.log里面,能够看到问题:mysite.sock找不到, 这个文件不须要管,上面的脚本会自己主动来处理,仅仅能说执行uwsgi这一步后面出了问题.详细什么问题,能够看看以下的解决方式.


    2. 弄懂了配置之后,開始解决主要问题:502 bad GateWay

    (1)将settings中的DEBUG设为True,也就是打开调试来执行;

    (2)可是,设置为False之后,就无法执行了,这里纠结了半天. 猜想是异常信息报告的级别不同导致执行的结果不一样.

    (3)执行终端会提演示样例如以下语句,有语法错误:

    if settings.DEBUG is False:

    稍作调整,就能够将成功打开首页的登陆界面.  搞定之后,再在开机启动项中加入执行服务,让开机server就能够自己主动启动(/etc/rc.local):

    #start the nginx
    /usr/local/nginx/sbin/nginx
    #start the uwsgi
    /usr/local/bin/uwsgi --ini /home/www/mysite/mysite_uwsgi.ini

    3. 登陆之后的一些问题

    注冊了一个账号,发现登陆之后会报错. 报错信息已经非常明显:

    UserInfo.views.editOrChack,unindent does not match any outer indentation level (views.py, line 41)
    对象的行处存在缩进问题,稍做改动就能够登陆进去.


    4. 登陆进去之后,某个页面打不开的问题.

    错误提示,能够定位问题是,url找不到匹配的问题,找到相应的控制器,查看代码,改动成例如以下代码就可以:

    def chackgender(req):
            key=req.session.get('username')
            existinfo=user_info.objects.filter(key__exact=key)
            if existinfo:
    
                    sex=user_info.objects.get(key__exact=key).gender
                    if sex=='female':
                            #return HttpResponseRedirect('/mysite/girlTestEdit/')
                            return HttpResponseRedirect('/girlTestEdit/')
                    else:
                            return HttpResponseRedirect('/boyTestEdit/')
                            #return HttpResponseRedirect('/mysite/boyTestEdit/')
            else:
                    #return HttpResponseRedirect('/mysite/editOrChack/')
                    return HttpResponseRedirect('/editOrChack/')


    5. 更新代码后uwsgi须要又一次又一次启动的问题:

    解决方式,參考: 点击打开链接

    思路就是每3s去自己主动又一次载入一次,在 wsgi.py中增加例如以下语句就可以:

    import uwsgi
    from uwsgidecorators import timer
    from django.utils import autoreload
    
    @timer(3)
    def change_code_gracefull_reload(sig):
        if autoreload.code_changed():
            uwsgi.reload()


    兴许假设还有问题的话,还会继续更新~


  • 相关阅读:
    C#中 @ 的用法
    ASP.NET页面间传值
    ASP.NET中常用的文件上传下载方法
    把图片转换为字符
    把图片转换为字符
    JavaScript 时间延迟
    Using WSDLs in UCM 11g like you did in 10g
    The Definitive Guide to Stellent Content Server Development
    解决RedHat AS5 RPM安装包依赖问题
    在64位Windows 7上安装Oracle UCM 10gR3
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5150347.html
Copyright © 2011-2022 走看看