django线上部署
基于腾讯云服务器ubuntu+Django+uwsgi+nginx
由于懒得麻烦,我使用git将项目提交,并在ubuntu上使用git pull拉取来传项目至ubuntu服务器。避免传输文件的复杂操作。
1、安装 nginx
1
| sudo apt-get install python-dev nginx
|
2、安装 uwsgi
1
| sudo pip install uwsgi --upgrade
|
3、配置uwsgi
在项目中manage.py
同级目录下,生成一个mysite_uwsgi.ini
(mysite字段为项目名)
配置内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| # mysite_uwsgi.ini file [uwsgi]
# Django-related settings
socket = :8000 # 这里指的是本地端口,非外网端口,需与nginx内配置的一致
# the base directory (full path) chdir = /home/ubuntu/myWeb/mysite # 这里是django项目的根路径
# Django s wsgi file module = mysite.wsgi # 项目名.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
|
4、配置nginx
修改 /etc/nginx/nginx.conf
文件,在http
配置项内增加如下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| server { listen 80; # 这里是监听的对外端口,默认为80 server_name www.abc.com; # 这里是你申请的域名 charset UTF-8; access_log /var/log/nginx/mysite_access.log; # 日志文件,文件名为 项目名_access.log error_log /var/log/nginx/mysite_error.log; # 日志文件,文件名为 项目名_error.log
client_max_body_size 75M;
location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; # 注意,这里配置的端口8000,必须与上面uwsgi内的socket端口一致 uwsgi_read_timeout 2; } location /static { expires 30d; autoindex on; add_header Cache-Control private; alias /home/ubuntu/myWeb/mysite/static/; # 这里是static文件夹的路径 } }
|
5、启动uwsgi
确认当前uwsgi
进程关闭,然后启动
(1)查看uwsgi进程
(2)关闭uwsgi进程
(3)启动uwsgi
1
| uwsgi --ini mysite_uwsgi.ini (这里需要ini文件完整路径,或者cd到项目目录执行这行命令)
|
6、启动nginx
(1)启动命令
1
| sudo /etc/init.d/nginx start
|
(2)关闭命令
1
| sudo /etc/init.d/nginx stop
|
(3)重启命令
1
| sudo /etc/init.d/nginx restart
|
7、腾讯云 安全组配置
有个选项叫:放通22,80,443,3389端口和ICMP协议-201804141602585324
,对!就选这个!
8、额外写点域名购买配置的过程
(1)购买域名
直接在腾讯云购买域名,付完钱就ok了
(2)我的域名
好像要先添加解析吧,把你的域名和你服务器的外网ip绑定
然后如果看到服务状态不可用的话,你必须要实名认证
至于备案,我反正还木有成功,但是已经可以正常访问我的域名了
FAQ
错误1:locale.Error: unsupported locale setting
解决方案:
错误2:django线上部署后,admin样式丢失
解决方案:
1 2 3
| 1、setting.py中加上 STATIC_ROOT = os.path.join(BASE_DIR,'static') 2、python manage.py collectstatic
|
错误3:nginx: [emerg] “server” directive is not allowed here in E:\nginx-1.7.5/conf/nginx.conf:1
解决方案:
1
| 这是因为nginx.conf中的配置格式错误,本人造成这个错误是由于server配置写在了最外层,与http同级。正确的server配置应当写在http配置内
|
错误4:/etc/nginx/nginx.conf文件只读,不可修改
解决方案:
1 2 3
| 1、修改时先 sudo chmod 777 /etc/nginx/nginx.conf 2、修改配置 vim /etc/nginx/nginx.conf 3、修改完成后 sudo chmod 644 /etc/nginx/nginx.conf
|