Python3+django2项目部署到阿里云Linux(CenterOS7)服务器上完美部署

Python3+django2项目部署到阿里云Linux(CenterOS7)服务器上完美部署

一、准备工作

1.将你本地项目这样设置,以免上传到服务器以后不方便修改。

a.修改settings.py文件

此处将DEBUG设为False,用于生产环境,设置[ ‘ * ‘ ]为了让任意ip访问。

DEBUG = False

ALLOWED_HOSTS = ['*']

这里务必将静态文件设置STATIC_ROOT,这样设置用于生产环境。
为什么要使用STATIC_ROOT呢?
是因为当你设置中DEBUG为True时,django会自动为你静态文件代理,不过当DEBUG为False时,意味着你要进入生产环境,此时Django就不在为你提供静态文件服务了。那么,你就必须使用STATIC_ROOT来指明你的静态文件在哪里,就像MEDIA_ROOT一样。

STATIC_URL = '/static/'
STATIC_ROOT = [os.path.join(BASE_DIR, '/static/')]

到此,Django的settings.py文件修改完成

b.导出当前项目开发所需依赖库
pip install freeze > requirements.txt

这样就得到了当前项目的所有依赖库了,就可以打包项目,准备上传到服务器了,如果你有类似于Finalshell这样的传输文件的工具,就可以不用打包,直接将文件夹拖拽过去。先不急传过去,我们先准备好服务器上项目需要的虚拟环境。

2.在服务器上配置项目所需要的虚拟环境

这里推荐两种虚拟环境配置方法:

1.pyenv+virtualenv

可以参考这篇文章Python+pyenv+virtualenv环境配置

2.virtualenv+virtualenvwrapper

这个可以看看这个环境配置

3.创建虚拟环境

这里我就用第一种方式创建了
1.

pyenv virtualenv python版本号 虚拟环境名

2.切换到虚拟环境

pyenv activate env36   #env36是你创建的虚拟环境名

(env36) python@ubuntu:/myproject/blog$ # (env36)表示该项目处于虚拟环境中

到此虚拟环境配置完成,我们将项目文件上传到服务器,

4.进入你的项目文件,

如图,

在虚拟环境下执行这个命令,安装项目所有依赖库

pip install -r requirements.txt

如果发生如下错误:

在这里插入图片描述
解决方案:
1.

yum install mysql-devel
pip3 install mysqlclient   # 或者 pip install mysqlclient

再次安装就不会报错了
如果遇到xadmin报错
使用 vim requirements.txt 删除xadmin这一行
再执行安装就应该不会报错了。

到这,我们就要将我们本地的mysql数据库迁移到云服务器的数据库了。最简单的办法就是利用mysql数据库可视化工具navicat进行数据传输。具体的操作,点我的头像看相关文章。

迁移完数据库就可以运行一下项目,看能否运行。

python manage.py runserver

不管能不能运行都Ctrl+C 退出,开始接下来的步骤,如发生path类型错误,检查自己的django版本是否是2.0以上。

二、开始配置服务器

1.安装nginx服务器
添加源

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装nginx

yum install -y nginx

启动Nginx并设置开机自动运行
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

测试,在浏览器中输入localhost,看缺省网站

然后 uws服务器

pip install uwsgi

1.执行下面命令修改nginx服务器配置文件

进入这个目录

cd /etc/nginx/

如图:
在这里插入图片描述
将nginx.conf 备份一份
然后vim 打开 nginx.conf
添加如下配置!!!注意第一行是 是 user root !!!!

user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

然后 切换目录进入cong.d文件

cd /etc/nginx/conf.d/

2. 新建一个配置文件,你的域名.conf

例如:

vim www.orochimaru.cn.conf

3. 参照如下配置,修改成你自己的配置

server {
    listen       80;
    server_name  www.orochimaru.cn;    # www.orochimaru.cn 修改成你的域名

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    root /root/pythonPerject/blog;   #  项目文件路径

        location /upload {
                alias /root/pythonPerject/blog/media/upload;
                # 上传(媒体)文件的路径
        }

    location /static {
        alias /root/pythonPerject/blog/static;
		# 静态文件路径
    }

        location / {
        include  /etc/nginx/uwsgi_params;
        uwsgi_pass localhost:8001;     #  监控的端口
    }
 }

4. 进入你的项目夹,配置uwsgi.ini文件

如图:
在这里插入图片描述

新建一个uwsgi.ini文件
添加如下配置:

[uwsgi]
# 使用nginx连接时 使用
socket = 0.0.0.0:8001

# 直接作为web服务器使用
#http = 0.0.0.0:8000
# 配置工程目录
chdir = /root/pythonPerject/blog

# 配置项目的wsgi目录。相对于工程目录
wsgi-file = blog/wsgi.py

#配置进程,线程信息
processes = 4

threads = 10

enable-threads = True

master = True

pidfile = uwsgi.pid

daemonize = uwsgi.log

到此nginx+uwsgi配置完成。
我们重启nginx服务器
nginx -s reload
在当前目录下执行

在这里插入图片描述
uwsgi --ini uwsgi.ini

如果在这出现 错误!请仔细核对你的uwsgi配置文件,如果配置文件对,依然起不了,请手动输入配置文件。

这样你就启动了该项目在,浏览器 就可以访问了。

三、阿里云服务器部分设置

1.记得去解析域名。
2.记得开放端口。
3.如遇无法发送SMTP邮件,请点击头像,查看相关文章,。

看了这么多。,点个赞,加个关注呗。谢谢,。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值