将本地开发的django项目部署至linux上的uwsgi服务器,并配置nginx,完成基于ubuntu+nginx+uwsgi的上线运行。下面整理相关步骤。python
若是不想直接用python环境运行,则须要在服务器上安装并配置virtual env。若是直接用python环境,则可跳过这一步。linux
pip install virtualenv pip install virtualenvwrapper
须要配置环境变量,以能使用相关命令:nginx
在 ~下建立.bash_profile,添加以下内容:web
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace source /usr/local/bin/virtualenvwrapper.sh
而后运行命令:django
source ~/.bash_profile
配置完成。使用以下命令:ubuntu
mkvirtualenv its_name # 建立virtual env workon its_name # 切换到某个env下(若是不指定its_name)则是列出全部已有env deactive # 退出当前env rmvirtualenv its_name # 删除某个virtual env
首先在开发本地,须要导出pip依赖包列表。bash
pip freeze > plist.txt
将此文件放至服务器环境,并批量安装依赖。服务器
workon [虚拟环境名称] pip install -r plist.txt -i https://pypi.douban.com/simple # 注,这里使用豆瓣源安装,在国内下载速度比pip官方源快不少
须要修改settings.py文件,关闭debug模式。app
DEBUG = False ALLOW_HOSTS=['*',] #表示能够访问服务器的ip
安装:socket
pip install uwsgi
须要在django项目根目录(与manage.py同级目录)下,新建一个uwsgi.ini文件,写入相关配置:
[uwsgi] socket=外网ip:端口(使用nginx链接时,使用socket) http=外网ip:端口(直接作web服务器,使用http) chdir=项目根目录 wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录 processes=4 threads=2 master=True pidfile=uwsgi.pid daemonize=uswgi.log
能够启动uwsgi啦:
启动:uwsgi --ini uwsgi.ini 中止:uwsgi --stop uwsgi.pid 重启:uwsgi --reload uwsgi.pid
须要预先安装nginx:
apt install nginx
对nginx进行配置:
cd /etc/nginx/sites-available cp default default.bak vi default
可进行以下配置:
server{ # 根据自身须要使用80或443 listen 443; server_name search.codingcat.cn; # 能够配置域名ssl证书 ssl on; ssl_certificate /etc/nginx/ssl/search.codingcat.cn.crt; ssl_certificate_key /etc/nginx/ssl/search.codingcat.cn.key; location / { uwsgi_pass 127.0.0.1:8888; include uwsgi_params; } # 由于uwsgi下,静态目录没法访问,因此使用nginx来处理静态请求 # 这里是直接将static路径请求赚到了项目的static下 location /static { root /home/ubuntu/pythonweb/wesearch/; } }
备注:若是使用了django自带admin后台,admin的静态目录也没法访问,可依此方法配置/ static/admin 到django源码中的admin静态目录下,或者将admin目录拷贝到本身项目的static目录下。
启动nginx:
service nginx start service nginx stop service nginx restart