[原創]Heroku簡單部署指南


該部署筆記以部署 PHP 應用為例.

官方文檔

1. 設置

1.1 環境依賴

以部署 PHP 應用為例, 本地環境依賴:

  • php

  • composer

    Heroku 使用 Composer 管理PHP應用的依賴, composer.json 用於表明項目是 php語言.

  • git

分別執行以下命令查看當前版本

php -v
composer -v
git --version

1.2 Heroku 客戶端安裝

下載安裝 Heroku Cli

順便官網注冊一個 heroku 賬號

1.3 登錄

heroku login	# 輸入 heroku 賬號密碼
heroku keys:add # 添加ssh公鑰到 Heroku 上

2. 應用

2.1 創建

heroku create	# 遠程創建新的 heroku app, 並在本地 git 添加對應的遠程 git 倉庫

# git init

git push heroku master	# git 推送到遠程倉庫

heroku ps		# 查看當前應用有幾個實例
heroku ps:scale	web:1 # 應用實例伸縮, "web" 是在 Procfile 中定義的對應應用

heroku open		# 在瀏覽器中打開實例

免費賬號只能有一個實例

2.2 查看日志

heroku logs --tail

此處的日志是由應用輸出到 stdoutstderr 中的內容.

2.3 附加組件

為防止濫用, 添加附加組件需要賬號認證

...信用卡的意思

heroku addons				# 查看已安裝的附加組件
heroku addons:create xxxx	# 安裝附加組件
heroku addons:open xxxx		# 打開附加組件的web管理頁面(如果有的話...)

2.4 交互式 Shell

可運行 PHP 的交互式 shell

heroku run "php -a"

heroku 的交互式 shell

heroku run bash

2.5 定義 配置變量

config vars(配置變量) 在應用運行時是以 環境變量 形式暴露給應用.

heroku config	# 查看當前配置變量
heroku config:set XXX=XXXX	# 定義配置變量

$_SERVER 的輸出, 若執行 heroku config:set TEST_VAR=20, 則會在下面輸出出來(Line: 10)

array (
  'COMPOSER_BIN_DIR' => 'vendor/bin',
  'DOCUMENT_ROOT' => '/app/web',
  'HEROKU_PHP_HTTPD_CONFIG_INCLUDE' => '/app/vendor/heroku/heroku-buildpack-php/conf/apache2/default_include.conf',
  'DYNO' => 'web.1',
  'PATH' => '/app/.heroku/php/bin:/app/.heroku/php/sbin:/app/.heroku/php/bin:/app/.heroku/php/sbin:/app/.heroku/php/bin:/app/.heroku/php/sbin:/app/.heroku/php/bin:/usr/local/bin:/usr/bin:/bin:/app/vendor/bin',
  'WEB_CONCURRENCY' => '4',
  'PWD' => '/app',
  'COMPOSER_VENDOR_DIR' => 'vendor',
  'TEST_VAR' => '20',
  'HOME' => '/app',
  'SHLVL' => '2',
  'PORT' => '11636',
  'HEROKU_APP_DIR' => '/app',
  '_' => '/app/.heroku/php/sbin/php-fpm',
  'USER' => 'u24320',
  'SCRIPT_NAME' => '/index.php',
  'REQUEST_URI' => '/_server',
  'QUERY_STRING' => '',
  'REQUEST_METHOD' => 'GET',
  'SERVER_PROTOCOL' => 'HTTP/1.1',
  'GATEWAY_INTERFACE' => 'CGI/1.1',
  'REDIRECT_URL' => '/_server',
  'REMOTE_PORT' => '12702',
  'SCRIPT_FILENAME' => '/app/web/index.php',
  'SERVER_ADMIN' => 'you@example.com',
  'CONTEXT_DOCUMENT_ROOT' => '/app/web',
  'CONTEXT_PREFIX' => '',
  'REQUEST_SCHEME' => 'http',
  'REMOTE_ADDR' => '10.43.233.16',
  'SERVER_PORT' => '80',
  'SERVER_ADDR' => '172.17.77.62',
  'SERVER_NAME' => 'polar-oasis-94232.herokuapp.com',
  'SERVER_SOFTWARE' => 'Apache',
  'SERVER_SIGNATURE' => '',
  'HTTP_TOTAL_ROUTE_TIME' => '0',
  'HTTP_X_REQUEST_START' => '1529897835941',
  'HTTP_CONNECT_TIME' => '1',
  'HTTP_VIA' => '1.1 vegur',
  'HTTP_X_FORWARDED_PORT' => '443',
  'HTTP_X_FORWARDED_PROTO' => 'https',
  'HTTP_X_FORWARDED_FOR' => '218.66.157.218',
  'HTTP_X_REQUEST_ID' => '775b1b7c-c679-44d6-9cf0-2280f2930b15',
  'HTTP_ACCEPT_LANGUAGE' => 'zh-CN,zh;q=0.9',
  'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, br',
  'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
  'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
  'HTTP_CONNECTION' => 'close',
  'HTTP_HOST' => 'polar-oasis-94232.herokuapp.com',
  'REDIRECT_STATUS' => '200',
  'FCGI_ROLE' => 'RESPONDER',
  'PHP_SELF' => '/index.php',
  'REQUEST_TIME_FLOAT' => 1529897835.9442799,
  'REQUEST_TIME' => 1529897835,
)

2.6 配置數據庫

附加組件市場 有大量免費的數據存儲附加組件.

免費的基本都是限制存儲量, eg. postgresql 免費的限制存儲 10000 行

heroku addons:create heroku-postgresql:hobby-dev	# 添加 postgresql 的免費版

添加上述數據庫組件后, 會往變量配置中添加如下數據庫url地址:

使用: $dbopts = parse_url(getenv('DATABASE_URL'));

遠程連接 postgressql

heroku pg:psql

2.7 Procfile

Procfile 文件用於定義進程類型並確定應用如何啟動.

# apache
web: vendor/bin/heroku-php-apache2 web/		# web/ 是指定應用的根目錄

# nginx
web: vendor/bin/heroku-php-nginx web/		


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM