本次将一个前后端不分离的项目部署到web上,采用如上的架构,并使用supervisor进行进程的管理

项目访问路径:https://www.kunmzhao.cn/login/ 

项目源码下载网盘地址:

https://pan.baidu.com/s/1sGSnrHendFImTC-extkLww

提示:小编不易,提取码只需要1元,添加以下小编微信索要提货码

 

1.将项目复制到服务器上

这有很多方式,可以通过FTP或者scp等,我这边采用SFTP的方式
 注意点:
   1. 如果我们之前项目中有虚拟环境,则将虚拟环境的目录删除
   2. 将之前需要用的环境记得导出一并上传到服务器
        pip list --format=freeze > requirements.txt

 

 

2.为此项目创建虚拟环境

虚拟环境做好和之前的环境保持一致,如python版本等

1. 创建虚拟环境
    virtualenv --python=python3 env
2. 激活虚拟环境
source env/bin/activate
3. 安装依赖包
# 有时候可能会失败,我们可以将失败的依赖手动添加
pip install -r requirement.txt

 

 

 

3.创建数据库

  1. 我们需要确认对应的数据库已经在后台运行 

     

  2. 将项目的数据库数据导出

    mysqldump -u 用户名 -p 数据库 > 导出的文件

     

  3. 将生成的数据上传的服务器 

  4. 在服务器上创建数据库 

     

  5. 导入数据

     1. 首先创建一个数据库
     create database orderSystem charset utf8;
     2. 使用数据库
     use orderSystem;
     3. 导入数据
     source sb.sql

     

  6. 配置Django中关于mysql的配置

     配置成服务端的数据库

4.配置redis

  1. 确认redis已运行 

  2. 配置django中的redis设置 

     

  3. 测试django能否运行

      python3 manage.py runserver
     ​
     # 自己在在方面花了很长时间操作数据库,或者模块的引入,需要有耐心

5.配置uwsgi

  1. 创建uwsgi.ini的配置文件

     touch uwsgi.ini

  2. 写入配置如下

    [uwsgi]
     #  填写项目的第一层绝对路径
     chdir     = /home/ubuntu/kunmzhao/orderPlatform/orderPlatform
     # 填写项目第二层的相对路径,找到第二层目录下的wsgi.py
     # 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件
     module    = orderPlatform.wsgi
     # 填写虚拟环境解释器的第一层工作目录 
     home      = /home/ubuntu/kunmzhao/orderPlatform/env
     master    = true
     # 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 ,单核的cpu填写几?
     processes  = 3
     # 这里的socket参数,是用于和nginx结合部署的unix-socket参数
     socket          = 0.0.0.0:8000
     vacuum    = true

  3. 使用uwsgi启动项目

    uwsgi --ini ./uwsgi.ini  --plugin python3

     

6.配置supervisor

  1. 生成supervison配置文件

     echo_supervisord_conf > supervisord.conf

  2. 写入配置如下

     在配置文件末尾添加
     [program:my_uwsgi]        
     command= /usr/bin/uwsgi --ini /home/ubuntu/kunmzhao/orderPlatform/uwsgi.ini --plugin python3
     autostart=true    
     startsecs=10         
     autorestart=true     
     stopasgroup=true     
     killasgroup=true    

  3. 启动supervisor

     sudo supervisord -c supervisord.conf 

     

  4. 使用supervisorctl查看任务

     sudo supervisorctl -c supervisord.conf 

     

7.配置nginx

  1. 写入配置如下

     server {
             listen       80;
             server_name  localhost;
             charset utf-8;
             error_page  404  /40x.html;
     ​
             location / {
                     uwsgi_pass   0.0.0.0:8000;
                     include  uwsgi_params;
             }

     

  2. 启动nginx

     sudo nginx 

     

8.静态文件处理

此时是可以访问项目的,但会发现静态资源缺失

 

  1. 设置django的配置文件

    收集所有的静态文件,放入一个统一管理的目录
     打开项目配置文件,加入
     STATIC_ROOT='/home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/'

     

  2. 用命令收集静态文件

    python3 manage.py collectstatic

     

  3. 配置nginx

     在上面的基础上添加:
     # 将客户端关于/static的请求全部转移到指定的目录
     location /static {
                    alias /home/ubuntu/kunmzhao/orderPlatform/orderPlatform/my_static/;
            }

     

  4. 再次访问 

9.域名和https证书

  • 域名可以到各大平台购买,但需要备案,备案时间一般在10-15个工作日

  • 证书有免费的,我们使用免费的即可,需要将证书下载到项目部署服务器上

 

在nginx的配置文件中,添加配置如下

  server {
         listen       443 ssl;
         server_name  www.kunmzhao.cn;
         ssl_certificate /home/ubuntu/kunmzhao/orderPlatform/ssl/public.pem;
         ssl_certificate_key /home/ubuntu/kunmzhao/orderPlatform/ssl/private.key;
         ssl_session_timeout  5m;
         ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配
         ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配
         ssl_prefer_server_ciphers   on;
         }

 

如果希望全站https,可以将http请求重定向为https,添加配置如下

 server {
 ​
     listen 80;
     server_name www.kunmzhao.cn;
     rewrite ^(.*) https:$host$1 permanent;
     }

 

 

 

 


 

原文地址:http://www.cnblogs.com/victor1234/p/16882839.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性