Ubuntu下部署Django
分类:Python 浏览:105 时间:2020-02-23 12:58

注意事项,不需要单独安装虚拟环境,如使用DjangoUeditor出现 render() got an unexpected keyword argument 'renderer'找到服务器下对应的boundfield.py文件注释掉报错行即可,pip3安装依赖过程中出现setuptools_scm错误则手动安装setuptools_scm模块即可

一、升级Python3和Pip3,之后使用的命令也需要注意,ubuntu中是自带了Python2的


1.1 使用curl -O或者wget 命令下载指定版本的python3 taz包,并解压

curl -O https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar zxvf Python-3.7.1.tgz

  

1.2 编译安装,如出现意外看具体错误信息,缺什么apt-get install 装什么

cd Python-3.7.1
./configure --with-ssl --prefix=/usr/local/python3
#安装依赖
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev
make 
sudo make install


1.3 添加软链接,需要先删除之前系统自带的Python3

rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3


1.4 将python目录加入到环境变量中

vim /etc/profile

#在文件的最末尾加入
export PYTHON_HOME=/usr/local/python3
export PATH=$PYTHON_HOME/bin:$PATH

 :wq 保存退出,使配置生效

source /etc/profile


二、部署


2.1 将项目文件传输到服务器,这里已blog作为项目名称并将文件放置/data/目录下

如果使用Windows操作系统,可以使用xshell xftp远程工具


2.2 安装项目所需依赖

pip3 install -r requirements.txt
#测试项目是否可以启动
python3 manage.py runserver


2.3 安装uwsgi

pip3 install uwsgi

在/data/目录下创建uwsgi的配置文件 blog.ini

[uwsgi]
; 端口号
socket = :8000

; 项目所在目录
chdir = /data/blog
module = blog.wsgi:application

; 启动一个master进程,来管理其余的子进程
master = true
processes = 2

;服务停止时自动移除unix Socket和pid文件
vacuum =true


2.4 启动uwsgi

uwsgi /data/blog.ini -d /data/blog.log --enable-threads


三、安装nginx


3.1 安装

apt-get install nginx


3.2 修改配置文件

vim /etc/nginx/sites-available/default

配置如下:

location / {
	include uwsgi_params;
	uwsgi_pass 127.0.0.1:8000;
}


location /static/ {
	alias /data/blog/static/;
}
	
location /favicon.ico {
	alias /data/blog/static/favicon.ico ;
}

:wq保存退出,注意setting.py中的DEBUG = False 改成 True 同时设置ALLOWED_HOSTS


3.3 重启nginx

nginx t #查看nginx配置是否正确
nginx -s reload #重启


四、访问


浏览器地址栏中输入http://服务器公网ip/进行访问


Django