20.多端项目上线部署(2)部署后端项目NewCenter到腾讯云服务器

2020-07-07 09:45:23 浏览数 (1)

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部署成功!

0 人点赞