使用Nginx Gunicorn部署Django博客项目

项目部署

基于ubuntu16.04系统, 使用Gunicorn + Nginx 进行部署,云服务器为阿里云

OK! 准备好上面我们就开始部署了

本人是用django2.0 和 python3.5 搭建博客的

阿里云服务器 —>此处为已备案

  • 购买阿里云服务器
    系统选择为 Ubuntu16.04
  • 设置安全组
    官网有提示
  • 购买域名
    首次备案是个让人头疼的事,别心急,慢慢等,哈哈, 可以先把项目部署上去通过ip访问,高效,值得推荐
  • 远程连接
     ssh root@公网ip
    
    连接之后添加用户,因为root用户下部署代码不安全
     #新建用户
     useradd -m -s /bin/bash 你的用户名
     #将新用户加入超级权限组
     usermod -a -G sudo 你的用户名
     #设置密码
     passwd 你的用户名
     然后我建议重新登陆到新的用户 
    

环境安装

  • 先更新 apt 相关源
    sudo apt-get update 
    
  • 安装中文语言包
     sudo apt install language-pack-zh-hans #因为阿里云上面是纯净版的ubuntu 默认是英语
    
  • 安装mysql
    新手注意,安装时要记得设置mysql登陆密码,有个白框提示
      apt-get install mysql-server
      apt-get install libmysqlclient-dev 
    
  • 安装虚拟环境
    注意:如果是添加的新用户,需要切换用户,最好重新登陆一下
      pip install virtualenv
      pip install virtualenvwrapper #如果提示失败,前面加sudo
    
  • 使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下:
     export WORKON_HOME=$HOME/.virtualenvs
     export PROJECT_HOME=$HOME/workspace
     source /usr/local/bin/virtualenvwrapper.sh
    
  • 使编辑后的文件生效
     source ~/.bashrc
    
  • 创建虚拟环境
     mkvirtualenv django_py3 -p python3 #指定为python3版本
    

requirements文件

  • 在本地项目中生成当前虚拟环境的所有依赖包

     pip freeze > requirements.txt
    
  • 上面的虚拟环境创建好之后,通过requirements文件,把所有依赖包安装到服务器上

     pip install -r requirements.txt #一定要在虚拟环境下执行
    

    拷贝本地项目到阿里云服务器

       scp -r 本地文件路径 用户名@公网ip:远程保存路径
    

如果你的项目在github上面,直接在服务器创建文件夹 git clone 也是一样的

有了项目之后

  1. 在虚拟环境中安装上面的依赖包
  2. 创建生产环境的配置文件
      #settings 文件下
      DEBUG = False
      ALLOWED_HOSTS = ['127.0.0.1', 'localhost ', '.你的域名']
    
    不要问为什么,一切为了安全
  3. 创建数据库
     create database 项目中设置的数据库名 charset=utf8;
    
  4. 迁移数据库
    注意:如果本地有迁移数据的话先删除掉
     #cd 到manage.py目录
     python manage.py makemigrations 
     python manage.py migrate
    

收集静态文件

  • 在项目设置文件中添加配置信息

      STATIC_URL = '/static/'
      # 加入下面的配置
      STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    

    STATIC_ROOT 指明了静态文件的收集目录,即项目根目录(BASE_DIR)下的 static 文件夹。

  • 执行收集

     python manage.py collectstatic
    

    创建后台管理用户

     python manage.py createsuperuser
    

    安装nginx

  • 安装

     sudo apt-get install nginx
    
  • 启动与停止

       /etc/init.d/nginx start #启动
      /etc/init.d/nginx stop  #停止   权限不够加sudo
    
  • 配置文件
    编辑文件:/etc/nginx/sites-available/default

       		server {
       		        # 监听80端口
       		        listen 80 default_server;
       		        listen [::]:80 default_server;
       		
       		        root /var/www/html;
       		
       		        index index.html index.htm index.nginx-debian.html;
       		
       		        server_name _;
       		
       		        location / {
       		                # 请求转发到gunicorn服务器
       		                proxy_pass http://127.0.0.1:5000;
       		                # 请求转发到多个gunicorn服务器
       		                # 设置请求头,并将头信息传递给服务器端 
       		                proxy_set_header Host $host;
       		                # 设置请求头,传递原始请求ip给 gunicorn 服务器
       		                proxy_set_header X-Real-IP $remote_addr;
       		        }
       		        location /static {
       		            alias /此处填写你收集静态文件的路径,下面会提到/;
       		        }
       		        ...
       		 }
    

安装Gunicorn

  • 安装
    #在创建的虚拟环境中安装
    pip install gunicorn
    
  • 运行
     # -w: 表示进程(worker) -b:表示绑定ip地址和端口号(bind)
         gunicorn -w 2 -b 127.0.0.1:5000(ip是在nginx配置里面对应的) 运行文件名称:项目程序实例名
         例如:gunicorn -w 2 -b 127.0.0.1:5000 myblog.wsgi:application
    

此时启动了 nginx 和 gunicorn 后,通过域名就可以访问到自己的项目了

你可能感兴趣的:(python大法)