[关闭]
@sww4718168 2015-05-23T14:31:21.000000Z 字数 2059 阅读 6229

Nginx + uWsgi + web.py 搭建LNMP(python)服务器

Nginx uWsgi python web.py


debian jessie 中搭建基于LNMP(python)的博客平台
于2014年10月19日21:39分

部分引用自:推酷
兼容ubuntu14.04
这是本博客第一篇博文,也是本博客后台的运行程序的基本环境。
本博客的源代码即将开源于github

安装Nginx (官网)

  1. $ sudo aptitude install nginx-full
  2. # 手动编译需要PCRE-DEVEL支持

安装easy_install

官网

安装uWsgi (官网)

  1. $ sudo easy_install uwsgi

安装web.py (官网)

  1. $ sudo easy_install web.py

安装MySQL (mysql-python)

  1. $ sudo aptitude install mysql-server
  2. $ sudo easy_install mysql-python

配置uWsgi

  1. $cat /etc/uwsgi.ini
  1. [uwsgi]
  2. #使用动态端口,启动后将端口号写入以下文件中
  3. socket = /tmp/uwsgi_vhosts.sock
  4. #也可以指定使用固定的端口
  5. #socket=127.0.0.1:9031
  6. pidfile = /var/run/uwsgi.pid
  7. logdate = true
  8. logto = /var/log/uwsgi.log
  9. master = true
  10. vhost = true
  11. gid = www-data
  12. uid = www-data
  13. chdir = /var/www/blog # 程序所在目录
  14. module = hello # 主启动文件名称(不含.py,且需要有可执行权限)
  15. #性能相关的一些参数,具体内容查看官网文档
  16. workers = 50 # 启动时生成的进程数
  17. max-requests = 5000
  18. limit-as = 512

更多可参考:uwsgi官方文档

配置Nginx

  1. server {
  2. listen 8080; # Nginx监听端口
  3. server_name localhost; # 虚拟主机的域名
  4. root /var/www/blog; # 程序根目录
  5. index index.html index.htm;
  6. access_log /var/log/nginx/mysite_access.log;
  7. error_log /var/log/nginx/mysite_error.log;
  8. location / {
  9. #使用动态端口
  10. # nginx需要有读取权限
  11. uwsgi_pass unix:///tmp/uwsgi_vhosts.sock;
  12. #uwsgi_pass 127.0.0.1:9031;
  13. include uwsgi_params;
  14. uwsgi_param UWSGI_SCRIPT index;
  15. uwsgi_param UWSGI_PYHOME /var/www/blog;
  16. uwsgi_param UWSGI_CHDIR /var/www/blog;
  17. }
  18. }

测试代码

  1. $sudo vim /var/www/blog/hello.py
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import web
  4. urls = (
  5. '/t', 'test', #测试
  6. '/', 'home'
  7. )
  8. app = web.application(urls, globals())
  9. #返回wsgi接口
  10. # 需要在main外面,uwsgi调用不会执行main
  11. application = app.wsgifunc()
  12. class test:
  13. '测试'
  14. def GET(self):
  15. # 开发测试用
  16. referer = web.ctx.env.get('HTTP_REFERER', 'http://google.com')
  17. client_ip = web.ctx.env.get('REMOTE_ADDR')
  18. host = web.ctx.env.get('host')
  19. fullpath = web.ctx.fullpath
  20. user_agent = web.ctx.env.get('HTTP_USER_AGENT')
  21. data = ""
  22. data += 'Client: %s<br/>\n' % client_ip
  23. data += 'User-agent: %s<br/>\n' % user_agent
  24. data += 'FullPath: %s<br/>\n' % fullpath
  25. data += 'Referer: %s<br/>\n' % referer
  26. return data
  27. def POST(self):
  28. pass
  29. class home:
  30. '根目录请求的处理'
  31. def GET(self):
  32. return "Hello Web.py"
  33. def POST(self):
  34. return self.GET()
  35. if __name__ == "__main__":
  36. app.run()
  1. $ sudo chmod +x /var/www/blog/hello.py # 一定记得加权限

启动Nginx和uWsgi

  1. $ sudo nginx
  2. $ uwsgi /etc/uwsgi.ini &

浏览器中测试

http://localhost:8080
http://localhost:8080/t

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注