0%

django线上部署

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进程
1
ps aux | grep uwsgi
(2)关闭uwsgi进程
1
pkill -f -9 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

解决方案:
1
终端执行命令:export LC_ALL=C

错误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