在线演示: http://47.244.22.82

python3+django2.0的环境

需要安装的库
pip install django-simple-captcha django-pure-pagination

Ueditor安装注册
到github中搜索djangoueditor,发现一个liyaopinner/DjangoUeditor3_imooc
下载后把DjangoUeditor文件夹放在python指定目录下,我的是D:\Program Files\python3.5\Lib\site-packages

linux中路径查看方式,进入python3命令行后执行

>>> from distutils.sysconfig import get_python_lib
>>> print(get_python_lib())

 一般是/usr/lib/python3/dist-packages
 
 
 
 
一. 准备工作
 
1. 正式环境安装好nginx后,配置文件在/etc/nginx/sites-enable,默认访问首页放在/var/www/html中
当访问该地址的时候,nginx 会按照 index.html,index.htm ,index.php 的先后顺序在根目录中查找文件。如果这三个文件都不存在,那么nginx就会返回403 Forbidden。
 
 
2. 如果某个包下载的比较慢,可以试试豆瓣源,比如pip install -i https://pypi.douban.com/simple pillow==3.4.1
 
3. http://projectsedu.com/  讲解通过nginx和uwsgi部署django应用
 
4. 准备虚拟环境
windows安装
pip install virtualenv,pip install virtualenvwrapper-win
 
ubuntu16安装
pip3 install virtualenv virtualenvwrapper
在~/.bashrc中添加
export WORKON_HOME=$HOME/.virtualenvs 
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 
source /usr/local/bin/virtualenvwrapper.sh
重新加载.bashrc文件
source  ~/.bashrc
 
保存退出后,建立一个目录来存放虚拟环境
mkdir $HOME/.virtualenvs
 
新建虚拟环境
mkvirtualenv mxonline
 
进入虚拟环境
workon mxonline
 
测试环境中mxonline如果是跑在虚拟环境中的,使用pip list查看该项目安装了那些第三方包,然后使用pip freeze > requirements.txt把这些第三方包的名字导出来,然后把此文件拷贝到linux正式的虚拟环境中,使用pip install -r requirements.txt就可以全部安装了
 
 
 
5. linux数据库中新建库mxonline3, 然后用navicat把原先的数据传过来
 
 
 
 
二. 服务器配置
 
1. 安装uwsgi
pip install uwsgi
 
 
2. 测试uwsgi
uwsgi --http :8000 --module MxOnline.wsgi
 
 
3. 配置nginx
在项目目录中新建conf/uc_nginx.conf
 
upstream django {
server 127.0.0.1:8000 ;
}
 
server {
listen      80;
server_name 你的ip地址 www.mxonline.com;  #也可以指定对应域名
charset     utf-8;
 
# max upload size
client_max_body_size 75M;   # adjust to taste
 
# Django media
location /media  {
    alias 你的目录/Mxonline/media;  # 指向django的media目录
}
 
location /static {
    alias 你的目录/Mxonline/static; # 指向django的static目录
}
 
# Finally, send all non-media requests to the Django server.
location / {
    uwsgi_pass  django;
    include     uwsgi_params; # the uwsgi_params file you installed
}
}
 
 
4. 将该配置文件加入到nginx的启动配置文件中
sudo ln -s 你的目录/Mxonline/conf/nginx/uc_nginx.conf /etc/nginx/conf.d/
 
 
5. 拉取所有需要的static file 到同一个目录
在django的setting文件中,添加下面一行内容:
STATIC_ROOT = os.path.join(BASE_DIR, "static/"),同时注释掉之前的STATICFILES_DIRS = (...)
   
运行命令
    python manage.py collectstatic
 
 
6. 运行nginx
sudo /usr/sbin/nginx
这里需要注意 一定是直接用nginx命令启动, 不要用systemctl启动nginx不然会有权限问题
 
 
7. 通过配置文件启动uwsgi,根据情况自行修改
在项目目录Mxonline中,新建conf/uwsgi.ini 配置文件, 内容如下:
 
    # mysite_uwsgi.ini file
    [uwsgi]
 
    # Django-related settings
    # the base directory (full path)
    chdir           = 你的目录/MxOnline
    # Django's wsgi file
    module          = MxOnline.wsgi
    # the virtualenv (full path)
 
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # 使用socket的启动方式,比http更高效
    socket          = 127.0.0.1:8000
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    # 你的虚拟环境目录
    virtualenv = /home/bobby/.virtualenvs/mxonline 
    logto = /tmp/mylog.log
 
注:
    chdir: 表示需要操作的目录,也就是项目的目录
    module: wsgi文件的路径
    processes: 进程数
    virtualenv:虚拟环境的目录
 
workon mxonline
uwsgi -i 你的目录/Mxonline/conf/uwsgi.ini &
 
 
8.  windows上测试用未注册域名访问linux上部署的项目
c/windows/system32/drivers/etc/HOSTS文件中添加
47.52.136.86    www.mxonline.com  # 当访问域名时自动跳转到ip地址,因为我们之前在nginx配置文件中添加了这个域名,所以可访问
 
 
9. pkill -f uwsgi 会自动重启uwsgi,在修改配置文件时可用
 
 
10. 正式上线后需要修改的配置
settings.py中修改
DEBUG=False
ALLOWED_HOSTS = ['*']
 
项目urls.py中添加如下,使样式和图片生效
from mxonline.settings import STATIC_ROOT
re_path('static/(?P<path>.*)', serve, {"document_root": STATIC_ROOT}),
 
 
11. 当使用centos普通用户部署环境的时候,有时会出现502错误,是权限问题,只需要修改/etc/nginx/nginx.conf第一行 user root,然后重启nginx:/usr/sbin/nginx -s reload
 
 
12设置自定义的404, 500页面(经测试可成功设置自定义404)

mxonline实战17,上线部署的更多相关文章

  1. Walle - 瓦力上线部署系统搭建攻略

    背景知识:Walle - 瓦力是一个支持svn.git.多用户.多项目.多环境同时部署的上线部署系统,http://www.oschina.net/news/68610/walle-0-9-2 实验系 ...

  2. [实战]MVC5+EF6+MySql企业网盘实战(17)——思考2

    写在前面 今天吃饭回来,突然有一个更好的想法,这里做一下记录. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战 ...

  3. Saiku上线部署准备(三十)

    Saiku上线部署准备 零零散散琢磨了快5个月了,终于快要上线了哈哈哈哈哈.....  激动!!! 以下是本地打包编译saiku至部署到服务器上使用的完整步骤哦 saiku部署到服务器 源码编译需要注 ...

  4. 玩转Django2.0---Django笔记建站基础十二(Django项目上线部署)

    第十二章 Django项目上线部署 目前部署Django项目有两种主流方案:Nginx+uWsGI+Django或者Apache+uWSGI+Django.Nginx作为服务器最前端,负责接收浏览器的 ...

  5. 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)

    前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...

  6. Flask实战第68天:项目上线部署

    在开发机上的准备工作 1.确认项目没有bug 2.用pip freeze >requirements.txt将当前环境的包导出到requirements.txt文件中,方便部署的时候安装 3.将 ...

  7. dcoker实战,使用docker部署NodeJs应用

    docker简介   docker是一个开源的应用容器引擎,可以为我们提供安全.可移植.可重复的自动化部署的方式.docker采用虚拟化的技术来虚拟化出应用程序的运行环境.如上图一样.docker就像 ...

  8. BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

    上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...

  9. 如何将java web项目上线/部署到公网

    关于如何将java web上线,部署到公网,让全世界的人都可以访问的问题. 1.在myeclipse中开发好项目,打包成war格式,不会的同学参考以下 http://zhidao.baidu.com/ ...

随机推荐

  1. 《GB/T 20988-2007:信息系统灾难恢复规范》[中](国家质检总局 & 国标委)阅读笔记

    第 0 章:引言 [感]GB/T 20988 引用了 SHARE 78 会议(标准)上的有关内容和思想,并结合国家重要信息系统行业技术发展和实践经验制定而成. GB/T 20988 提出了信息系统灾难 ...

  2. 分区恢复和NTFS文件恢复试验

    一.实验室名称:主楼实验室A2-412                  二.实验项目名称:分区恢复和NTFS文件恢复试验 三.实验学时:6学时 四.实验原理: 借助fdisk.diskgen软件对磁 ...

  3. 单源最短路:Dijkstra算法 及 关于负权的讨论

    描述: 对于图(有向无向都适用),求某一点到其他任一点的最短路径(不能有负权边). 操作: 1. 初始化: 一个节点大小的数组dist[n] 源点的距离初始化为0,与源点直接相连的初始化为其权重,其他 ...

  4. [SoapUI] 通过Groovy Script获取当前运行的是哪套Environment

    log.info testRunner.testCase.testSuite.project.getActiveEnvironment().getName()

  5. Java 设计模式系列(二二)责任链模式

    Java 设计模式系列(二二)责任链模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求 ...

  6. 给力分享新的ORM => Dapper( 转)

    出处:http://www.cnblogs.com/sunjie9606/archive/2011/09/16/2178897.html 最近一直很痛苦,想选一个好点的ORM来做项目,实在没遇到好的. ...

  7. Net下的 ORM框架介紹(转)

    http://www.cnblogs.com/zhaoyx/articles/1896638.html 在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: ...

  8. [operator]ubuntu + sublime + anaconda 自动补全、指定python版本

    ubuntu .sublime.anaconda都安装好之后,首先要解决的就是自动补全问题 Perference---->Browes Packages --->新建一个Python的文件 ...

  9. npm是干什么的?

    允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用. 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用. 其实npm ...

  10. [翻译]Writing Custom Common Controls 编写自定义控件

    摘要:介绍如何编写自定义的控件,用在报表的窗体上(如Edit,Button等)   Writing Custom Common Controls 编写自定义控件 FastReport contains ...