Sử dụng MySQL in-app (Preview) với Azure

Chức năng MySQL in-app (Preview) giúp cài đặt hệ quản trị CSDL MySql ngay trên Azure App Service platform. Bạn không cần phải khai báo một dịch vụ cụ thể nào khác, chỉ cẩn bật chức năng “MySQL in-app(Preview)” trong lúc tạo hoặc thêm chức năng vào web app có sẵn. Với MySQL bạn có thể:

  • Hỗ trợ các ứng dụng PHP, MYSQL như WordPress, Joomla, Drupal…
  • MySQL server sẽ chạy cùng một hệ thống dùng để hosting ứng dụng đó, đảm bảo truy xuất nhanh-gọn

Tạo mới Web App với MySQL in-app

Đăng nhập vào Azure portal và click vào New –> Web + Mobile –> Web App + MySQL -> Create. Bạn có thể click vào đây để tạo Web App + MySQL ngay. Điền các thông tin theo yêu cầu và chọn MySQL in-app (Preview) trong mục database provider. Click Create để deploy một web app với MySQL in-app.

Bạn có thể tạo một ứng dụng WordPress với MySQL in-app từ Azure marketplace.

Cài đặt MySQL trên các Web Apps có sẵn

Trỏ đến web app của bạn trên portal và chọn MySQL in-app(Preview) trên thanh menu bên phải. Sau đó bật tùy chọn MySQL in-app.

Kiểm tra Process explorer để chắc rằng mysqld.exe đã được chạy. Nếu tiếng trình mysqld.exe đã chạy, thì nghĩa là MySQL server đã sẵn sàng hoạt động.

Manage MySQL in-app

Trỏ đến web app của bạn trên Portal và chọn MySQL in-app(Preview) trên Menu. Bạn có thể sử dụng các tùy chọn ở đây để điểu khiển MySQL in-app, bật chức năng logging, hoặc truy cập PHPmyadmin.

Sử dụng PHPMyAdmin

CSDL MySQL được bảo về và bạn không thể truy cập đến nó từ xa qua MySQL workbench hoặc MySQL command line tools. Có 2 cách để truy cập đến CSDL MySQL là qua PHPMyAdmin và Kudu Console, ở đây mình giới thiệu cách qua PHPMyAdmin:

Trỏ đến web app của bạn trên Portal và chọn MySQL in-app(Preview) trên thanh menu . Chọn nút Manage để mở PHPmyadmin.

CSDL chính được tạo cho web của bạn là “azuredb“. Bạn có thể bắt đầu khởi tạo cấu trúc, import, hoặc tạo mới một CSDL mới.

Deploy Web app sử dụng MySQL in-app

Lấy database connection string

Trước khi deploy web lên Azure , bạn phải sử dụng ENVIRONMENT VARIABLES để lấy connection string, vì bạn không thể tìm nó theo cách trực tiếp được. Thông tin kết nối được lưu trữ trong biến hệ thống MYSQLCONNSTR_localdb environment variable . Đây là ví dụ để lấy thông tin như database host, port, database name , database user, database password.

$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {
    if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
        continue;
    }
    $connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
    $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
    $connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
    $connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

$link = mysqli_connect($connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword,$connectstr_dbname);

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;

}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);

Một ví dụ khác, nếu bạn muốn deploy một trang web với WordPress bạn phải edit file wp-config.php để lấy thông tin từ biến hệ thống như sau.
/*Add at the begining of the file*/
$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {

    if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
        continue;
    }

    $connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
    $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
    $connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
    $connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

 

// ** MySQL settings - You can get this info from your web host ** //

/** The name of the database for WordPress */

define('DB_NAME', $connectstr_dbname);

/** MySQL database username */
define('DB_USER', $connectstr_dbusername);
 
/** MySQL database password */

define('DB_PASSWORD', $connectstr_dbpassword);
 
/** MySQL hostname : this contains the port number in this format host:port . Port is not 3306 when using this feature*/

define('DB_HOST', $connectstr_dbhost);

Deploy code

Bạn có thể deploy code qua GIT hoặc FTP hoặc bất cứ môi trường nào được hỗ trợ từ Azure Web Apps . Có thể tham khảo hướng dẫn Deploy to Azure app service web apps.

Happy Coding

Khương Nguyễn – Microsoft MVP

Leave a Reply

Your email address will not be published. Required fields are marked *