• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
_夕颜
博客园    首页    新随笔    联系   管理    订阅  订阅
Nginx+uwsgi+Django项目部署

项目部署

基于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
posted on 2019-12-15 14:52  __夕颜  阅读(281)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3