引言:
近期学习了python编程,然后学了一些Django框架做网站,在本机测试没有问题,一直想架设在一台服务器上,于是就在阿里云上租了一台服务器,找了一些教程,发现都有问题,尤其里面的Python项目管理器更是部署不成功,于是乎,经过自行研究,终于得法,分享如下:
一、测试环境
系统:centos 7.9
CPU:1核
内存:2G
二、安装宝塔面板
输入命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
后面会全自动完成,完成后跳出登录方式。
进入宝塔面板后,按提示框中模式一Nginx的方式安装组件,如果没有选也没有关系,在软件商店中把下图中的软件安装好。
三、创建站点及数据库
预先解析好域名,如果没有域名就填服务器的外部IP地址。然后创建站点。
创建好后,点击根目录,点击终端,进入当前目录下的终端(这点非常重要,很多不成功的原因就是在这里)
在网站目录下运行:
python3 -m venv venv
激活虚拟环境:
source venv/bin/activate
!!一下所有的服务器操作,都要在网站目录下,并且进入到虚拟环境!!
用宝塔面面板或者用xftp软件,将本地调试好的网站上传到服务器新建的目录中。
在本地电脑用命令将Python需要的环境进行安装
Pip freeze > requirements.txt
在服务器终端虚拟环境下安装依赖
pip3 install -r requirements.txt
如果pip3 install -r requirements.txt报错,就手动一个一个安装
pip3 install asgiref
pip3 install Django
----------一个一个来
安装uwsgi
pip3 install uwsgi
安装mysql数据库接口,执行
pip3 install mysqlclient
配置数据库连接
在项目包下找到setting.py,基本配置如下(因为测试不成功我改了几次,最后发现是host的原因,不知道具体原因是什么。:)
用系统里面的数据库工具增加需要的数据库
在终端虚拟环境下分别执行这两条命令
python3 manage.py makemigrations
python3 manage.py migrate
数据库需要初始数据的,自行导入数据。
四、配置项目
在项目目录创建一个deploy的文件夹,用来存放uwsgi的配置文件及日志文件!
我们在该文件夹下分别创建一个params的文件与uwsgi.ini的文件。
params中的内容如下:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
这个文件中的内容我们可以不用去深究是什么意思,直接拿去用就可以了,他主要的目的就是转发非静态文件请求到uwsgi服务!
uwsgi.ini文件中的内容如下:
[uwsgi]
socket = 127.0.0.1:8000
chdir = /www/wwwroot/witpen.cn
module = myobject.wsgi
home = /www/wwwroot/witpen.cn/venv
master = true
processes = 10
threads = 2
chmod-socket = 666
vacuum = true
daemonize = /www/wwwroot/witpen.cn/deploy/uwsgi.log
pidfile = /www/wwwroot/witpen.cn/deploy/uwsgi.pid
每一项的配置含义自己领悟一下,大家看情况修改为自己的即可!(可以参考别的网站对每行的定义)
uwsgi配置完成之后,去修改网站Nginx的配置文件!
主要一下要修改内容,其它都可以按上图来写,其中8000端口和uwsgi.ini配置对应,params和deploy文件夹内的对应。
到现在基本全配置完了。
五、启动服务
启动uwsgi(虚拟环境下)
uwsgi --ini deploy/uwsgi.ini
重启uwsgi
uwsgi --reload deploy/uwsgi.pid
停止uwgi
uwsgi --stop deploy/uwsgi.pid
总结:
无论是用宝塔还是服务器直接部署django,都逃不出配置Nginx使其正确加载静态文件,配置uwsgi,关联nginx与uwsgi这几个步骤,掌握了这几个核心步骤,无论何种方法,我们配置中设置的那几个文件均适用,部署也就变得更加容易和简单!
如果再有问题,欢迎留言讨论。