参考:https://blog.youkuaiyun.com/eric_sunah/article/details/62894126
参考博文有一些细节没有提出来,我这边写一下自己的搭建过程,顺便总结一下
安装准备
- 在服务器上安装nginx
- 直接sudo apt-get install nginx
- 说明:我这边安装的是1.14版本的,配置文件在/etc/nginx/conf.d/*.conf
- 安装uwsgi:
- pip install uwsgi
- 将项目放在一个文件夹,假设项目的根目录是:/opt/mysite/(请注意在以下进行替换)
- (建议项目要用的pip包用virtualenv进行管理,我的virtual目录名叫venv)项目的virtualenv的目录则是在/opt/mysite/venv
项目配置
- 对根目录下的settings.py文件进行修改,添加
DEBUG = False
ALLOWED_HOSTS = ['*']
- 创建配置文件:vim /etc/nginx/conf.d/my.conf
upstream django {
server 127.0.0.1:7777;
}
server {
listen 8888;
server_name localhost;
index index.html index.htm;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location /static {
alias /opt/epss/static;
} # 请求的static目录
location /templates {
alias /opt/epss/templates;
} # 请求的templates目录
location / {
uwsgi_pass django;
include /opt/epss/uwsgi_params;
}
}
- 说明:
- 将nginx的8888端口下的所有请求导入到uwsgi的之中
- uwsgi的socket的端口则为7777
- 在项目根目录下创建uwsgi_params文件,文件内容为:
uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REQUEST_SCHEME $scheme; uwsgi_param HTTPS $https if_not_empty; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;
- 然后配置uwsgi,用socket7777端口启动Django项目
- 在项目根目录下边创建my.ini文件,为uwsgi的配置文件
*文件内容为:
- 在项目根目录下边创建my.ini文件,为uwsgi的配置文件
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /opt/mysite/
# Django's wsgi file
module = mysite.wsgi
# the virtualenv (full path)
home = /opt/mysite/venv/
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 1
# the socket (use the full path to be safe
socket = :7777
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
daemonize = /opt/mysite/log/uwsgi.log
- 说明
- 文件中指定了项目的根目录,项目的wsgi文件位置,项目的virtualenv位置,指定了socket端口
- 有一个daemonize = /opt/mysite/log/uwsgi.log,(之前需要在根目录创建log文件夹)如果在debug的时候可以把这个去除,这样的话日志会输出在控制台上。备注:如果有这个参数,uwsgi在后台运行,否则在终端交互运行
运行
- uwsgi --ini /opt/mysite/my.ini
- 如果ini里边有日志文件路径则在后台运行,没有的话则在终端交互运行(如果成功的话会显示有一个app启动了)
- 重新启动nginx加载配置文件:nginx -s reload