伯谅 LCw

Git 和 Heroku 基本教程

几百万年没有发文,这网站都要发霉了。

90 年代,电脑的操作系统只有 DOS,要用电脑,就得学会使用 DOS 的指令。

现今,电脑的操作系统都是以图形用户界面 (GUI) 为主,命令行界面 (CLI) 的应用越来越少。

许多程序员还是不懂得使用 CLI,要知道,CLI 的作用其实不小,可是还有人觉得很难使用 (*facepalm*),跟 20 多年前相比,我们这一代真的太好命了…………

言归正传,我参加了一个工作坊 (workshop),学到了在命令行中使用 Git,并利用 Heroku 来运行网络应用 (web app)。这里提供两种方法,给各位去尝试。

准备工作

你需要准备几个软件,并注册一个 Heroku 账户。

准备过程全程必须联网,以下使用 Windows 10 版本 1607 和 PHP 7.0.11 作为示范。

安装 PHP

在 Windows 下,你需要到 http://windows.php.net/download 下载程序。

你应下载 Non Thread Safe 版本以取得最佳效果,并安装 Microsoft Visual C++ Redistributable for Visual Studio 2017 的 x86 (https://go.microsoft.com/fwlink/?LinkId=746571) 或 x64 (https://go.microsoft.com/fwlink/?LinkId=746572) 版。

对于 Windows XP,可用的最高版本是 5.4.45 (http://windows.php.net/downloads/releases/archives/php-5.4.45-nts-Win32-VC9-x86.zip),你也需要安装 Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package (http://www.microsoft.com/zh-cn/download/details.aspx?id=26368)。

下载下来的是 ZIP 格式压缩文件,解压到一个适合的地方。

接着在解压后的目录中,将 php.ini-production 复制一份,并改名为 php.ini。打开 php.ini,寻找以下两行并 uncomment:

extension_dir = "ext"
extension=php_openssl.dll

P/S: 针对其它操作系统,包括 Linux 和 macOS (前称 Mac OS X),安装方法请查阅 http://php.net/manual/zh/install.php;你也需要在 php.ini 中做出相应修改。

安装 Composer

你可以在这里获得安装 Composer 的指示:http://getcomposer.org/download/

对于 Windows,下载并运行 Composer-Setup.exe 会让安装方便很多。

安装期间,你需要指向你刚才解压出来的 PHP 程序。

之后如常安装即可。

安装 Heroku CLI

Windows 和 macOS 用户,可以下载安装包并运行,安装时请选择 Full Installation,以安装所有组件,包括 Ruby、Heroku CLI 本体、Git 和 SSH。

可提的是以上都是 CLI 程序,由此可见 CLI 其实还是很重要的。

安装包的运行过程可达 20 分钟,请耐心等待;完成之后请打开命令行 (例如 cmd 或 bash),输入 heroku,回车,Heroku 的 CLI 程序会进行下载,过程可达 15 分钟。

下载完毕之后,会提示你进行登录,输入你的 Heroku 账号,照做就是了。

Linux 用户可以在这里获得安装指示:https://devcenter.heroku.com/articles/heroku-command-line

验证安装

为确保安装顺利,你需要运行下列命令:

heroku --version
git --version
composer --version

正常的输出会和下图相似:

第一个方法:完全使用 CLI

使用这个方法可以减少带宽的使用,可是会用到很多 CLI 的指令。

Git 配置

首先下载这个文件:https://github.com/teohm/simple-heroku-webapp/archive/master.zip

接着,解压到你要的目录,解压之后,你会看到 5 个文件。

然后,在命令行 (cmd 或 bash) 中进入该目录。

运行以下命令:

git init

让当前目录成为一个 Git repository。

然后,设置你要显示的姓名和电邮地址 (请对应修改值):

git config --global user.name "Lim Chunwei"
git config --global user.email "[email protected]"

之后开始提交第一份修改。

提交修改

先添加当前目录的所有文件:

git add .

注意 add. 之间有一个空格。

然后,做出提交动作:

git commit -m "配置新应用"

上面的“配置新应用”是描述,你也可以随意修改,反正只是给自己看的,呵呵。

建立应用

在部署之前,我们需要在 Heroku 上建立一个应用,并在该应用中部署一个数据库。

首先登录 Heroku:

heroku login

接着创建一个应用:

heroku create

Heroku 会随机分配应用名。

最后给应用分配一个数据库,以下以 PostgreSQL 为例:

heroku addons:create heroku-postgresql:hobby-dev

要注意的一点是,hobby-dev 并不是可以自定义的名字,请不要胡乱更改,否则后果自负。

完成部署

运行如下命令,推送修改:

git push heroku master

为了让网络应用可以正常运作,我们会在应用服务器上运行准备好的数据库设置脚本,命令如下:

heroku run php dbsetup.php

最后,输入以下命令,该命令会调用默认浏览器打开网络应用:

heroku open

设置 PHP 版本要求

Heroku 默认使用 PHP 5.6 的最新版本来运行应用,你不爽的话,可以改为使用 PHP 7.x。

在应用的目录有一个 composer-example.json 文件,改名为 composer.json。

然后,运行:

composer update

你会在应用目录看到多一个名为 composer.lock 的文件。

composer.json 的内容是这样的:

{
  "require": {
    "php": "^7.0"
  }
}

你应该一看就懂了吧。

然后,重复以上“提交修改”一节的操作:

git add .
git commit -m "配置应用使用 PHP7"

最后,推送修改:

git push heroku master

然后看看成果吧!虽然没多大差别…… (被围殴)

第二个方法:利用网络界面进行部署

这个方法在使用上会较为简便,不怎么喜欢用 CLI 的人可以考虑下。

进入 https://dashboard.heroku.com 并登录,你会看到这个美丽的界面:

为了习惯,我们点左上方的 New,然后选择 Create new app。

这里你可以什么都不动,直接按 Create App。

这个就是你新应用的管理界面了。如果你没有输入应用名,Heroku 会随机分配,记下它,之后是要用到的。

我们去 Resources 选项卡:

在这里可以分配数据库,在 Add-ons 的搜索栏输入并选择 Heroku Postgres,Plan name 选择 Hobby Dev — Free,按 Provision 就好了。

当然,你也可以分配 MySQL,有 ClearDB 和 JawsDB 两种供选择,都有免费的方案给你用。

后续操作

呃,其实用 CLI,到最后你还是跑不掉的啦。

在命令行 (cmd 或 bash) 中进入你想要的目录,运行以下命令:

git remote add <remote name> https://git.heroku.com/<app name>.git

这里,<remote name> 通常是 heroku,而 <app name> 则是你刚才创建的应用名。

上面应用名以 shielded-sierra-55504 为例,所以运行的命令如下 (拜托,真的不要全抄,pls):

git remote add heroku https://git.heroku.com/shielded-sierra-55504.git

把文件放进应用目录,然后看回第一个方法的“提交修改”、“完成部署”和“设置 PHP 版本要求”这三节。

如果你真的是厌恶 CLI 的话,那我推荐你用 SourceTree (https://www.sourcetreeapp.com)。

总结和后话

个人觉得 Heroku 是不错好用啦,可以说是给人们多一个不错的选择,不过很多东西都要收钱,我是怕掉了,科科。

想深入学习 Git、Heroku 和 Composer 相关使用吗?这里有几个链接,可以去看看:

其实这篇教程去年 10 月底就开始写了 (也就是说,这个工作坊也是同一个时候的),到现在才写完…………这期间真的是又忙又累,还有很多该做的东西没做,都堆积如山了呢。

嗯,差不多就是酱。

鸣谢

张辉明先生和沈秀梅博士提供工作坊教材




🌙