项目部署
基于ubuntu 16.04系统,使用 uwsgi + Nginx 进行布署
阿里云服务器控制台: https://www.aliyun.comhttps://ecs.console.aliyun.com/#/home
1、进入控制台,查看实例创建情况
2、给安全组配置规则,添加5000端口(一并加上5001端口)
3、利用命令行进行远程服务器登录
ssh 用户名@ip地址
相关环境安装
以下操作都在远程服务器上进行操作 (ubuntu 16.04)
1)先更新 apt 相关源
sudo apt-get update
2)mysql安装
apt-get install mysql-server
apt-get install libmysqlclient-dev
3)redis安装
sudo apt-get install redis-server
4)安装虚拟环境
pip install virtualenv
pip install virtualenvwrapper
使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下:
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace source /usr/local/bin/virtualenvwrapper.sh
重新加载文件,使文件生效
source ~/.bashrc
4、拷贝本地代码到服务器
scp -r 本地文件路径 root@ip:远程保存路径
5、requirements文件
Python 项目中可以包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。
- 在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:
pip freeze > requirements.txt
- 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:
1 pip install -r requirements.txt
在安装 Flask-MySQLdb 的时候可能会报错,可能是依赖包没有安装,执行以下命令安装依赖包:
sudo apt-get build-dep python-mysqldb
6、修改django配置文件
修改setting.py
DEBUG = True ALLOWED_HOSTS = [..., 'www.xianyeweiyang.com'] # 添加www.baidu.com CORS_ORIGIN_WHITELIST = ( '127.0.0.1:8000', 'localhost:8000', 'www.xianyeweiyang.com:8000', 'wwww.xianyeweiyang.com', # 添加 )
7、uwsgi安装配置
django的程序通常使用uwsgi服务器来运行
安装uwsgi
pip install uwsgi
在项目目录/web_project 下创建uwsgi配置文件 uwsgi.ini
[uwsgi] #使用nginx连接时使用,Django程序所在服务器地址 socket = 127.0.0.1:8000 #直接做web服务器使用,Django程序所在服务器地址 # http=127.0.0.7:8000 #项目目录,manage.py入口所在目录 chdir = /opt/yeweiyang/server/web/web_project/web_project/ #项目中wsgi.py文件的目录,相对于项目目录 wsgi-file = web_project/wsgi.py # 进程数 processes = 2 # 线程数 threads = 2 # uwsgi服务器的角色 master = True # 存放进程编号的文件 pidfile = uwsgi.pid # : 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的 daemonize = uwsgi.log # 指定依赖的虚拟环境 # virtualenv = /Users/caicai/virtualenvs/django_py3_1.11 #用户自定义设置通过什么用户运行uwsgi服务 uid = root #gid = root #当服务停止时,自动释放端口,清楚pid vacuum = true buffer-size=65536 evil-reload-on-rss=256 evil-reload-on-ass=256
启动uwsgi服务器,停止uwsgi服务
uwsgi --ini uwsgi.ini
uwsgi --stop uwsgi.pid
8、Nginx安装
- 采用 C 语言编写
- 实现分流、转发、负载均衡
安装
$ sudo apt-get install nginx
运行及停止
/etc/init.d/nginx start #启动 /etc/init.d/nginx stop #停止
配置文件
- 编辑文件:/etc/nginx/sites-available/default
user root; worker_processes auto; pid /run/nginx.pid; events { worker_connections 1024; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream sex{ server 127.0.0.1:8000; } server { listen 80; # server_name www.xianyeweiyang.com; # server_name 127.0.0.1; # server_name 172.16.59.43; server_name 121.40.35.209; location / { include uwsgi_params; uwsgi_pass sex; # proxy_pass http://127.0.0.1:8000; } }} #location ~ .*\.(jpg|jepg|gif|css|png|ico|html)$ { # root /opt/yeweiyang/server/web/web_project/web_project; # expires 30d; # break; # }
首次启动nginx服务器
sudo /usr/local/nginx/sbin/nginx
停止nginx服务器
sudo /usr/local/nginx/sbin/nginx -s stop