因为我是用windows开发,这个部署上线真是相当折腾orz
这里我采用了nginx+django+uwsgi的方式,系统选用了阿里云的ubuntu16.04,用到的工具有Xshell 5和Xftp 5
第一步:安装nginx
当然是先更新系统了
apt-get update
上面是错误做法orz
sudo apt-get update
这才是正确的做法,因为我们最好不要在日常工作中使用root用户(但下面我会省去sudo 233)
接下来就是安装nginx了
apt-get install nginx
在ubuntu中,nginx的目录结构如下:
配置文件:/etc/nginx下;
启动程序文件:/usr/sbin/nginx下;
日志文件:/var/log/nginx/下,分别是access.log和error.log;
此外,/etc/init.d自动生成了启动脚本nginx。
nginx的操作
sudo /etc/init.d/nginx start # 启动
sudo /etc/init.d/nginx stop # 停止
sudo /etc/init.d/nginx restart # 重启
ps -ef | grep nginx # 查看进程
第二步:配置环境
首先安装virtualenv
pip install virtualenv
然后创建一个虚拟环境
virtualenv --no-site-packages web
接着,激活虚拟环境
source web/bin/activate
退出时使用deactivate
接下来安装必要的package,然后直接copy几个我改过源码的包。
通常直接拷贝在site-packages目录中就能用,前提是这个包依赖安装好,并且本身不需要编译。
最后,copy我们的项目目录到服务器中
第三步:安装、配置uwsgi
pip install uwsgi
然后,在django项目目录下创建配置文件myproject.ini
# Django-related settings
socket = :8001
# the base directory (full path)
chdir = /root/myproject
# Django s wsgi file
module = blog.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
启动uwsgi
uwsgi --ini uwsgi.ini
第四步:配置nginx
配置文件/etc/nginx/sites-enabled/default
server {
# the port your site will be served on
listen 8000; # 域名没备案,先用着8000端口吧
server_name 127.0.0.1; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /home/ubuntu/blog/media; # your Django project's media files - amend as required
}
location /static {
alias /home/ubuntu/blog/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
include uwsgi_params; # the uwsgi_params file you installed
uwsgi_pass 127.0.0.1:8001;
}
}
第五步:收集django静态、媒体文件(这一步可以事先完成)
把django自带的静态文件收集到同一个配置好的目录中,不然访问django的许多页面会找不到静态文件。
在项目目录中执行
python manage.py collectstatic
最后
启动uwsgi和nginx即可
大功告成了!