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
Đố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
6PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- Mã gói hàng. tên của gói, tôi. e. ,
7PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- 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à
8PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- Thư mục đầu ra của gói.
9PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
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
6PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- Mã gói hàng. tên của gói, tôi. e. ,
0PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- 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à
9PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- Thư mục đầu ra của gói.
9PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- Gói bao gồm đường dẫn.
3PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
Đẩ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
6PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- 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.
5PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
Ứ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.
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]PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
Bước sẽ cần các thông tin sau
- Gói đường bay.
0PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- Chỉ huy đường bay.
8PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
- -Url. URL kết nối JDBC, tôi. e. jdbc. mysql. //
9.PDO::MYSQL_ATTR_SSL_CA => '/var/www/html/DigiCertGlobalRootG2.crt.pem' PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false
0/nginx -s reload
1}?serverTimezone=UTC&useSSL=truenginx -s reload
- -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
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
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
7Tậ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
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
4Má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ộcTô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. *
Để đị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
4Bâ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
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
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
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