记录:如何将本地的django项目部署到腾讯云轻量应用服务器

如何将本地的django项目部署到腾讯云轻量应用服务器

记录一下在腾讯云服务器上成功部署网站的过程,方便以后查阅部署。
本次部署使用的是Ubuntu+uWSGI+nginx。数据库使用默认的数据库sqlite3

一、安装Ubuntu系统

1.1 重装系统

登录腾讯云后点击控制台,找到轻量应用服务器,进入概要界面后,在镜像点击重装系统,选择“基于操作系统镜像”→Ubuntu→Ubuntu 22.04 LTS→勾选“确认已了解…”点击确定。

1.2 修改密码

在概要界面内找到远程登录,密码/密钥登录,点击重置密码,输入密码后点击离线重置,勾选“已阅读…”,点击确认。

1.3 登录

点击“密码/密钥登录”下面的登录按钮,输入密码后进入命令窗口。
ubuntu@VM-8-11-ubuntu:~$

看到~$是系统使用者级别,如果遇到权限问题,看看命令行前面有没有添加sudo
如:sudo python3 xxxxx

1.4 更新系统

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get -y update
sudo apt-get install python-setuptools
sudo pip3 install --upgrade pip

二、django项目上传和修改

2.1 上传文件

使用FileZilla Client软件,把django项目从本地上传到服务器
在软件上输入
主机:公网ip
用户名:xxx
密码:***********
点击 "快速链接"按钮

界面的左边是本地文件,右边是服务器文件
在/home/ubuntu里右键创建两个文件夹“mypro”和“myenv”

将django项目拖到mypro文件夹内

2.2 修改settings.py文件

cd  /home/ubuntu/mypro/项目名称/xxx/  #含有settings.py的文件夹路劲
sudo vim settings.py

修改如下参数:

ALLOWED_HOSTS=['*']

按Esc键 输入:wq,保存退出文件

2.3 测试项目是否正常运行

cd /home/ubuntu/mypro/项目名称
python manage.py runserver

复制公网IP到浏览器查看网站运行情况

2.4 为后续步骤作准备

1、将项目static文件复制到项目根目录下

2、修改settings.py文件

cd  /home/ubuntu/mypro/项目名称/xxx/  #含有settings.py的文件夹路劲
sudo vim settings.py
DEBUG=FALSE
ALLOWED_HOSTS=['*']
STATIC_ROOT=os.path.join(BASE_DIR,'/home/ubuntu/mypro/xxx/static/') #'/home/ubuntu/mypro/xxx/static/'是项目根目录下的static文件夹的路径

3、记录第三方python库
在本地项目文件下进入cmd或进入命令窗口后cd到项目文件夹里面,输入一下命令

pip3 freeze>requirements.txt

将requirements.txt文件覆盖到云服务器原来的文件

三、虚拟环境

3.1 安装虚拟环境

sudo pip3 install virtualenv
cd
sudo virtualenv --python=python3 myenv

3.2 进入虚拟环境

source myenv/bin/activate

命令行会显示:
(myenv) ubuntu@VM-8-11-ubuntu:~$

3.3 安装第三方python库

sudo pip3 install -r requirements.txt

如果项目需要安装特定版本的python,在虚拟环境下安装

四、安装并配置uWSGI

4.1安装uWSGI

sudo apt-get install gcc
sudo apt-get install python3-dev
sudo pip3 install uwsgi

4.2测试uWSGI

cd到装有settings.py的文件夹内

cd /home/ubuntu/mypro/项目名称/xxx/  #含有settings.py的文件夹路劲
sudo vim  uwsgi.ini 

复制并修改配置参数

[uwsgi]
#直接做web服务器使用
http=0.0.0.0:9000
#项目目录
chdir=/home/ubuntu/mypro/xxx/
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=xxx/wsgi.py
processes=10
#使用nginx连接时使用
#socket=127.0.0.1:8001
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
vacuum=True

按Esc键,输入:wq,保存退出;
在腾讯云服务器中找到防火墙,添加规则,端口9000,确定
返回云服务器命令窗口,输入命令启动uwsgi

uwsgi --ini uwsgi.ini

输入公网IP :9000
访问网页,查看是否成功看到网页

关闭uwsgi

ps -ef|grep uwsgi #查看进程
kill -9 进程数字

4.3重新修改uwsgi.ini

cd /home/ubuntu/mypro/项目名称/xxx/  #确保在 含有uwsgi.ini 文件夹路劲里
sudo vim  uwsgi.ini 

修改 uwsgi.ini 参数

[uwsgi]
#直接做web服务器使用
#http=0.0.0.0:9000
#项目目录
chdir=/home/ubuntu/mypro/xxx/
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=xxx/wsgi.py
processes=10
#使用nginx连接时使用
socket=127.0.0.1:8001
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
vacuum=True

按Esc键,输入:wq,保存退出;

在腾讯云服务器中找到防火墙,把9000端口删除

五、安装和配置Nginx

5.1 安装Nginx

sudo apt-get install nginx

5.2 测试Nginx

在浏览器上输入公网IP + :80
浏览器会显示Welcome to nginx!

如果没有效果,请重启Nginx再试

systemctl restart nginx

输入服务器密码

5.3 复制uwsgi_params复制到项目根目录下

cd mypro/xxx

xxx需要替换,然后输入命令复制到项目根目录

sudo cp /etc/nginx/uwsgi_params .

查看uwsgi_params是否在文件夹里

ls

5.4 配置Nginx

cd /etc/nginx

查看文件夹里面是否有nginx.conf

ls

如果有则需要删除,输入命令

rm -rf nginx.conf

重新创建nginx.conf

sudo vim nginx.conf

输入以下参数:

user root;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    use epoll;
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include             /etc/nginx/conf.d/*.conf;

    upstream django {
    server 127.0.0.1:8001;
    }

    server { 
         listen       80 default_server;
         listen       [::]:80 default_server;
         server_name  111.230.107.243;
         charset      utf-8;

         location /static {
        #静态文件所在文件夹
        alias  /home/ubuntu/mypro/xxx/static;#项目文件根目录下static的路径
        }
        location / {
        uwsgi_pass django;
        #uwsgi_params 路径,已复制到项目根目录
        include /home/ubuntu/mypro/xxx/uwsgi_params;#项目文件根目录下uwsgi_params;的路径
        }
        }
}

按ESC键,输入:wq保存退出

5.5重启Nginx和uwsgi.ini

重启Nginx

systemctl restart nginx

输入服务器密码;

启动uwsgi

cd /home/ubuntu/mypro/项目名称/xxx/ #确保在 含有uwsgi.ini 文件夹的路劲里
uwsgi --ini uwsgi.ini

在浏览器输入公网IP查看情况,如果能打开网站,证明成功了。

若出现403,文件权限问题,在命令窗输入

chmod 777 -R /home/ubuntu/mypro

若出现404,请检查nginx和uwsgi配置文件的路劲是否正确
若浏览器找不到static文件,请检查nginx配置文件的static路劲是否正确

六、本地项目修改后

6.1上传到云服务器上

使用软件FileZilla Client,连接到服务器,将修改后的项目文件上传到云服务器,进行覆盖和添加

6.2重启uwsgi和Nginx

ps -ef|grep uwsgi #查看进程
kill -9 输入进程数字
cd /home/ubuntu/mypro/项目名称/xxx/ #确保在 含有uwsgi.ini 文件夹的路劲里
uwsgi --ini uwsgi.ini
systemctl restart nginx

查看网站是否正常运行

七、https证书

1、购买域名后,在腾讯云平台上找到我的域名,添加域名后解析映射IP。
2、在腾讯云平台上找到SSL证书,申请免费证书(一年)。
3、下载证书,需要是nginx的,然后解压文件,将xxx.key和xxx_bundle.crt文件上传到服务器/etc/nginx文件夹内。
4、打开nginx.conf,并修改参数

user root;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    use epoll;
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include             /etc/nginx/conf.d/*.conf;
    upstream django {
    server 127.0.0.1:8001;
    }

    server { 
       # listen       80 default_server;
       # listen       [::]:80 default_server;
       # server_name  111.230.107.243;
       # charset      utf-8;
            #SSL 默认访问端口号为 443
        listen 443 ssl;
        #请填写绑定证书的域名
        server_name xxx;
        #请填写证书文件的相对路径或绝对路径
        ssl_certificate /etc/nginx/xxx_bundle.crt; 
        #请填写私钥文件的相对路径或绝对路径
        ssl_certificate_key xxx.key;
        ssl_session_timeout 5m; 
        #请按照以下协议配置 
        ssl_protocols TLSv1.2 TLSv1.3;
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location /static {
        #静态文件所在文件夹
            alias  /home/ubuntu/mypro/xxx/static;
        }
        location / {
            uwsgi_pass django;
            #uwsgi_params 路径,已复制到项目根目录
            include /home/ubuntu/mypro/xxx/uwsgi_params;
        }
    }
}
              

八、其他:

sudo -i 可以进入root权限
logout 退出root权限

Nginx
-启动
systemctl start nginx
-停止
systemctl stop nginx
-重启
systemctl restart nginx
-开机启动
systemctl enable nginx

启动虚拟环境
source myenv/bin/activate
关闭虚拟环境
deactivate

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值