基础环境
阿里云centos7
部署架构
nginx + uwsgi
nginx提供静态文件服务和反向代理;
uwsgi充当Web服务器;
部署过程
修改项目的配置文件,配置收集静态文件之后存放的目录
STATIC_URL = '/static/'# 配置静态文件存放目录STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'static_files')
收集项目的静态文件
python manage.py collectstatic
生成项目依赖文件目录
pip3 freeze > requirements.txt
安装python3和pip3
参考:
/mosson/p/12485517.html
/fsy12604/p/12354865.html
系统升级
yum update
安装依赖
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel zlib1g-dev zlib*
下载python3
wget /ftp/python/3.7.0/Python-3.7.0.tar.xz
解压
tar -xvJf Python-3.7.0.tar.xz
创建安装目录
mkdir -p /usr/local/python3
编译安装
cd Python-3.7.0 ./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl make && make install
创建软链接
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3# virtualenvwrapper 命令依赖virtualenv 所以要为virtualenv创建一个软链接ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv
检查是否安装成功
python3 -Vpip3 -V
pip换源
cd ~mkdir .pipcd .pipvim pip.conf#进入后添加以下内容,保存退出.[global]index-url = /pypi/simple
安装virtualenv虚拟环境
安装virtualenvwrapperpip3 install virtualenvwrapper
配置环境变量
vim ~/.bashrc添加以下内容# 配置virtualenv的同意管理目录export WORKON_HOME=/Envs# 网上都说用which python3 显示的路径(/usr/local/python3),但是多次尝试都不行,最后改成了,python3解释器所在的位置就可以了# VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 这个应该也行,因为前面步骤7做了软链接# export VIRTUALENVWRAPPER_VIRTUALENV=/Users/mosson/Library/Python/3.7/bin/virtualenv #如果出现找不到 virtualenv 就把这行也加上export VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/bin/python3 # 执行的virtualenvwrapper安装脚本(脚本就在安装python目录下的bin目录) source /usr/local/python3/bin/virtualenvwrapper.sh
刷新生效
source ~/.bashrc
虚拟环境管理
# 创建虚拟环境(默认使用python2)mkvirtualenv 虚拟环境的名字# 创建指定python版本的虚拟环境mkvirtualenv -p python3解释器所在的位置 虚拟环境存放的目录(默认是在/Envs)# 进入(激活)虚拟环境workon 虚拟环境的名字# 退出虚拟环境deactivate# 查看已有的虚拟环境lsvirtualenv
拉取项目并测试
# 拉取项目git clone -b dev 项目地址# 进入刚才创建的虚拟环境worken triton-website-web# 安装项目依赖的环境pip install -r requirements.txt# 进入项目根目录并测试python manager.py runserver 0.0.0.0:8000
安装并配置uwsgi
安装uwsgi# 安装(注意该操作在虚拟环境外)pip3 install uwsgi
配置uwsgi,在项目根目录创建uwsgi.ini,内容如下
#添加配置选择[uwsgi]#配置和nginx连接的socket连接socket=0.0.0.0:9000#配置项目路径,项目的所在目录chdir=/root/Workspace/Projects/Work/triton-website/CMS#配置wsgi接口模块文件路径wsgi-file=CMS/wsgi.py#配置虚拟文件的路径home=/root/venv/triton-website-env#配置启动的进程数processes=4#配置每个进程的线程数threads=2#配置启动管理主进程master=True#配置存放主进程的进程号文件pidfile=uwsgi.pid#配置dump日志记录daemonize=uwsgi.log#配置热加载py-autoreload=1
使用uwsgi启动项目
uwsgi --ini uwsgi.ini
查看运行状态
ps aux | grep uwsgi或netstat -tunlp | grep 9000
查看日志
tail -fn 50 uwsgi.log
安装nginx
安装参考:
/angelyan/p/12919941.html
Ubuntu可参考:/qq_23832313/article/details/83578836
yum install epel-release -yyum install nginx -y
查看安装路径
whereis nginx
修改配置:vim /usr/local/nginx/conf/nginx.conf
http {include mime.types;default_type application/octet-stream;# 前端服务server {# nginx对外提供服务的端口listen 8080 default_server;listen [::]:8080 default_server;# 域名或服务器ipserver_name 101.132.167.60;location / {root /home/triton/workspace/projects/triton-website/dist; #该路径是vue build后的dist的路径index index.html; #照抄}# error_page 404 /404.html;#location = /40x.html {# }# error_page 500 502 503 504 /50x.html;#location = /50x.html {# }}# 后端服务server {# 前端访问API的端口listen 8000;server_name localhost;location / {include uwsgi_params;uwsgi_pass 0.0.0.0:10002; # uwsgi服务地址,和uwsgi.ini中socket配置一致uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间}location ^~ /admin/ {uwsgi_pass 0.0.0.0:10002;include uwsgi_params;}location /static {alias /home/triton/workspace/projects/triton-website/static_files; # 指明静态文件的位置}location /media {alias /home/triton/workspace/projects/triton-website/CMS/CMS/media; # 配置媒体文件的位置}}}
重启nginx
serveice restart nginx或者# 查看nginx运行的进程号netstat -tunlp | grep 8080# 杀死nginx进程kil -9 PID# 启动./nginx