Python3+django2.0+apache2+ubuntu14部署网站上线的方法

自己尝试在本地搭建了 Django 项目后,想部署到自己云服务器上,经常多次尝试和多次踩坑(捂脸),总结如下:

环境:ubuntu14, django2.0, apache2。

1.首先安装需要的库包,在 ubuntu 下执行如下指令,为了能顺利安装建议使用 root 用户登录 Ubuntu 或在 apt-get 前加上 sudo :

安装 Apache2

apt-get update  #获取更新列表
apt-get install apache2  #安装 Apache2apt-get install libapache2-mod-wsgi-py3  #让 Apache2识别 Python 程序的请求,安装 mod-wsgi模块

确认安装的 Apache2 版本号

apachectl -v

安装和配置 Git(这是为了从远程文档库中推送远程仓库到本地,如需上线的 Django 项目)

apt-get install git
git config --global user.name 'yourname'
git config --global user.email 'youremail'

安装 Python 的 pip 组件管理程序和虚拟机环境程序 virtualenv

apt-get install python3-pip
pip3 install virtualenv

2.配置远程的 Django 项目

Linux 操作系统中的 Apache 网页服务器一般会把网页放在 /var/www/html 中,(安装 Apache2后便生成 /var/www 目录),所以我们也将 Django 项目放在 /var/www 下。首先在 /var/www 下使用 virtualenv 创建虚拟环境并启用,然后再使用 git clone 命令推送远程 Django 项目分支到本地(这里以我自己的仓库为例https://github.com/weixuqin/myDjango.git),操作如下:

cd /var/www                          #移动到 /var/www 目录下
virtualenv VENV                       #创建虚拟环境 VENV
source VENV/bin/activate                  #激活虚拟环境 VENV
git clone https://github.com/weixuqin/myDjango.git  #克隆远程仓库到本地
cd myDjango/mblog                      #移动到项目目录
pip install -r requirements.txt              #安装 requirements.txt文件中的库包

接下来我们可以使用下列命令来启动 Django 来访问看看网站内容是否完整呈现。

python manage.py runserver 0:8000

3.修改settings.py,增加静态文件等设置

正式上线的网站我们不能通过使用 python manage.py runserver 这样的方式启用。应该通过网页服务器(如 Apache)把远程浏览器的请求转送到 Django 程序中执行,再把执行后的结果通过 Apache 传回给浏览器。

主要涉及到两个文件,setting.py 和 wsgi.py。setting.py 负责做 Django 网站的相关设置,而 wsgi.py 负责创建一个可以让 Apache 顺利转交程序代码以及返回执行结果的设置文件。

setting.py 中修改如下:

# SECURITY WARNING: keep the secret key used in production secret!
#基于安全考虑,把原有 SECRET_KEYS的内容创建为/etc/secret_key.txt 文件,并使用读取的方式获取 SECRET_KEYS 的内容
with open('/etc/secret_key.txt') as f:
  SECRET_KEY = f.read().strip()

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False        #关闭 debug 模式,关闭后静态文件不会自动加载,需指定路径

ALLOWED_HOSTS = ['*']    #指定允许存取此网站的 IP 地址为'*',表示不做任何限制

然后我们修改 setting.py,让静态文件正常加载:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static')
]
STATC_ROOT = '/var/www/staticfiles'

然后运行

python manage.py collectstatic

将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制到 STATIC_ROOT 指定的文件夹中,把这些文件放到一起是为了用apache等部署的时候更方便。

Linux 对文件权限很敏感,我们还需要修改文件权限让 Apache2 能够正确读取到。

一般目录权限设置为 755,文件权限设置为 644 。

cd /var/www/myDjango/mblog
sudo chmod -R 644 zqxt
sudo find mblog -type d | xargs chmod 755

4.修改 Apache 中的文件,让网站上线

创建一个网站的配置文件

sudo vim /etc/apache2/sites-available/sitename.conf

这里以我的配置文件为例,可根据实际需求自行更改

<VirtualHost *:80>
  #添加 wsgi.py 文件路径和虚拟环境路径

  WSGIScriptAlias / /var/www/myDjango/mblog/mblog/wsgi.py
  WSGIDaemonProcess mblog python-path=/var/www/myDjango/mblog:/var/www/VENV/lib/python3.4/site-packages
  WSGIProcessGroup mblog
  
  #添加静态文件路径

  Alias /static/ /var/www/staticfiles/
  <Directory /var/www/staticfiles>
    Require all granted
  </Directory>
  
  #获取 wsgi.py 中内容

  <Directory /var/www/myDjango/mblog/mblog>
  <Files wsgi.py>
    Require all granted
  </Files>
  </Directory>
</VirtualHost>

切换到目录:/etc/apache2/sites-available/ 运行:

sudo service apache2 reload
sudo a2dissite 000-default && sudo a2ensite sitename.conf
sudo service apache2 restart

接着输入 服务器 IP 地址,如果成功,你将看到网站显示正常的内容,后续可以通过将域名解析到服务器等方式来访问。

我自己的如下:

**PS:自己将域名解析到服务器后网站一直报500错误,但是自己通过 IP 地址访问却一切正常,查找下原因,发现是解析域名到服务器,服务器如果在国内的,需要备案,不然是无法访问的,而自己恰巧是腾讯云的国内服务器,查找了好久,才发现一直报错是什么原因(捂脸)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • django2+uwsgi+nginx上线部署到服务器Ubuntu16.04

    1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压缩文件,压缩为zip包 3.准备软件 1.xshell(用于远程操作服务器)2.FileZilla(用于从客户端将项目包上传到服务器)3.Navicat 12 (用于同步数据库) 4.环境云 服务器/云主机:京东云 (云服务还是要选大厂的,我也试过一些比较小的厂的云服务,不说是哪家了,哇,简直是坑啊,各种

  • windows+apache+mod_python配置django运行环境

    1.创建mysite测试站点:django-admin.py startproject mysite 2.创建测试页:hello.py,内容如下: from django.http import HttpResponse def index(request): return HttpResponse('Hello, Django!') 3.创建mod_py_dj.conf配置文件,内容如下: LoadModule python_module modules/mod_python_so.pyd L

  • Django上线部署之IIS的配置方法

    环境: 1 .Windows Server 2016 Datacenter 64位 2 .SQL Server 2016 Enterprise 64位 3 .Python 3.6.0 64位 4.administrator用户,无域环境,最高权限 要求: 按照顺序部署 1 .安装数据库 2 .安装数据库客户端[SSMS] 3 .安装Python 4 .安装IIS 5.安装CGI 6.将源码拷贝至[C:\inetpub\wwwroot\MySite] ( MySite是自定义文件夹,wwwroot

  • 在Linux系统上部署Apache+Python+Django+MySQL环境

    Linux+apache+mysql+python+mod_python+Django 说明:系统rhel 5.3,默认安装httpd.mysql,没有安装的,请下载安装RPM包,删除/etc/httpd/modules/mod_python.so,如果有的话. 一.安装python wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz  tar xfz mod_python-2.7.11.tgz cd python-2.7.1

  • Django上线部署之Apache的方法

    环境: 1.Windows Server 2016 Datacenter 64位 2.SQL Server 2016 Enterprise 64位 3.Python 3.6.0 64位 4.administrator用户,无域环境,最高权限 要求: 按照顺序部署 1.安装数据库 2.安装数据库客户端[SSMS] 3.安装Python 4.下载apache2.4(httpd-2.4.41-win64-VC14.zip ) 5.解压至C盘根目录,打开cmd执行:C:\Apache24\bin\htt

  • Python3+django2.0+apache2+ubuntu14部署网站上线的方法

    自己尝试在本地搭建了 Django 项目后,想部署到自己云服务器上,经常多次尝试和多次踩坑(捂脸),总结如下: 环境:ubuntu14, django2.0, apache2. 1.首先安装需要的库包,在 ubuntu 下执行如下指令,为了能顺利安装建议使用 root 用户登录 Ubuntu 或在 apt-get 前加上 sudo : 安装 Apache2 apt-get update #获取更新列表 apt-get install apache2 #安装 Apache2apt-get inst

  • Vue2.0学习系列之项目上线的方法步骤(图文)

    当你好不容易的做好了一个Vue项目,准备去上线的时候却发现不知道该怎么办时,或者遇到了一些问题,那么来看我这篇文章吧,你会有所收获的. 1:打包 项目上线必须要打包. 命令: npm run build 打包后会生成 一个 dist 文件夹,里边有 index.html文件 和 static文件夹 打包命令截图如下: 生成文件如下: 现在我们已经打包好了,那么现在让我们打开这个项目吧. 双击 index.html 打开 你会看到 一堆的报错,慌不?别着急接着看.通过上图我们可以看到报错的原因是资

  • Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法

    本文实例讲述了Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法.分享给大家供大家参考,具体如下: 这里为Ubuntu14.04系统下配置PHP7.0+Apache2+Mysql5.7,主要目的是为了试玩WordPress. 更新系统资源 sudo apt-get update sudo apt-get uograde Apache2 安装apache sudo apt-get apache2 编辑apache主配置文件/etc/apache2/apach

  • Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解

    1. xadmin的介绍 django自带的admin站点虽然功能强大,但是界面不是很好看.而xadmin界面好看,功能更强大,并完全支持Bootstrap主题模板.xadmin内置了丰富的插件功能.包括数据导出.书签.图表.数据添加向导及图片相册等多种扩展功能. 界面如下: 2. xadmin的安装 本文所用xadmin模块适用于Python3.6+Django2.0以上使用 从 https://github.com/sshwsfc/xadmin/tree/django2 下载支持django

  • centos 7.0 使用Nginx部署flask应用教程

    参考文章://www.jb51.net/article/130989.htm 修改说明:修改nginx配置部分,更换配置文件内容及路径:从ip访问切换到域名访问 前言 最近博主在开发一个小项目,本机的开发环境是python3.6,因为需要部署到服务器(python2.7)的关系,所以研究了一下,网上大部分的教程是部署在Ubuntu上的,博主使用的是centos7.0,大部分的部署其实都是类似的,这篇博文对完完全全的新手可能会有所帮助,对遇到的一些困惑也可以进行描述. 环境准备 python包安装

  • Python3使用requests登录人人影视网站的方法

    早就听说requests的库的强大,只是还没有接触,今天接触了一下,发现以前使用urllib,urllib2等方法真是太搓了-- 这里写些简单的使用初步作为一个记录 本文继续练习使用requests登录网站,人人影视有一项功能是签到功能,需要每天登录签到才能升级. 下面的代码python代码实现了使用requests登录网站的过程. 以下是使用fiddler抓包得到完整的HTTP请求头: POST http://www.zimuzu.tv/User/Login/ajaxLogin HTTP/1.

  • 值得分享的IIS部署网站详细步骤

    本文为大家分享了IIS部署网站的全部教程,供大家参考,具体内容如下 1.开始->控制面板 2.管理工具->IIS管理器 3.右键添加网站 4.添加网站 5.检查ISAPI筛选器,若应用池是4.0,就要有4.0的筛选器,(请注意是32位与或是64位) 若没有对应筛选器,可添加筛选器 若未安装Framework可win+R 运行%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i 安装Framework 6.检查默认文

  • Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法

    mysql数据库版本从5.6.28升到8.0.11过程中部署项目时遇到的问题和解决方法,具体介绍如下所示: 首先这个项目用到了hibernate4.2.0,链接mysql5.6.28没问题,换到8.0.11,启动报错 1.Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 报错就配置吧 启动项目不报错了,但是访问项目报错了 2.访问报错com

  • python3+django2开发一个简单的人员管理系统过程详解

    一.基础环境准备 windows环境: Pycharm python3.6 Django2.0.1 Mysql5.7 安装django 在pycharm terminal 控制台执行: python3 -m pip install django #因为本地安装了python2.7 和python3.6 2个版本,所以python3.6环境变量对应python3 二.创建工程和应用 django-admin.py startproject qiakrcmdb #工程名称 cd qiakrcmdb

随机推荐