Azure에서 Laravel에 배포하여 만든 어플리케이션 ~ MySQL In App 사용 시
개요
icrosoft Azure가 Laravel에서 만든 웹 응용 프로그램을 배치할 때 아래의 공식 문서는 매우 참고 가치가 있습니다.
"Azure를 위한 PHP 웹 응용 프로그램 생성, 구성 및 배포"
ySQL 데이터베이스를 사용할 때도 마찬가지입니다.
Azure에서 MySQL 데이터베이스 생성 및 연결
하지만 각각 App, DB를 구축하는 환경이 아니라'Web App+MySQL'에서 환경을 구축하는 경우,'ClearDB'가 아닌'MySQL In App'을 선택하는 경우에는 약간의 노력이 필요하기 때문에 이 점을 보완하고 싶습니다.
문제
Git 저장소가 없습니다.
첫 번째 설명서에서 azure-cli에서 구축된 환경이기 때문에 Git 저장소를 자동으로 만들지만 Azure 포털(Web 인터페이스)에서 환경 구축을 하려면 스스로 만들어야 한다.
배포 옵션 > 소스 선택 에서 로컬 Git 저장소 를 선택하여 만듭니다.
Git 저장소로 전송할 수 없음
이것도 Azure 포털이 구축된 상황에서 설정해야 하는 것이다.
이것은 'git push azure master 못할 때'. 총결한 것이니 저쪽을 보십시오.
DB 이름 이외는 몰라요.
이 항목은 이 항목의 주요 부분이다.
Laravel에서 MySQL로 연결하려면 DB 이름, 사용자 이름 등의 정보가 필요하지만 포털에서는 연결 문자열을 참조하는 환경 변수 이름만 확인할 수 있습니다.
Laravel(5.2)의 데이터베이스 정의(database.php)는
return [
(中略)
'default' => env('DB_CONNECTION', 'mysql'),
(中略)
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
(中略)
];
연결 문자열에서 추출할 수 있는 값으로 수정합니다.if ($connstr = env('MYSQLCONNSTR_localdb')) { // MySQL In App(Azure)
$dbhost = preg_replace("/^.*Data Source=(.+?):.*$/", "\\1", $connstr);
$dbport = preg_replace("/^.*Data Source=(.+?):(.+?);.*$/", "\\2", $connstr);
$dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $connstr);
$dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $connstr);
$dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $connstr);
} else {
$dbhost = env('DB_HOST', 'localhost');
$dbport = env('DB_PORT', '3306');
$dbname = env('DB_DATABASE', 'forge');
$dbusername = env('DB_USERNAME', 'forge');
$dbpassword = env('DB_PASSWORD', '');
}
return [
(中略)
'default' => env('DB_CONNECTION', 'mysql'),
(中略)
'mysql' => [
'driver' => 'mysql',
'host' => $dbhost,
'port' => $dbport,
'database' => $dbname,
'username' => $dbusername,
'password' => $dbpassword,
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
(中略)
];
ySQL In App 정보
2016년 10월 5일까지 이 서비스는 미리보기판입니다.
『Announcing MySQL in-app (Preview) for Web Apps』
이 점을 포함해 상술한 블로그에 많이 썼습니다. 제가 개인적으로 중점적으로 생각하는 부분을 발췌해 보겠습니다.
MySQL server running on the same instance
그렇군요. 그래서 자원 일람이 아니라 App Service 메뉴에'My SQL In App(미리보기)'이 있습니다.
Storage is shared between both MySQL and your web app files. Note with Free and Shared plans you may hit our quota limits
물론 사용량에 주의해야 한다.
Auto scale feature is not supported
구성을 고려하는 것은 당연하지만 상용 서비스를 배치하려면 인 앱을 사용하지 않는 것이 좋다.
When using this feature with Free and Shared Web App pricing plans, add the app setting WEBSITE_FASTCGI_MAXINSTANCES and set its value to 3
최선의 실천이기 때문에 솔직하게 따른다.
보다 크면 같음
Reference
이 문제에 관하여(Azure에서 Laravel에 배포하여 만든 어플리케이션 ~ MySQL In App 사용 시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fullkawa/items/9482218767e2e1099f2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)