Cách thiết lập nhiều môi trường cho ứng dụng Laravel 5

14:33 24/07/2018   Trịnh Tuấn Tài

Trong thực tế khi phát triển một ứng dụng web trên framework Laravel - framework được đánh giá là số một hiện nay, bạn có thể sẽ gặp đôi chút khó khăn với việc cấu hình môi trường ứng dụng giữa các lập trình viên trong team, giữa môi trường local trên máy dev và môi trường production triển khai ứng dụng. Trong bài viết này tôi sẽ đưa ra giải pháp cấu hình ứng dụng đa môi trường (multiple environment config).

 

Trong ví dụ được thực hiện sau sẽ đề cập đến 2 môi trường localproduction, các bước thực hiện:

 

1. Mở file .env được tạo tự động bởi Laravel và xóa toàn bộ nội dung sau đó chèn: local hoặc production (hoặc bất cứ môi trường nào mà bạn muốn định nghĩa). File này sẽ là nơi thay đổi khi bạn muốn chuyển sang môi trường khác.

 

2. Tạo file môi trường mới cho phép bạn có môi trường local và production của mình

   - Tạo file có tên .local.env với nội dung tương tự như file .env trước khi xóa nội dung

   - Tạo file có tên .production.env với nội dung tương tự như file .env trước khi xóa nội dung

 

3. Thêm giá trị môi trường mặc định

   - Cho file .local.env: APP_ENV=local

   - Cho file .production.env: APP_ENV=production

 

4. Tìm vào file /bootstrap/app.php chèn vào đoạn code sau bên dưới đoạn:

$app = new IlluminateFoundationApplication(
		realpath(__DIR__.'/../')
	);

đoạn code chèn vào:

$env = $app->detectEnvironment(function(){
		//Gọi file .env và đọc nội dung
		$environmentPath = __DIR__.'/../.env';
		if (file_exists($environmentPath))
		{
			//Nếu tồn tại thì xử lý nội dung và thiết lập môi trường ứng dụng
			$setEnv = trim(file_get_contents($environmentPath));
			putenv('APP_ENV='.$setEnv);
			//Đọc nội dung file config mới và load lại config
			$dotenv = new DotenvDotenv(__DIR__ . '/../', '.' . getenv('APP_ENV') . '.env');
			$dotenv->overload();
		}
	});

 

5. Đoạn mã trên sử dụng, thư viện putenv của php để thiết lập APP_ENV và sau đó sử dụng gói Dotenv bởi vlucas. Tải file mà ta đã tạo và dựa trên nội dung của file .env, ta có thể xác định môi trường nào chúng tôi nên sử dụng.

 

6. Sau đó bạn có thể kiểm tra môi trường nào đang được tải bằng cách sử dụng:

App::environment();

 

Với cách thực hiện trên bạn sẽ dễ dàng linh hoạt thay đổi các thông tin cấu hình ở các môi trường phát triển ứng dụng khác nhau. Trong quá trình triển khai nếu có góp ý hay thắc mắc gì, hãy để lại trong phần bình luận nhé.