Screenshot 2019-04-05 10.30.04

Deploy ứng dụng ở local host lên Google App Engine (GAE).

Do tính năng của GAE là auto scale nên nếu chúng ta có một web app đang chạy ổn ở local thì chúng ta sẽ deploy nó nên GAE mà không cần quan tâm tới việc mở rộng tài nguyên, hoặc thu hẹp tài nguyên để tối ưu hoá chi phí vận hành.

Trong bài viết này mình sẽ deploy một ứng dụng PHP, MySQL (WordPress) đã hoàn thành trên môi trường local, lên GAE. Hình dưới là giao diện front-end và back-end chạy trên local.

Front-end
Back-end

Trước tiên chúng ta cần phải chuyển data từ local lên Google Cloud SQL. Các bạn hãy tham khảo bài viết ở đây để thao tác với data trên Google Cloud SQL giống như trên local. Kết quả là chúng ta sẽ có một database trên Google Cloud SQL.

wp3 là database đã được di chuyển từ local lên Google Cloud SQL

Để deploy source code lên GAE, chúng ta sẽ phải thêm file app.yaml cấu hình để khai báo cho GAE biết và phải sửa file wp-config.php đề config tới Cloud SQL. Cấu trúc thư mục như hình dưới.

file app.yaml vừa thêm vào

Nội dung file app.yaml :

runtime: php55
api_version: 1
#threadsafe: true

handlers:
- url: /(.*.(htm|html|css|js))
  static_files: 1
  upload: .*.(htm|html|css|js)$
  application_readable: true

- url: /wp-content/(.*.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))
  static_files: wp-content/1
  upload: wp-content/.*.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true

- url: /(.*.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))
  static_files: 1
  upload: .*.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true

- url: /wp-includes/images/media/(.*.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))
  static_files: wp-includes/images/media/1
  upload: wp-includes/images/media/.*.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true

- url: /wp-admin/(.+)
  script: wp-admin/1
  secure: always

- url: /wp-admin/
  script: wp-admin/index.php
  secure: always

- url: /wp-login.php
  script: wp-login.php
  secure: always

- url: /wp-cron.php
  script: wp-cron.php
  login: admin

- url: /xmlrpc.php
  script: xmlrpc.php

- url: /wp-(.+).php
  script: wp-1.php

- url: /(.+)?/?
  script: index.php

skip_files:
- ^(.*/)?.zip$
- ^(.*/)?.bat$
- ^(.*/)?.sh$
- ^(.*/)?.md$
- ^vendor

File wp-config.php cũng phải sửa lại như bên dưới. Trong đó dòng khai báo define(‘DB_HOST’, ‘:/cloudsql/blog-mysql-234606:asia-east1:db1’); có ý nghĩa như sau: blog-mysql-234606 chính là project id trên GCP, asia-east1 là zone của instance của Cloud SQL, db1 là tên instance của Cloud SQL. Với cấu hình dưới thì ứng dụng của chúng ta sẽ vừa chạy được trên local host vừa chạy được trên GAE.

// $onGae is true on production.
if (isset($_SERVER['SERVER_SOFTWARE'])
    && strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== false) {
    $onGae = true;
} else {
    $onGae = false;
}
/** The name of the database for WordPress */
if ($onGae) {
    /** The name of the Cloud SQL database for WordPress */
    define('DB_NAME', 'wp3');
    /** Production login info */
    define('DB_HOST', ':/cloudsql/blog-mysql-234606:asia-east1:db1');

} else {
    define('DB_NAME', 'wordpress');
    /** MySQL hostname */
    define('DB_HOST', 'localhost');
}

Tiếp theo chúng ta sẽ chạy lệnh deploy khi đứng tại vị trị folder chứa app.yaml gcloud app deploy app.yaml . Kết quả là chúng ta đã deploy xong một web app có URL như bên dưới.

gcloud app deploy app.yaml

Copy URL sau khi chạy lệnh gcloud app deploy app.yaml vào trình duyệt để kiểm chứng kết quả việc deploy.

Vậy là chúng ta đã deploy một ứng dụng PHP, MySQL lên GAE từ local, có chỗ nào chưa hiểu, cần support, các bạn hãy liên hệ với các chuyên gia – Cloud Ace Vietnam – để được hỗ trợ tốt hơn.

Comments are closed.