1.项目准备
1.在settings.py中
代码语言:javascript复制STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# STATICFILES_DIRS = (
# os.path.join(BASE_DIR, 'static'),
# )
代码语言:javascript复制DEBUG = False
ALLOWED_HOSTS = ["*"]
2.生成requirements.txt
代码语言:javascript复制pip freeze >requirements.txt
3.将项目打包成.zip包
2.上传项目包
1.使用FileZilla连接腾讯云服务器,并上传NewCenter.zip包
3.在云服务器解压zip包
1.使用Xshell连接服务器
clear清屏
2.解压zip包
代码语言:javascript复制sudo -i
cd /home/ubuntu
ls
unzip NewCenter.zip
4.创建虚拟环境
1.查看当前系统下python3的版本
代码语言:javascript复制python3 -V
#当前环境下python3是python3.6.8
2.创建虚拟环境
在ubuntu目录下做这些操作
代码语言:javascript复制#安装虚拟环境
apt-get install python3-venv
y
#在当前目录下,创建一个python3.6的虚拟环境,取名为env36
python3 -m venv env36
. env36/bin/activate
#进入虚拟环境
#退出虚拟环境 deactivate
3.在虚拟环境中安装依赖库
代码语言:javascript复制ls
cd NewCenter
pip3 install -r requirements.txt
5.测试并收集静态文件
1.运行项目:
代码语言:javascript复制python manage.py runserver 0.0.0.0:8000
bug:
报错了
原因:
因为Mysql数据库新建的时候,所有大写字母都变成了小写,但是在项目配置文件中,数据库的名字中还是用的大写字母,而在ubuntu系统中,是区分大小写的,导致在连接数据库时报错。
这种情况下,在构建项目数据库的时候,就用了小写字母的情况下,是不会出现报错的。
所以只要将项目配置中与连接数据库相关的配置代码中的NewCenter,改成newcenter,即可。
解决:
Ctrl C,退出。
代码语言:javascript复制ls
cd NewCenter/
ls
代码语言:javascript复制vim settings.py
# 英文输入环境下,敲 i 键,进入插入模式
#上下左右键移动光标,将连接数据库相关的代码中的‘NewCenter’修改为‘newcenter’
#英文输入环境下,敲Esc键,输入:wq 保存退出
然后再重新启动项目:
代码语言:javascript复制cd /home/ubuntu
cd NewCenter
python manage.py runserver 0.0.0.0:8000
2.在安全组打开8000端口
3.浏览器访问:
代码语言:javascript复制http://公网IP:8000/xadmin/
浏览器效果图:
4.退出运行状态:
代码语言:javascript复制Ctrl键 C键
5.收集静态文件:
代码语言:javascript复制python manage.py collectstatic
注意,虽然收集了静态文件,但是这个时候,就算重启项目,从浏览器访问,依然是没有样式的。
6.安装uwsgi
1.安装uwsgi到真实(非虚拟环境)环境下
代码语言:javascript复制#退出虚拟环境
deactivate
cd ..
apt install python3-pip
y
apt-get install -y python3-dev
pip3 install uwsgi
2.使用uwsgi启动项目
代码语言:javascript复制uwsgi --chdir /home/ubuntu/NewCenter --home /home/ubuntu/env36 --http :8000 --module NewCenter.wsgi
浏览器访问:
代码语言:javascript复制http://公网IP:8000/xadmin/
3.退出运行状态
代码语言:javascript复制Ctrl键 C键
4.通过uwsgi通过ini执行运行项目
1.创建ini文件
代码语言:javascript复制cd NewCenter/
mkdir newcenter_uwsgi
cd newcenter_uwsgi/
vim newcenter.ini
在英文输入下点击i键进入输入状态,输入:
代码语言:javascript复制[uwsgi]
#项目目录
chdir=/home/ubuntu/NewCenter
#wsgi目录
module=NewCenter.wsgi:application
#虚拟环境
home=/home/ubuntu/env36
master=true
processes=1
socket = 0.0.0.0:9000
vacuum = True
daemonize=yes
点击【Esc】键,输入:wq,保存退出
2.通过执行ini文件启动项目命令
代码语言:javascript复制uwsgi --ini /home/ubuntu/NewCenter/newcenter_uwsgi/newcenter.ini
注意:这里所谓的启动,通过浏览器是访问不到的。
7.安装配置Nginx
1.安装Nginx
代码语言:javascript复制cd /home/ubuntu/
apt-get install nginx
y
2.配置Nginx
1.删除default:
代码语言:javascript复制#防止错误,先把default文件给删除了
cd /etc/nginx/sites-available/
rm default
ls
cd /etc/nginx/sites-enabled
ls
rm default
ls
2.新建配置文件:
代码语言:javascript复制cd /etc/nginx/sites-available/
vim newcenter.conf
3.编辑内容:
代码语言:javascript复制i #进入编辑状态
内容
代码语言:javascript复制server{
listen 8000;
server_name 公网IP;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /home/ubuntu/NewCenter/static;
}
location /media {
alias /home/ubuntu/NewCenter/media;
}
location / {
uwsgi_pass 127.0.0.1:9000;
include /etc/nginx/uwsgi_params;
}
}
保存退出:
代码语言:javascript复制Esc键 输入:wq 回车 #保存退出
4.建立软链接
代码语言:javascript复制cd /etc/nginx/
ln -s /etc/nginx/sites-available/newcenter.conf /etc/nginx/sites-enabled/newcenter.conf
ls sites-enabled/
代码语言:javascript复制nginx -t #查看Nginx 运行情况
service nginx restart #重启Nginx
注意 如果报错:
代码语言:javascript复制Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
查看端口8000是否占用:
代码语言:javascript复制netstat -apn|grep :8000
查看与uwsgi相关进程
代码语言:javascript复制ps -aux|grep uwsgi
停止uwsgi
代码语言:javascript复制sudo pkill -f uwsgi -9
5.通过nginx反向代理访问
1.解决权限问题:
代码语言:javascript复制chmod -R 777 /home/ubuntu
2.如果因为报错停止过uwsgi,则需要再启动一次
代码语言:javascript复制uwsgi --ini /home/ubuntu/NewCenter/newcenter_uwsgi/newcenter.ini
3.重启nginx
代码语言:javascript复制nginx -t #查看Nginx 运行情况
service nginx restart #重启Nginx
浏览器访问:
代码语言:javascript复制http://公网IP:8000/xadmin/
效果图:
后端项目NewCenter部署成功!