当我们编写完成 Django 项目后,可以使用python manager.py runserver
来运行 Django 自带的服务器,但这只适合于测试环境使用,项目正式上线时,我们需要一个可以稳定并且持续的服务器,比如Apache, Nginx等。手里吃灰很久的树莓派终于可以派上用场了😂。
准备工作
- 烧写好系统的树莓派,我这里使用的是基于 Debian 的 Raspbian 系统,理论上后续搭建步骤在 Ubuntu/Debian 上都可以用。
注意 2016 年 11 月的新版本系统之后,树莓派默认禁用 SSH,你需要手动开启。如果没有屏幕,则在boot分区的根目录下创建一个名为 ssh 的文件即可开启
安装Nginx
sudo apt install nginx
安装完成后 nginx 服务器默认就启动了。
nginx 相关命令:
sudo service nginx start # 启动 nginx
sudo service nginx stop # 停止 nginx
sudo service nginx restart # 重启 nginx
安装uWSGI
pip install uwsgi
测试 uWSGI 是否正常:
建立一个 test.py 文件,内容如下:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
然后在命令行运行以下命令:
uwsgi --http :8000 --wsgi-file test.py
--http :8000
:表示使用的是 http 协议,端口号为8000
--wsgi-file test.py
:表示要运行的 wsgi 应用程序文件
更多参数使用请看:uWSGI 参数详解
uwsgi 命令运行后,在浏览器访问[服务器IP地址]:8000
,若看到Hello World
则表明 uWSGI 运行正常。
uWSGI配置
uWSGI 支持 ini、xml 等多种配置方式,这里以 ini 配置为例。在/var/www/html/[项目名]
目录下创建一个 mysite_uwsgi.ini 文件,内容如下:
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /var/www/html/your_project_name
# Django's wsgi file
module = your_project_name.wsgi
# the virtualenv (full path)
home = /path/to/virtualenv
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = :8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
# background the process & log
daemonize = /var/www/html/your_project_name/uwsgi.log
pidfile = /tmp/uwsgi.pid
然后就可以使用配置文件的方式来使用 uWSGI :
uwsgi --ini mysite_uwsgi.ini
nginx配置
新建一个名为mysite_nginx.conf
的文件,内容如下:
# mysite_nginx.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name .example.com; # 替换为你的机器的IP地址或者FQDN
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /path/to/your/mysite/media; # your Django project's media files - amend as required
}
location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
替换完成文件中的相关文件路径后,在/etc/nginx/sites-enabled
目录下,建立该文件的符号链接:
sudo ln -s ~/[你的文件所在路径]/mysite_nginx.conf /etc/nginx/sites-enabled/
重启 nginx 服务器:
sudo service nginx restart
最后,将 uWSGI 运行起来,就看到你的 Django 项目已经跑起来了。
参考文章: