Triển khai ứng dụng php trên máy chủ

PHP là ngôn ngữ phổ biến nhất cho các ứng dụng dựa trên web. Sự phổ biến này đã dẫn đến sự sẵn có rộng rãi của các sản phẩm sẽ triển khai mã PHP của bạn nhưng không nhất thiết là toàn bộ ngăn xếp của bạn. Các ứng dụng thường bao gồm các thành phần khác ngoài giao diện người dùng web, chẳng hạn như cơ sở dữ liệu, API và thậm chí cả các vi dịch vụ được chứa trong vùng chứa

Trong bài đăng này, tôi trình bày cách triển khai ứng dụng PHP cho máy chủ web NGINX sử dụng MySQL làm cơ sở dữ liệu phụ trợ

Ứng dụng mẫu

Ứng dụng mẫu tôi chọn cho bài viết này là Car Rental Project

Với những sửa đổi nhỏ đối với một tệp duy nhất, ứng dụng này đã hoạt động vượt trội và hoàn toàn phù hợp cho phần trình diễn này. Mã nguồn bao gồm một tập lệnh cơ sở dữ liệu cho MySQL sẽ tạo lược đồ bảng và tạo cơ sở dữ liệu bằng dữ liệu. Tôi sẽ xem xét các sửa đổi cần thiết sau trong bài đăng này. Đây là liên kết đến dự án sửa đổi

Xây dựng ứng dụng PHP của bạn

PHP là một ngôn ngữ kịch bản, có nghĩa là nó không cần phải được biên dịch để triển khai. Tuy nhiên, có những lợi ích khi sử dụng máy chủ xây dựng với ứng dụng PHP

  • Nếu ứng dụng PHP của bạn sử dụng Composer làm trình quản lý phụ thuộc, bạn có thể đưa nó vào bản dựng của ứng dụng để thu thập phiên bản mới nhất của các phụ thuộc khi bản dựng chạy
  • Sử dụng plugin Octopus Deploy của máy chủ xây dựng để dễ tích hợp, chẳng hạn như
    • Đóng gói ứng dụng
    • Đẩy gói vào máy chủ Octopus Deploy hoặc giải pháp gói của bên thứ ba (Nexus, Artifactory, v.v. )
    • Đẩy thông tin xây dựng vào Octopus Deploy
    • Tạo bản phát hành
    • Triển khai và hoặc thúc đẩy các bản phát hành

Đối với bài đăng này, tôi đã chọn Jenkins làm máy chủ xây dựng của mình và có ba bước

  • Gói giao diện người dùng web
  • Tập lệnh cơ sở dữ liệu gói
  • Đẩy các gói vào Octopus Deploy

Gói giao diện người dùng web

Trước tiên, hãy xem qua các sửa đổi mà tôi đã thực hiện cho dự án này. Như đã đề cập, ứng dụng Cho thuê ô tô sử dụng MySQL làm cơ sở dữ liệu phụ trợ của nó. Thông tin kết nối cơ sở dữ liệu nằm ở

PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
5. Sử dụng Octostache và các biến thay thế trong tính năng mẫu, chúng tôi có thể tham số hóa thông tin kết nối

 "SET NAMES 'utf8'",PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem',PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false));
}
catch (PDOException $e)
{
exit("Error: " . $e->getMessage());
}
?>

Đối với phần trình diễn này, tôi đã sử dụng Azure MySQL PaaS yêu cầu kết nối SSL với cơ sở dữ liệu. Tôi cần thêm phần sau vào mảng thành phần tùy chọn PDO (như đã thấy ở trên)

PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false

Sử dụng plugin Octopus Deploy Jenkins, đóng gói ứng dụng để triển khai thật dễ dàng. Đơn giản chỉ cần chọn Octopus Deploy. Đóng gói bước đăng ký và điền thông tin sau

  • Bạch tuộc triển khai CLI. chọn Octopus Deploy CLI đã được cấu hình trong
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    6
  • Mã gói hàng. tên của gói, tôi. e. ,
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    7
  • Số phiên bản. số phiên bản của gói
  • định dạng gói. Zip hoặc Nuget
  • Thư mục cơ sở gói. đối với repo của tôi, nó là
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    8
  • Thư mục đầu ra của gói.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    9

Tập lệnh cơ sở dữ liệu gói

Bao gồm trong nguồn là một tập lệnh tạo lược đồ và điền dữ liệu vào cơ sở dữ liệu. Tệp tập lệnh cơ sở dữ liệu được đặt tên cụ thể để hoạt động với sản phẩm di chuyển cơ sở dữ liệu Flyway

  • Bạch tuộc triển khai CLI. chọn Octopus Deploy CLI đã được cấu hình trong
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    6
  • Mã gói hàng. tên của gói, tôi. e. ,
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    0
  • Số phiên bản. số phiên bản của gói
  • định dạng gói. Zip hoặc Nuget
  • Thư mục cơ sở gói. đối với repo của tôi, nó là
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    9
  • Thư mục đầu ra của gói.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    9
  • Gói bao gồm đường dẫn.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    3

Đẩy các gói vào Octopus Deploy

Sử dụng triển khai Octopus. Bước plugin gói đẩy, bạn có thể đẩy cả gói web và cơ sở dữ liệu sang Octopus Deploy trong một bước duy nhất

  • Bạch tuộc triển khai CLI. chọn Octopus Deploy CLI đã được cấu hình trong
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    6
  • Máy chủ triển khai Octopus. chọn máy chủ Octopus Deploy để đẩy tới (được xác định trong Quản lý Jenkins ➜ Định cấu hình hệ thống )
  • Không gian. chọn Không gian để đẩy tới (sử dụng Mặc định nếu để trống)
  • Đường dẫn gói.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    5

Ứng dụng PHP của chúng tôi hiện đã được đóng gói và sẵn sàng để triển khai

Triển khai ứng dụng PHP của bạn

Với các gói đã sẵn sàng, chúng tôi có thể xác định quy trình triển khai của mình

Bài đăng này giả định rằng bạn đã quen với việc tạo các dự án Octopus Deploy, vì vậy tôi sẽ không đề cập đến phần đó. Nếu bạn không quen thuộc với chủ đề đó, hãy xem hướng dẫn Bắt đầu của chúng tôi

Quy trình triển khai của chúng tôi sẽ bao gồm các bước sau

  • Tạo cơ sở dữ liệu MySQL nếu nó không tồn tại
  • Di chuyển cơ sở dữ liệu Flyway (sử dụng bộ chứa thực thi)
  • Triển khai lên NGINX

Tạo cơ sở dữ liệu MySQL

Bước này sẽ tạo cơ sở dữ liệu trên máy chủ MySQL nếu cơ sở dữ liệu chưa tồn tại. Chỉ có một vài đầu vào để điền vào cho bước này

  • Người phục vụ. Tên hoặc địa chỉ IP của máy chủ MySQL
  • tên tài khoản. Tên người dùng có đủ quyền để tạo cơ sở dữ liệu
  • Mật khẩu. Mật khẩu cho tài khoản người dùng
  • Tên cơ sở dữ liệu. Tên cơ sở dữ liệu cần tạo
  • Hải cảng. Cổng mà MySQL đang lắng nghe (mặc định 3306)
  • Sử dụng SSL. Có sử dụng SSL khi kết nối với MySQL hay không (điều này bắt buộc phải đúng với tôi vì tôi đang sử dụng Azure MySQL PaaS)

Di chuyển cơ sở dữ liệu đường bay

Đối với bài đăng này, tôi đã sử dụng mẫu Đường bay mới được tạo có thể được sử dụng với Bộ chứa thực thi

  • Địa điểm thực hiện. Chạy một lần trên một công nhân
  • Hồ bơi công nhân. Nhóm chứa công nhân đã cài đặt Docker
  • Hình ảnh vùng chứa.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    6 (Bạn phải định cấu hình nguồn cấp dữ liệu bên ngoài để sử dụng Docker Hub)

Bước sẽ cần các thông tin sau

  • Gói đường bay.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    0
  • Chỉ huy đường bay.
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    8
  • -Url. URL kết nối JDBC, tôi. e. jdbc. mysql. //
    PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
    
    9.
    nginx -s reload
    
    0/
    nginx -s reload
    
    1}?serverTimezone=UTC&useSSL=true
  • -Người sử dụng. Người dùng có thể cập nhật cơ sở dữ liệu
  • -Mật khẩu. Mật khẩu cho tài khoản người dùng

Triển khai Cho thuê ô tô lên NGINX

Bước thứ ba và cũng là bước cuối cùng là triển khai ứng dụng Car Rental PHP lên máy chủ web NGINX. Thêm một bước vào quy trình, chọn mẫu bước tích hợp NGINX

Triển khai ứng dụng php trên máy chủ

Nhấp vào TÍNH NĂNG CẤU HÌNH và bật

  • Tập lệnh triển khai tùy chỉnh
  • Thay thế các biến trong mẫu

Triển khai ứng dụng php trên máy chủ

Chi tiết gói

Trong phần Chi tiết gói, chọn gói

PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
7

Tập lệnh triển khai tùy chỉnh

Thêm phần sau vào cửa sổ tập lệnh sau khi triển khai

nginx -s reload

Đảm bảo chọn ngôn ngữ thích hợp cho tập lệnh. Tôi chọn Bash vì tôi đang triển khai NGINX trên Linux

Triển khai ứng dụng php trên máy chủ

Thay thế các biến trong các mẫu

Chỉ định vị trí của tệp

nginx -s reload
3 chứa thông tin kết nối cơ sở dữ liệu để nó được cập nhật với các giá trị phù hợp trong mục nhập tệp Mục tiêu.
nginx -s reload
4

Triển khai ứng dụng php trên máy chủ

Máy chủ web NGINX

Phần này sẽ xác định cài đặt cho bước NGINX. Đối với bài đăng này, tôi đã điền vào Ràng buộc và Vị trí

ràng buộc

Tôi chỉ cần một ràng buộc cho ứng dụng mẫu này

  • giao thức. http
  • Hải cảng. 8088 (hoặc bất kỳ cổng nào bạn muốn)
  • Địa chỉ IP. *
Vị trí

Để định cấu hình NGINX chạy ứng dụng PHP của chúng tôi, chúng tôi sẽ cần xác định ba vị trí

PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem'
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
4

Triển khai ứng dụng php trên máy chủ

Bây giờ chúng ta đã cấu hình xong bước để triển khai ứng dụng PHP của mình lên NGINX. Tất cả những gì còn lại là tạo một bản phát hành và triển khai

Triển khai

Sau khi bạn đã triển khai bản phát hành của mình, bạn sẽ nhận được đầu ra trông giống như thế này

Triển khai ứng dụng php trên máy chủ

Bạn có thể nhận thấy rằng bước NGINX hiển thị các cảnh báo, tuy nhiên, điều này là bình thường. NGINX ghi thông báo thông tin vào luồng stderr mà Octopus hiểu là lỗi có thể xảy ra và gắn cờ là cảnh báo

Triển khai ứng dụng php trên máy chủ

Truy cập máy chủ của bạn, chúng tôi có thể thấy ứng dụng PHP của bạn đang hoạt động

Triển khai ứng dụng php trên máy chủ

Sự kết luận

Phần lớn thế giới chạy các ứng dụng của họ trên PHP. Trong bài đăng này, tôi đã trình bày cách bạn có thể dễ dàng triển khai các ứng dụng PHP với back-end cơ sở dữ liệu bằng Octopus Deploy

Tôi có thể triển khai PHP miễn phí ở đâu?

000máy chủ web . 000webhost là một máy chủ web miễn phí hỗ trợ các ứng dụng PHP và MySQL. Nó cũng đi kèm với bảng điều khiển có PhpMyAdmin và trình quản lý tệp dựa trên web. Mặc dù 000webhost cho phép triển khai ứng dụng web của bạn thông qua tải lên tệp và miễn phí, nhưng nó cũng có rủi ro bảo mật lớn.

Tôi có thể lưu trữ PHP trên AWS không?

A. Bạn có thể lưu trữ Laravel, CodeIgniter, CakePHP, Symfony và nhiều khung công tác PHP khác trên máy chủ Đám mây AWS . Tất cả các khung này đều khá tiên tiến và cung cấp các tính năng được tối ưu hóa để triển khai với PHP 8. 1 máy chủ AWS EC2.

Bạn có thể lưu trữ PHP trên Netlify không?

Làm được nhiều hơn với Tích hợp PHP. Buddy CI/CD cho phép bạn tích hợp ngay lập tức PHP với Netlify để tự động hóa quá trình phát triển của bạn và xây dựng các ứng dụng tốt hơn nhanh hơn.