一、创建虚拟环境
1、安装工具包
pip install virtualenv
# 包管理工具
pip install virtualenvwrapper
2、确认安装成功
virtualenv --version
出现版本号则安装成功
3、创建一个文件夹用于存放虚拟环境
比如我在~目录即home目录创建 .virtualenvs来统一管理所有的虚拟环境。则直接在~目录执行命令:
mkdir .virtualenvs
或
mkdir /root/.virtualenvs
使用 ls -al 可查看是否创建成功。
4、创建虚拟环境
进入.virtualenvs目录,执行命令:mkvirtualenv 虚拟环境的名称
二、部署
1、将项目上传到服务器
2、进入虚拟环境。
workon 虚拟环境名称
如图则进入成功
3、安装项目所需依赖包
pip install -r requirements.txt
至此,项目所需的依赖全安装在了改虚拟环境下。
4、编写uwsgi.ini文件
进入项目目录,创建文件:uwsgi.ini。文件内容如下
[uwsgi]
#端口 记得先查看socket端口有没有占用 命令:lsof -i:端口号
socket = 127.0.0.1:32592
# django项目绝对路径
chdir = /root/项目名称
# 模块路径(项目名称.wsgi)可以理解为wsgi.py的位置
#module = 项目名称.wsgi
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file = 项目名称/wsgi.py
# 允许主进程
master = true
#最多进程数
processes = 1
threads = 4
listen = 1024
# 退出时候回收pid文件
vacuum = true
#日志大小配置500M
log-maxsize = 500000000
# 保存启动之后主进程的pid
pidfile = uwsgi.pid
# 设置缓存
buffer-size = 40000
#记录日志配置 logs文件夹需已创建
daemonize = /root/logs/uwsgi.log
#配置虚拟环境
virtualenv = /root/.virtualenvs/项目的虚拟环境名称
#允许多线程
enable-threads = true
preload = true
lazy-apps = true
5、编辑nginx配置文件nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# another virtual host using mix of IP-, name-, and port-based configuration
#
# 支付端口
server {
# 设置网站运行端口
listen 81;
# 如有多个项目部署,这里的server_name需区别开来
server_name localhost;
location / {
include uwsgi_params;
# 此处为uwsgi.ini的socket的值
uwsgi_pass 127.0.0.1:32592;
index index.html index.htm;
client_max_body_size 35m;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 静态文件目录
location /static/ {
alias /root/项目名/static/;
index index.html index.htm;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
6、检测nginx配置文件有没有错误
nginx -t # 校验默认的配置文件nginx.conf
如图,配置成功
7、启动项目
进入项目目录:
启动uwsgi:uwsgi --ini uwsgi.ini
启动nginx:nginx (如果修改了配置,重启就好: nginx -s reload)
8、查看日志:tail -f -n 10 /root/logs/uwsgi.log
三、制作脚本启动
NAME="uwsgi"
echo "killing all by uwsgi"
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "killed $id"
done
# NAME="nginx"
# echo "killing all by nginx"
# echo $NAME
# ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
# echo $ID
# for id in $ID
# do
# kill -9 $id
# echo "killed $id"
# done
# #重启NGINX
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx
# 下拉最新代码 此操作必须保证项目之前是clone下来的,否则会报错
cd /root/项目名称
# echo "最新代码下拉"
git pull origin master
# 启动代码
echo "启动UWSGI"
# uwsgi --reload uwsgi.pid
uwsgi --ini uwsgi.ini
sleep 1