【兰山问题】兰山小亭遇到的若干问题

1.如何在一台阿里云服务器下 搭建多个网站?

2.Uncaught TypeError: $.fn.placeholder is not a function

Paste_Image.png

注释掉报错位置之后的jquery script后,报错就没了,不知道为什么。


Paste_Image.png

3.Failed to load resource: the server responded with a status of 404 (Not Found) http://127.0.0.1:8000/favicon.ico

Paste_Image.png

后台也有报错信息,

[30/Apr/2017 07:02:12] "GET /favicon.ico HTTP/1.1" 404 3976
Not Found: /favicon.ico

解决方法:
在根urls.py中添加,

from django.views.generic import RedirectView
urlpatterns = [
  ...
  # Added at 20170430
    url(r'^^favicon\.ico$', RedirectView.as_view(url='static/site/v1/img/Kfavicon.ico'),name='go-to-favicon'),

]

其中,可以在网上生成ico图标,例如 http://www.faviconico.org/

Paste_Image.png

下面的code有无必要不确定,总之没加,也可以显示。

 <!--Added at 20170430-->
 <link REL="SHORTCUT ICON" HREF="{{ STATIC_URL }}site/v1/img/Kfavicon.ico">

4.The _imagingft C module is not installed

使用captcha生成验证码,部署到阿里云上后,验证码总是不显示,浏览器报错。度娘之后,网上说是因为缺少一个freetype的库,或者没有安装对应的图片和处理字体的包。解决办法就是先卸载PIL的包,然后安装需要的库,接着重装PIL。


Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

首先,如何卸载已安装的库?执行sudo pip freeze可以查询所有已安装的库;接着用sudo apt-get uninstall Pillow 去删除已经安装的库,进入安装路径下看,确实已经移除;然后,安装相应的库及PIL。

sudo apt-get install libjpeg-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install PIL
xxx@iZ25e4mkhq2Z:~$ sudo pip freeze
[sudo] password for xxx: 
Django==1.9.9
MySQL-python==1.2.5
Pillow==2.2.1
apt-xapian-index==0.45
argparse==1.2.1
chardet==2.0.1
colorama==0.2.5
django-ckeditor==5.1.1
django-crispy-forms==1.6.0
django-formtools==1.0
django-redis==4.4.4
django-reversion==2.0.6
django-simple-captcha==0.5.3
django-widget-tweaks==1.4.1
html5lib==0.999
httplib2==0.9.2
pbr==1.10.0
python-apt==0.9.3.5ubuntu1
python-debian==0.1.21-nmu2ubuntu2
qrcode==5.3
redis==2.10.5
requests==2.2.1
six==1.10.0
ssh-import-id==3.21
stevedore==1.17.1
uWSGI==2.0.13.1
urllib3==1.7.1
virtualenv==1.11.4
virtualenv-clone==0.2.6
virtualenvwrapper==4.7.2
wsgiref==0.1.2
xadmin==0.6.1
xxx@iZ25e4mkhq2Z:~$ sudo pip uninstall Pillow
Uninstalling Pillow:
  /usr/local/lib/python2.7/dist-packages/Pillow-2.2.1-py2.7-linux-x86_64.egg
Proceed (y/n)? y
  Successfully uninstalled Pillow

打开nginx和uwsgi的log,可以发现同样的报错:

/var/log/uwsgi/xxx.log:

Internal Server Error: /captcha/image/f822586d0b069cc9caa7f97e0093fbda20f26f8a/
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/Django-1.9.9-py2.7.egg/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.9.9-py2.7.egg/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django_simple_captcha-0.5.3-py2.7.egg/captcha/views.py", line 67, in captcha_image
    font = ImageFont.truetype(fontpath, settings.CAPTCHA_FONT_SIZE * scale)
  File "build/bdist.linux-x86_64/egg/PIL/ImageFont.py", line 242, in truetype
    return FreeTypeFont(font, size, index, encoding)
  File "build/bdist.linux-x86_64/egg/PIL/ImageFont.py", line 146, in __init__
    self.font = core.getfont(font, size, index, encoding)
  File "build/bdist.linux-x86_64/egg/PIL/ImageFont.py", line 42, in __getattr__
    raise ImportError("The _imagingft C module is not installed")
ImportError: The _imagingft C module is not installed
/var/log/nginx/error.log:
2017/05/01 14:09:24 [error] 13170#0: *24766 upstream prematurely closed connection while reading response header from upstream, client: 123.113.102.173, server: 123.57.231.214, request: "GET /captcha/image/f822586d0b069cc9caa7f97e0093fbda20f26f8a/ HTTP/1.1", upstream: "uwsgi://unix:///home/kai/workspace/TheBoat/TheBoat.sock:", host: "123.57.231.214", referrer: "http://123.57.231.214/blog/8/"

重新启动了uwsgi和nginx,页面加载正常。

xxx@iZ25e4mkhq2Z:~/yyy/zzz/uwsgi$ sudo uwsgi --ini TheBoat_uwsgi.ini
xxx@iZ25e4mkhq2Z:~/yyy/zzz/uwsgi$ ps -eaf|grep uwsgi
root      2578     1  5 13:08 ?        00:00:00 uwsgi --ini TheBoat_uwsgi.ini
root      2581  2578  0 13:08 ?        00:00:00 uwsgi --ini TheBoat_uwsgi.ini
root      2582  2578  0 13:08 ?        00:00:00 uwsgi --ini TheBoat_uwsgi.ini
root      2583  2578  0 13:08 ?        00:00:00 uwsgi --ini TheBoat_uwsgi.ini
root      2584  2578  0 13:08 ?        00:00:00 uwsgi --ini TheBoat_uwsgi.ini
xxx       2586  2533  0 13:08 pts/0    00:00:00 grep --color=auto uwsgi
Paste_Image.png

5. Illegal mix of collations

Paste_Image.png
Paste_Image.png

6. Ajax与comment提交时总报错

image.png
image.png

原因是:
1.Ajax期待的是JSON格式,误调用了render_to_response。应该调用render_json_to_response返回JSON格式。
return self.render_json_to_response(status=1, data={'html':res.rendered_content})
2.应该调用json.dumps,而不是json.dump。
return HttpResponse(json.dumps(data), content_type=self.content_type)

7. 如何在图片加载不成功的情况下,加载默认图片?

 <img class="ctavatar" src="{% gravatar_url comment.email %}" width="63" height="63">
  添加onerror属性,src指定默认图片地址。Django使用static标签。              
  <img class="ctavatar" src="{% gravatar_url comment.email %}" width="63" height="63" onerror="this.src='{% static 'site/v1/img/davatar.png' %}'">

8. 使用gravatar的时候,最后跳转的url总是加上“i2.wp.com”,然后报404错误。

image.png

推荐阅读更多精彩内容