zoukankan      html  css  js  c++  java
  • Heroku实战入门(二)简单实战

    书接上文。

    这回我们来真正部署一个应用。

    一、原理讲解

    实际操作之前,先来简单地了解一下应用的部署原理吧。

    heroku应用的部署是基于git的。git是什么呢,简单来说就是一个版本控制系统。它可以记录你的每一次更改并允许你返回到之前的任意一次更改。如果真的要详细讲git的话完全可以写一本书,并且有人已经写出来了这本书,我将它的汉化版制作成了电子书格式,需要的同学可以自行下载。

    git的操作流程简单概括就是两步:1、本地开发;2、提交到服务器。

    heroku的应用部署也是符合这两步的,所以熟悉git的话操作起heroku来就很简单了。

    下面我们就用一个实际的例子来讲解一下吧,同样,我们按照这两步来进行介绍。

    二、实战heroku——本地开发

    因为我使用的是Python的django框架,所以就以部署django应用为例。

    heroku官方已经提供了一个部署django的详细教程(不得不说heroku的文档写的真是好),我们就按照这个教程的步骤来进行操作。

    首先是进行环境的配置,我们需要安装Python。Python可以直接从官网下载需要的版本, 我使用的是2.7.3。

    安装完Python和django之后是安装virtualenv。

    heroku官方推荐使用virtualenv进行开发。virtualenv是一个虚拟环境,好处是在virtualenv中开发的项目不会影响到真实环境。大家都知道Python有各种各样的插件,如果都安装在真实环境的话会很难管理。使用虚拟环境就可以避免这个问题。

    当然,如果你不愿意使用虚拟环境可以直接跳过这步。

    运行 pip install virtualenv 或者 easy_install virtualenv 来进行安装

    安装完virtualenv之后,我们创建一个django项目:

    mkdir hellodjango && cd hellodjango

    这条命令创建一个名为hellodjango的目录并进入这个目录中。你可以把hellodjango换成你喜欢的名字,不过最好不要用中文,可能会导致一些错误。

    然后运行:

    virtualenv venv --distribute

    来创建一个虚拟环境,这个虚拟环境的名字是venv。

    创建完成后,运行:

    source venv/bin/activate

    来进入虚拟环境,运行完之后大家可以看到你的命令行最前面多出一个virtualenv标志,这就代表着你现在处于虚拟环境内部了。

    然后我们运行:

    pip install Django psycopg2 gunicorn dj-database-url

    来安装依赖包。

    django是我们要使用的开发框架;psycopg2是django连接PostgreSQL数据库的插件;gunicorn是一个WSGI服务,他的用处简单来说就是运行你的项目;dj-database-url是heroku需要的插件,因为heroku使用的是云PostgreSQL服务器,所以需要这个插件来和数据库进行连接。

    依赖包安装完之后,我们运行:

    django-admin.py startproject hellodjango .

    在当前目录下创建一个新的django项目,名字是hellodjango,你可以换成你喜欢的名字。

    我们可以运行:

    cd hellodjango && python manage.py runserver

    然后打开浏览器输入 http://127.0.0.1:8000  如果看到 It works! 就说明项目创建成功了。

    下面是很重要的一步,关系到我们的应用能不能在服务器上正常运行,大家要仔细看哦。

    我们在 hellodjango 目录(就是manage.py的父目录))中创建一个Procfile文件,不带任何扩展名;然后写入:

    web: gunicorn hellodjango.wsgi

    然后保存。

    这步是干什么的呢?实际上本地开发是用不到的,这步是告诉服务器使用gunicorn来运行我们的应用。

    然后,同样在 hellodjango 目录(manage.py的父目录)中运行:

    pip freeze > requirments.txt

    这步的目的是生成依赖包列表,这样提交到服务器之后会自动安装依赖包。

    最后一步,django中的设置。

    我们在settings.py文件的最下面写入:

    import dj_database_url
    DATABASES['default'] =  dj_database_url.config()

    # Honor the 'X-Forwarded-Proto' header for request.is_secure()
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    然后保存。这步的作用就是配置django连接数据库。

    这里我多说一句,因为django的配置路径是不允许相对路径的,所以只能使用绝对路径。那我们也不知道服务器上的绝对路径是什么啊,怎么办呢?有一个办法就是使用Python自带的模块获取当前目录然后组合出来绝对路径。比如templates的路径我们可以用

    PROJECT_DIR = os.path.dirname(__file__) # this is not Django setting.
    TEMPLATE_DIRS = (
        os.path.join(PROJECT_DIR, "../templates"),
        # here you can add another templates directory if you wish.
    )
    

     来代替,这样无论是本地还是服务器端都可以正常运行。

    好了,终于配置完成了~

    下面就该进行具体的开发了,因为这个教程是讲解使用heroku的,所以这里就不详细讲了,感兴趣的同学可以自己去百度 djangobook 来学习一下django。

    三、实战heroku——提交到服务器

    假设我们已经进行了一些开发,这时候我们就想提交一下了。毕竟自己本地开发谁也看不到嘛,提交上去就可以被所有人访问了。

    要提交到服务器,我们进行下面的操作。

    在 hellodjango 目录(同上一个括号= =)中运行:

    git init

    git add .

    git commit -m "my django app"

    这三个命令是什么意思呢,我分别解释一下。

    第一行git init是在当前目录创建一个git库,相当于初始化。

    第二行是将当前目录的所有变更文件加入库中(实际并不完全是这个意思,为了方便大家理解我就说得通俗一点)。

    第三行是提交变更到本地库。

    为什么已经加入变更文件了还要提交变更呢,这个涉及到git的原理,我估计再讲这个大家就更乱了,所以就不详细讲了。只要记住,提交到服务器之前必须运行 git add .git commit -m "something" 就行。something你可以随便填写。

    下一步就是提交到服务器了。

    因为我们是第一次提交,所以先运行:

    heroku create

    命令来告诉heroku给我们创建一个云服务器,然后运行:

    git push heroku master

    将我们的本地库提交到服务器上。

    这时候我们的应用就已经提交完成了,我们可以运行:

    heroku open

    就可以在浏览器中看到我们的网站了。

    到这里,整个流程就已经讲完了,大家可以不断重复本地开发和提交到服务器来进行项目的迭代开发,heroku会帮你处理好服务器端的所有事项。

    四、总结

    第一次写这样的教程,自己文笔也不行,感觉写起来很吃力。可能大家看起来更吃力吧。。。

    个人觉得heroku是一个很好的云平台所以想和大家分享一下,让更多的人知道heroku,所以写了这个么教程。

    如果大家有什么不清楚的地方或者我有什么写错的地方都欢迎提出!

    谢谢。

  • 相关阅读:
    bzoj3223: Tyvj 1729 文艺平衡树
    bzoj1014: [JSOI2008]火星人prefix
    bzoj3231: [Sdoi2008]递归数列
    bzoj2282: [Sdoi2011]消防
    bzoj3195: [Jxoi2012]奇怪的道路
    成员内部类 局部内部类 匿名内部类
    静态代码块 构造代码块
    父类子类转换
    clone()方法
    后缀表达式求值
  • 原文地址:https://www.cnblogs.com/numbbbbb/p/3056226.html
Copyright © 2011-2022 走看看