基础环境
阿里云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
参考:
https://www.cnblogs.com/mosson/p/12485517.html
https://www.cnblogs.com/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 https://www.python.org/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/python3
ln -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 -V
pip3 -V
pip换源
cd ~
mkdir .pip
cd .pip
vim pip.conf
#进入后添加以下内容,保存退出.
[global]
index-url = https://mirrors.aliyun.com/pypi/simple
安装virtualenv虚拟环境
- 安装virtualenvwrapper
pip3 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
参考:
https://www.cnblogs.com/angelyan/p/12919941.html
Ubuntu可参考:https://blog.csdn.net/qq_23832313/article/details/83578836
- 安装
yum install epel-release -y
yum 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;
# 域名或服务器ip
server_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