阿里云部署Django主要注意事项

(1)virtualenv 报错 os 没有 PathLike属性

阿里云ubuntu16.0服务器默认python版本分别是2.7.12,3.5.2,而PathLike是在python 3.6时才被加入的属性,因此需要再装个python3.6,并把3.6版本的作为默认版本。

  • 直接sudo apt-get install python3.6肯定是会出错的
image-20201220191549387

需要执行:

apt-get install python-software-properties  
apt-get install software-properties-common
  • 然后尝试
add-apt-repository ppa:jonathonf/python-3.6
image-20201220191820767

发现依然报错,

执行

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6

(参考链接:https://blog.csdn.net/qq_35975447/article/details/106795935)

image-20201220192258420

安装OK

  • 修改python 命令默认为python3.6

先查看python命令指向

ls -l /usr/bin | grep python 
image-20201220192550974

指向python2.7

然后删除原有python软链接

rm /usr/bin/python 

然后建立python到python3.6新的软链接

ln -s /usr/bin/python3.6 /usr/bin/python 

image-20201220192755490

OK

  • 安装python3的pip
apt-get install python3-pip

建立pip到pip3的软连接

ln -s /usr/bin/pip3 /usr/bin/pip 

(2)安装virtualenv需要注意

为确保是python3.6的pip工作,用

python3.6 -m pip install virtualenv

进入虚拟环境:

source env/bin/activate

(3)Nginx注意事项

  • 安装
sudo apt-get update
sudo apt-get upgrade
  • 启动
sudo service nginx start
  • 修改配置

进入\etc\nginx\sites-available

创建onefile(任意名称)

sudo vi onefile

onefile中写入:

server {
  charset utf-8;
  listen 80;
  server_name xxxxxx;  # 改成你的 IP

  location /static {
    alias /home/sites/file/project_name/collected_static;#file是服务器中建立的文件名
  }

  location /media {
    alias /home/sites/file/project_name/media; #file是服务器中建立的文件名,project_name是项目名称
  }

  location / {
    proxy_set_header Host $host;
    proxy_pass http://unix:/tmp/xxxx.socket;  # 改成你的 IP
  }
}
  • 将刚写的配置文件链接到/etc/nginx/sites-enabled非常重要
sudo ln -s /etc/nginx/sites-available/onefile /etc/nginx/sites-enabled
  • 全局暂停
sudo nginx -s stop

(4)Gunicorn

  • 安装
python3.6 -m install gunicorn
  • 重启Nginx
sudo service nginx reload
  • 启动Gunicorn
gunicorn --bind unix:/tmp/xxxx.socket project_name.wsgi:application

如果有域名,就把套接字中的IP地址换成域名;wsgi前是项目名。sudo service nginx reload只重载配置文件,sudo service nginx restart重启整个服务。

(5)后期运维

git pull origin master
python3 manage.py collectstatic
python3 manage.py migrate
# 重启 gunicorn
pkill gunicorn
gunicorn --bind unix:/tmp/xxxx.socket project_name.wsgi:application

注意重启gunicorn命令应在虚拟环境下的项目文件中进行。
如果更改了Nginx的配置文件,还需要重启Nginx服务。

posted @ 2020-12-20 23:05  JohnYang819  阅读(115)  评论(0编辑  收藏  举报