云服务器uWSGI+Django+nginx部署项目
一.相关知识了解
Django
一个基于python的开源web框架,请确保自己熟悉它的框架目录结构。
uWSGI
一个基于自有的uwsgi协议、wsgi协议和http服务协议的web网关
nginx
常用高性能代理服务器
二.服务器环境配置
升级更新apt-get
apt-get update
查看python版本
python -V
如果python版本过低就升级python
下载python安装包
解压
tar -zxvf Python-3.6.1.tgz
进入解压后的目录
cd Python-3.6.1
编译
make
安装
make install
配置pip 一般不需要
apt-get install python-pip
apt-get install python3-pip
查看pip安装的文件
pip list
手工安装相关环境
安装django
pip install django
指定版本安装
pip install django==1.11
安装pymysql
pip install pymysql
自动化安装
拾取本地模块
pip freeze > piplist.txt
将文件上传到服务器,确认环境安装成功,pip安装成功
执行安装命令
pip install -r piplist.txt
数据库安装[安装mysql数据库]
apt-get install mysql-server
三.项目操作
1.打包上传项目文件
解压项目
unzip ***.zip
tar -xvcf ***.tar.gz
2.连接数据库
进入项目/settings.py修改配置文件,确认账号
+密码
和服务器内一致
创建数据库,名称需要和settings.py中的数据库名一致
如果数据库有修改先同步脚本
python manage.py migrations
同步数据库数据
python manage.py migrate
有些项目需要启动数据,注意这些数据必须上传到服务器数据库内
3.收集静态文件
在项目主目录下建立一个文件夹
mkdir static_file
在settings.py中增加静态文件配置项
STATIC_ROOT = /项目绝对路径/static_file
执行命令,收集静态文件
python manage.py collectstatic
需要格外注意路径问题!!!!
四.项目启动问题
安装uwsgi
pip install uwsgi
1.uwsgi初步启动
简易启动
--file=项目/wsgi.py --http=0.0.0.0:8000 --static_map=/static
写配置文件启动
[uwsgi]
http=0.0.0.0:8000
#启用端口
chdir=/home/myblog
#指定运行的目录
wsgi-file=myblog/wsgi.py
#载入wsgi-file文件
processes=4
#开启进程数
threads=2
#开启线程数
master=true
#启用主进程管理
pidfile=uwsgi.pid
#指定记录主进程的文件
vacuum=true
#服务器关闭前清理环境
daemonize=uwsgi.log
#指定记录日志文件
log-maxsize=6000
#指定日志大小KB
static-map=/static=static_file
#静态文件目录
启动命令
uwsgi --ini uwsgi.ini
关闭
uwsgi --stop uwsgi.pid
查看
ps -ef|grep uwsgi
查看帮助
uwsgi -h(--help)
重启
uwsgi --reload uwsgi.pid
查看uwsgi启用的进程号
more uwsgi.pid
2.nginx+uwsgi分布式联合启动
安装nginx
apt-get install nginx
修改uwsgi配置文件
[uwsgi]
scoket=127.0.0.1:8000
chdir=/home/myblog
wsgi-file=myblog/wsgi.py
processes=4
threads=2
master=true
pidfile=uwsgi.pid
vacuum=true
daemonize=uwsgi.log
static-map=/static=static_file
修改nginx配置文件
vim /etc/nginx/nginx.conf
在http内添加
http{
server{
listen 80;
server_name 39.105.64.155;
#反向代理
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
#静态文件服务器
location /static {
alias /home/myblog/static_file;
}
}
nginx负载均衡的策略
权重分配
upstream myweb{
server 127.0.0.1:8000 weight 80;
server 127.0.0.1:8001 weight 100;
server 127.0.0.1:8002 weight 200;
}
####ip分配方式
upstream myweb{
ip_hash;
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002 ;
}