Hướng dẫn how to deploy php website on heroku - cách triển khai trang web php trên heroku

Giới thiệu

Hướng dẫn này sẽ giúp bạn triển khai một ứng dụng PHP trong vài phút.

Hãy tiếp tục trong vài phút nữa để tìm hiểu cách tất cả hoạt động, vì vậy bạn có thể tận dụng tối đa Heroku.

Hướng dẫn giả định rằng bạn có:

  • Một tài khoản Heroku miễn phí.
  • PHP được cài đặt cục bộ.
  • Nhà soạn nhạc được cài đặt cục bộ.

Bắt đầu từ ngày 28 tháng 11 năm 2022, miễn phí Heroku Dynos, miễn phí Heroku Postgres và dữ liệu Heroku miễn phí cho các kế hoạch Redis® sẽ không còn nữa. Nếu bạn có ứng dụng sử dụng bất kỳ tài nguyên nào trong số này, bạn phải nâng cấp lên các gói đã trả tiền vào ngày này để đảm bảo ứng dụng của bạn tiếp tục chạy và giữ lại dữ liệu của bạn. Sinh viên đủ điều kiện có thể đăng ký tín dụng nền tảng thông qua chương trình Heroku mới cho sinh viên GitHub. Xem blog và Câu hỏi thường gặp của chúng tôi để biết thêm thông tin.

Cài đặt

Heroku CLI yêu cầu Git, hệ thống kiểm soát phiên bản phổ biến. Nếu bạn đã không cài đặt Git, hãy hoàn thành những điều sau đây trước khi tiến hành:Git, the popular version control system. If you don’t already have Git installed, complete the following before proceeding:

  • Cài đặt Git
  • Thiết lập Git lần đầu tiên

Trong bước này, bạn sẽ cài đặt giao diện dòng lệnh Heroku [CLI]. Bạn sử dụng CLI để quản lý và mở rộng quy mô các ứng dụng của bạn, các tiện ích bổ sung cung cấp, xem nhật ký ứng dụng của bạn và chạy ứng dụng của bạn cục bộ.

Tải xuống và chạy trình cài đặt cho nền tảng của bạn:

hệ điều hành Mac

$ brew tap heroku/brew && brew install heroku

Sau khi cài đặt, bạn có thể sử dụng lệnh

$ git --version
git version 2.12.2
3 từ vỏ lệnh của bạn.

Trên Windows, hãy bắt đầu dấu nhắc lệnh [cmd.exe] hoặc PowerShell để truy cập vào shell lệnh.

Sử dụng lệnh

$ git --version
git version 2.12.2
4 để đăng nhập vào Heroku CLI:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 

Lệnh này mở trình duyệt web của bạn đến trang đăng nhập Heroku. Nếu trình duyệt của bạn đã đăng nhập vào Heroku, chỉ cần nhấp vào nút

$ git --version
git version 2.12.2
5 được hiển thị trên trang.
$ git --version
git version 2.12.2
5
button displayed on the page.

Xác thực này là bắt buộc cho cả hai lệnh

$ git --version
git version 2.12.2
3 và
$ git --version
git version 2.12.2
7 hoạt động chính xác.

Trước khi bạn tiếp tục, hãy kiểm tra xem bạn đã cài đặt các điều kiện tiên quyết đúng đắn. Nhập từng lệnh bên dưới và đảm bảo nó hiển thị phiên bản bạn đã cài đặt. [Các phiên bản của bạn có thể khác với ví dụ.] Nếu không có phiên bản nào được trả về, hãy quay lại giới thiệu hướng dẫn này và cài đặt các điều kiện tiên quyết.

Tất cả các thiết lập cục bộ sau đây sẽ được yêu cầu để hoàn thành các phụ thuộc của ứng dụng khai báo và các bước tiếp theo.

Hướng dẫn này sẽ hoạt động nếu bạn đã cài đặt PHP - kiểm tra xem nó có ở đó không:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies

Bây giờ kiểm tra xem bạn đã cài đặt

$ git --version
git version 2.12.2
8. Nếu không, hãy cài đặt nó và kiểm tra lại:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45

Bây giờ kiểm tra xem bạn đã cài đặt

$ git --version
git version 2.12.2
7. Nếu không, cài đặt nó và kiểm tra lại.

$ git --version
git version 2.12.2

Chuẩn bị ứng dụng

Trong bước này, bạn sẽ chuẩn bị một ứng dụng mẫu mà sẵn sàng triển khai cho Heroku.

Nếu bạn chưa quen với Heroku, bạn nên hoàn thành hướng dẫn này bằng cách sử dụng ứng dụng mẫu do Heroku cung cấp.

Tuy nhiên, nếu bạn có ứng dụng hiện tại mà bạn muốn triển khai thay thế, hãy xem bài viết này để tìm hiểu cách chuẩn bị cho việc triển khai Heroku.

Để sao chép ứng dụng mẫu để bạn có phiên bản mã cục bộ mà sau đó bạn có thể triển khai cho Heroku, thực thi các lệnh sau trong lệnh hoặc thiết bị đầu cuối lệnh cục bộ của bạn:

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started

Bây giờ bạn có một kho lưu trữ Git hoạt động có chứa một ứng dụng đơn giản cũng như tệp

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0. Hãy chắc chắn rằng bạn đã cài đặt trình soạn thảo. Heroku sử dụng nhà soạn nhạc để quản lý phụ thuộc trong các dự án PHP và tệp
$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0 cho thấy Heroku rằng ứng dụng của bạn được viết bằng PHP.

Triển khai ứng dụng

Trong bước này, bạn sẽ triển khai ứng dụng cho Heroku.

Tạo một ứng dụng trên Heroku, chuẩn bị Heroku nhận mã nguồn của bạn:

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added

Khi bạn tạo một ứng dụng, một điều khiển từ xa [được gọi là

$ git --version
git version 2.12.2
3] cũng được tạo và liên kết với kho lưu trữ Git cục bộ của bạn.

Heroku tạo ra một tên ngẫu nhiên [trong trường hợp này là

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
3] cho ứng dụng của bạn hoặc bạn có thể chuyển một tham số để chỉ định tên ứng dụng của riêng bạn.

Bây giờ triển khai mã của bạn:

$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]

Ứng dụng hiện được triển khai. Đảm bảo rằng ít nhất một trường hợp của ứng dụng đang chạy:

$ heroku ps:scale web=1

Bây giờ hãy truy cập ứng dụng tại URL được tạo bởi tên ứng dụng của nó. Như một phím tắt tiện dụng, bạn có thể mở trang web như sau:

$ heroku open

Xem các bản ghi

Heroku coi nhật ký là luồng các sự kiện được đặt hàng theo thời gian được tổng hợp từ các luồng đầu ra của tất cả các thành phần của ứng dụng và Heroku của bạn, cung cấp một kênh duy nhất cho tất cả các sự kiện.

Xem thông tin về ứng dụng đang chạy của bạn bằng một trong các lệnh ghi nhật ký,

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
4:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
0

Truy cập một lần nữa ứng dụng của bạn trong trình duyệt và bạn sẽ thấy một thông báo nhật ký khác được tạo.

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
1

Ghi nhật ký, sau đó, chỉ đơn giản là vấn đề hướng đầu ra đến

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
5 hoặc
$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
6 - Heroku thực hiện công việc tổng hợp điều này trên tất cả các thành phần ứng dụng và hệ thống. Xem tệp
$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
7 để xem dịch vụ
$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
8 được cấu hình như thế nào để viết đầu ra của nó thành
$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
6.

Nhấn

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
0 để ngừng phát trực tuyến nhật ký.

Xác định một procfile

Sử dụng ProcFile, một tệp văn bản trong thư mục gốc của ứng dụng của bạn, để loại bỏ rõ ràng lệnh nào sẽ được thực thi để bắt đầu ứng dụng của bạn.

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
1 trong ứng dụng ví dụ bạn đã triển khai trông như thế này:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
2

Điều này tuyên bố một loại quy trình duy nhất,

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
2 và lệnh cần thiết để chạy nó. Tên
$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
3 là quan trọng ở đây. Nó tuyên bố rằng loại quy trình này sẽ được gắn vào ngăn xếp định tuyến HTTP của Heroku và nhận lưu lượng truy cập web khi được triển khai.

Procfiles có thể chứa các loại quy trình bổ sung. Ví dụ: bạn có thể khai báo một cho một quy trình nhân viên nền xử lý các mục từ hàng đợi.

Quy mô ứng dụng

Ngay bây giờ, ứng dụng của bạn đang chạy trên một dyno web duy nhất. Hãy nghĩ về một dyno như một thùng chứa nhẹ chạy lệnh được chỉ định trong

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
1.

Bạn có thể kiểm tra xem có bao nhiêu dynos đang chạy bằng lệnh

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
5:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
3

Theo mặc định, ứng dụng của bạn được triển khai trên Dyno miễn phí. Dynos miễn phí sẽ ngủ sau nửa giờ không hoạt động [nếu họ không nhận được bất kỳ giao thông nào]. Điều này gây ra sự chậm trễ trong vài giây cho yêu cầu đầu tiên khi thức dậy. Các yêu cầu tiếp theo sẽ thực hiện bình thường. Dynos miễn phí cũng tiêu thụ từ một hạn ngạch cấp tài khoản hàng tháng của các giờ dyno miễn phí - miễn là hạn ngạch không cạn kiệt, tất cả các ứng dụng miễn phí có thể tiếp tục chạy.

Để tránh Dyno ngủ, bạn có thể nâng cấp lên một loại sở thích hoặc loại Dyno chuyên nghiệp như được mô tả trong bài viết của Dyno Type. Ví dụ: nếu bạn di chuyển ứng dụng của mình sang một dyno chuyên nghiệp, bạn có thể dễ dàng mở rộng nó bằng cách chạy một lệnh bảo Heroku thực hiện một số lượng cụ thể của dynos, mỗi lần chạy loại quy trình web của bạn.

Việc mở rộng một ứng dụng trên Heroku tương đương với việc thay đổi số lượng các dynos đang chạy. Tỷ lệ số lượng các dynos web về 0:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
4

Truy cập lại ứng dụng bằng cách nhấn làm mới trên tab web hoặc

$ heroku create
Creating sharp-rain-871... done, stack is heroku-18
//sharp-rain-871.herokuapp.com/ | //git.heroku.com/sharp-rain-871.git
Git remote heroku added
6 để mở nó trong một tab web. Bạn sẽ nhận được một thông báo lỗi vì bạn không còn có bất kỳ dynos web nào để phục vụ các yêu cầu.

Quy mô nó một lần nữa:

$ heroku ps:scale web=1

Để phòng ngừa lạm dụng, việc mở rộng một ứng dụng không miễn phí cho nhiều hơn một dyno yêu cầu xác minh tài khoản.

Tuyên bố phụ thuộc ứng dụng

Heroku nhận ra một ứng dụng là PHP bởi sự tồn tại của tệp

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0 trong thư mục gốc.

Ứng dụng Demo bạn đã triển khai đã có

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0 và nó trông giống như thế này:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
6

Tệp

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0 chỉ định các phụ thuộc nên được cài đặt với ứng dụng của bạn. Khi một ứng dụng được triển khai, Heroku sẽ đọc tệp này và cài đặt các phụ thuộc thích hợp vào thư mục
$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]
0.

Sau đó, ứng dụng PHP của bạn có thể sử dụng các phụ thuộc sau khi yêu cầu đơn giản:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
7

Chạy lệnh sau để cài đặt các phụ thuộc, chuẩn bị hệ thống của bạn để chạy ứng dụng cục bộ:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
8

Bạn phải luôn luôn kiểm tra

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0 và
$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]
2 vào repo Git của bạn. Thư mục
$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]
0 phải được bao gồm trong tệp
$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]
4 của bạn.

Đẩy các thay đổi cục bộ

Trong bước này, bạn sẽ học cách tuyên truyền một thay đổi cục bộ cho ứng dụng thông qua Heroku. Ví dụ, bạn sẽ sửa đổi ứng dụng để thêm một phụ thuộc bổ sung [thư viện Cowsay] và mã để sử dụng nó.

Đầu tiên, sử dụng trình soạn thảo để yêu cầu phụ thuộc mới:

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
9

Điều này cũng sẽ thay đổi

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0. Nếu bạn đã giới thiệu sự phụ thuộc bằng cách tự sửa đổi tệp
$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0, hãy chắc chắn cập nhật các phụ thuộc bằng cách chạy:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
0

Bây giờ sửa đổi

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
7 để sử dụng thư viện này. Thêm một tuyến đường mới sau tuyến hiện tại, cho
$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]
8:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
1

Khi tuyến đường đó được truy cập, nó sẽ khiến một con bò đẹp.

Bây giờ triển khai. Hầu như mọi triển khai đến Heroku đều theo mô hình tương tự này.

Đầu tiên, thêm các tệp đã sửa đổi vào kho lưu trữ Git cục bộ:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
2

Bây giờ hãy cam kết các thay đổi đối với kho lưu trữ:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
3

Bây giờ triển khai, giống như bạn đã làm trước đây:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
4

Cuối cùng, hãy kiểm tra xem mọi thứ đang hoạt động:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
5

Cung cấp bổ sung

Các tiện ích bổ sung là các dịch vụ đám mây của bên thứ ba cung cấp các dịch vụ bổ sung ngoài hộp cho ứng dụng của bạn, từ sự kiên trì thông qua việc đăng nhập đến giám sát và hơn thế nữa.

Theo mặc định, Heroku lưu trữ 1500 dòng nhật ký từ ứng dụng của bạn. Tuy nhiên, nó làm cho luồng nhật ký đầy đủ có sẵn dưới dạng dịch vụ - và một số nhà cung cấp bổ trợ có các dịch vụ ghi nhật ký bằng văn bản cung cấp những thứ như thông báo về log, tìm kiếm và email và thông báo SMS.

Trong bước này, bạn sẽ cung cấp một trong những tiện ích bổ sung đăng nhập này, PaperTrail.

Cung cấp tiện ích bổ sung ghi nhật ký giấy tờ:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
6

Để giúp phòng ngừa lạm dụng, việc cung cấp một tiện ích bổ sung yêu cầu xác minh tài khoản. Nếu tài khoản của bạn chưa được xác minh, bạn sẽ được hướng dẫn truy cập trang web xác minh.

Tiện ích bổ sung hiện được triển khai và cấu hình cho ứng dụng của bạn. Bạn có thể liệt kê các tiện ích bổ sung cho ứng dụng của mình như vậy:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
7

Để xem phần bổ trợ đặc biệt này trong hành động, hãy truy cập ứng dụng URL của bạn một vài lần. Mỗi lần truy cập sẽ tạo ra nhiều tin nhắn nhật ký hơn, hiện sẽ được chuyển đến tiện ích bổ sung giấy tờ. Truy cập bảng điều khiển Papertrail để xem tin nhắn nhật ký:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
8

Trình duyệt của bạn sẽ mở một bảng điều khiển web PaperTrail, hiển thị các sự kiện nhật ký mới nhất. Giao diện cho phép bạn tìm kiếm và thiết lập cảnh báo:

Bắt đầu một vỏ tương tác

Bạn có thể chạy một lệnh, thông thường các tập lệnh và ứng dụng là một phần của ứng dụng của bạn, trong một dyno một lần sử dụng lệnh

$ git push heroku main
remote: Building source:
remote:
remote: -----> PHP app detected
remote: -----> Bootstrapping...
remote: -----> Installing platform packages...
remote:        NOTICE: No runtime required in composer.json; requirements
remote:        from dependencies in composer.lock will be used for selection
remote:        - php [7.1.3]
remote:        - apache [2.4.20]
remote:        - nginx [1.8.1]
remote: -----> Installing dependencies...
remote:        Composer version 1.4.1 2017-03-10 09:29:45
remote:        Loading composer repositories with package information
remote:        Installing dependencies from lock file
remote:        Package operations: 12 installs, 0 updates, 0 removals
remote:          - Installing psr/log [1.0.2]: Loading from cache
remote:          - Installing monolog/monolog [1.22.1]: Loading from cache
...
remote:          - Installing symfony/twig-bridge [v3.2.7]: Loading from cache
remote:        Generating optimized autoload files
remote: -----> Preparing runtime environment...
remote: -----> Checking for additional extensions to install...
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote:
remote: -----> Compressing...
remote:        Done: 14.8M
remote: -----> Launching...
remote:        Released v17
remote:        //gsphpjon.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To //git.heroku.com/gsphpjon.git
 + 264e577...4f2369c main -> main [forced update]
9. Nó cũng có thể được sử dụng để khởi chạy một shell PHP tương tác được gắn vào thiết bị đầu cuối cục bộ của bạn để thử nghiệm trong môi trường ứng dụng của bạn:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
9

Nếu bạn nhận được một lỗi,

$ heroku ps:scale web=1
0, thì bạn có thể cần phải định cấu hình tường lửa của mình.

Bảng điều khiển PHP không có gì được tải ngoài thư viện tiêu chuẩn PHP. Để thoát khỏi vỏ PHP, nhập

$ heroku ps:scale web=1
1.

Để có được cảm giác thực sự về cách thức hoạt động của Dynos, bạn có thể tạo một dyno một lần khác và chạy lệnh

$ heroku ps:scale web=1
2, mở ra một vỏ trên dyno đó. Sau đó, bạn có thể thực thi các lệnh ở đó. Mỗi dyno có không gian tệp phù du của riêng mình, được điền với ứng dụng của bạn và các phụ thuộc của nó - một khi lệnh hoàn thành [trong trường hợp này là
$ heroku ps:scale web=1
2], dyno bị loại bỏ.

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
0

Don Tiết quên gõ

$ heroku ps:scale web=1
4 để thoát khỏi vỏ và chấm dứt dyno.

Xác định cấu hình vars

Heroku cho phép bạn cấu hình bên ngoài - lưu trữ dữ liệu như khóa mã hóa hoặc địa chỉ tài nguyên bên ngoài trong cấu hình vars.

Khi chạy, cấu hình vars được phơi bày dưới dạng các biến môi trường cho ứng dụng.

Sửa đổi

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
7 để tuyến gốc trả về từ
$ heroku ps:scale web=1
6 được lặp lại theo giá trị của biến môi trường
$ heroku ps:scale web=1
7:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
1

Để đặt cấu hình var trên heroku, thực hiện các mục sau:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
2

Xem các vars cấu hình được đặt bằng

$ heroku ps:scale web=1
8:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
3

Triển khai ứng dụng đã thay đổi của bạn cho Heroku để xem điều này trong hành động.

Cung cấp một cơ sở dữ liệu

Thị trường bổ sung có một số lượng lớn các cửa hàng dữ liệu, từ các nhà cung cấp Redis và MongoDB, đến Postgres và MySQL. Trong bước này, bạn sẽ thêm một cơ sở dữ liệu cấp Dev của Heroku Postgres miễn phí vào ứng dụng của bạn.

Thêm cơ sở dữ liệu:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
4

Điều này tạo ra một cơ sở dữ liệu và đặt cấu hình

$ heroku ps:scale web=1
9 var [bạn có thể kiểm tra bằng cách chạy
$ heroku ps:scale web=1
8].

Sửa đổi

$ git clone //github.com/heroku/php-getting-started.git
$ cd php-getting-started
0 để bao gồm sự phụ thuộc cho nhà cung cấp dịch vụ PDO đơn giản, CSANQUER/PDO-Service-Provider:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
5

Cài đặt phụ thuộc mới:

$ php -v
PHP 7.0.5 [cli] [built: Apr 26 2016 04:39:48] [ NTS ]
Copyright [c] 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright [c] 1998-2016 Zend Technologies
0

Bây giờ sửa đổi

$ heroku open
2 để mở rộng ứng dụng để thêm kết nối PDO:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
7

Lưu ý cách mã này truy xuất cấu hình

$ heroku ps:scale web=1
9 var từ môi trường bằng cách sử dụng
$ heroku open
4 và trích xuất thông tin trên tên máy chủ, cơ sở dữ liệu và thông tin xác thực từ cấu hình đó bằng cách sử dụng
$ heroku open
5.

Trong cùng một tệp, thêm một trình xử lý mới để truy vấn cơ sở dữ liệu:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
8

Điều này đảm bảo rằng khi bạn truy cập ứng dụng của mình bằng tuyến đường

$ heroku open
6, nó sẽ trả về tất cả các hàng trong bảng
$ heroku open
7 và hiển thị kết quả bằng mẫu
$ heroku open
8. Tạo tệp mẫu
$ heroku open
8 bên trong thư mục
$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
00:

$ composer -V
Composer version 1.4.1 2017-03-10 09:29:45
9

Nếu bạn bị mất thực hiện những thay đổi này, hãy xem chi nhánh DB của ứng dụng mẫu.

Triển khai các sửa đổi ứng dụng cho Heroku:

$ git --version
git version 2.12.2
0

Nếu bây giờ bạn trỏ trình duyệt của mình đến

$ heroku open
6 [hoặc sử dụng
$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
02 để truy cập URL đó], bạn sẽ thấy một lỗi cho biết
$ heroku open
7 không tồn tại.

Giả sử rằng bạn đã cài đặt Postgres cục bộ, sử dụng lệnh

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
04 để kết nối với cơ sở dữ liệu bạn đã cung cấp trước đó và tạo bảng đó:

$ git --version
git version 2.12.2
1

Bây giờ khi bạn truy cập vào tuyến đường ____ ____996 của bạn, bạn sẽ thấy tên không tên là một mục nhập, bởi vì chưa có bản ghi nào trong bảng.

Quay lại phiên

$ heroku login
heroku: Press any key to open up the browser to login or q to exit
 ›   Warning: If browser does not open, visit
 ›   //cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as 
04 mà bạn đã mở và chèn một vài bản ghi:

$ git --version
git version 2.12.2
2

Nếu bạn làm mới trang

$ heroku open
6 trong trình duyệt của bạn, các bản ghi này sẽ hiển thị!

Bước tiếp theo

Bây giờ bạn biết cách triển khai một ứng dụng, thay đổi cấu hình, xem nhật ký, tỷ lệ và đính kèm các tiện ích bổ sung.

Ở đây, một số cách đọc được đề xuất:

  • Đọc cách Heroku làm việc để biết tổng quan về kỹ thuật về các khái niệm mà bạn sẽ gặp trong khi viết, định cấu hình, triển khai và chạy các ứng dụng.
  • Đọc việc triển khai các ứng dụng PHP trên Heroku để hiểu cách lấy ứng dụng PHP hiện có và triển khai nó cho Heroku.
  • Truy cập danh mục PHP để tìm hiểu thêm về phát triển và triển khai các ứng dụng PHP.
  • Tìm hiểu thêm về trải nghiệm của nhà phát triển Heroku và các tính năng CI/CD trong hành trình học tập của nhà phát triển doanh nghiệp Heroku.

Chúng tôi có thể lưu trữ trang web PHP trên Heroku không?

Heroku nhận ra một ứng dụng là PHP bởi sự tồn tại của tệp Composer.json trong thư mục gốc. Nhà soạn nhạc. Tệp JSON chỉ định các phụ thuộc nên được cài đặt với ứng dụng của bạn. json file in the root directory. The composer. json file specifies the dependencies that should be installed with your application.

Heroku có hỗ trợ PHP không?

Heroku cho phép bạn chạy ứng dụng của mình bằng thời gian chạy PHP chính thức..

Làm cách nào để triển khai trang web của tôi trên Heroku?

Khi nó được cài đặt, hãy làm theo các bước này ...
Tạo ứng dụng trên Heroku.Trong thiết bị đầu cuối của bạn, hãy đặt mình bên trong thư mục ứng dụng của bạn.....
Đặt cấu hình máy chủ nút.....
Nghe máy chủ 0,0.....
Chạy nút trong chế độ sản xuất.....
Nói với Heroku để chạy NPM NPM Run Build "....
Tạo một Procfile cho Heroku.....
Đẩy repo github của bạn đến Heroku để triển khai ..

Làm cách nào để triển khai một dự án PHP từ Heroku đến GitHub?

Cách triển khai trang web PHP và MySQL cho Heroku và định cấu hình cơ sở dữ liệu với phpmyadmin..
Tạo một tài khoản trên Heroku và tải xuống các công cụ Heroku CLI.....
Mở thư mục dự án của bạn trong CLI.....
Đăng nhập vào Heroku từ nhà ga.....
Tạo một tệp PHP ban đầu.....
Tạo một nhà soạn nhạc.....
Khởi tạo kho lưu trữ Git, thêm mọi thứ sau đó cam kết ..

Bài Viết Liên Quan

Chủ Đề