Thứ sáu, 23/03/2018 | 00:00 GMT+7

Cách tự động triển khai ứng dụng Laravel với Trình triển khai trên Ubuntu 16.04

Laravel là một khung công tác web PHP open-souce được thiết kế để làm cho các việc phát triển web phổ biến, chẳng hạn như xác thực, định tuyến và bộ nhớ đệm trở nên dễ dàng hơn. Deployer là một công cụ triển khai PHP open-souce với sự hỗ trợ sẵn có cho một số khuôn khổ phổ biến, bao gồm Laravel, CodeIgniter, Symfony và Zend Framework.

Người triển khai tự động hóa việc triển khai bằng cách sao chép ứng dụng từ repository Git đến server , cài đặt các phần phụ thuộc với Trình soạn thảo và cấu hình ứng dụng để bạn không phải làm như vậy theo cách thủ công. Điều này cho phép bạn dành nhiều thời gian hơn cho việc phát triển, thay vì tải lên và cấu hình, đồng thời cho phép bạn triển khai thường xuyên hơn.

Trong hướng dẫn này, bạn sẽ triển khai ứng dụng Laravel một cách tự động mà không có bất kỳ thời gian chết nào. Để làm điều này, bạn sẽ chuẩn bị môi trường phát triển local từ đó bạn sẽ triển khai mã và sau đó cấu hình server production với Nginx và database MySQL để phục vụ ứng dụng.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn cần những thứ sau:

Bước 1 - Cài đặt Môi trường Phát triển Địa phương của bạn

Vì bạn sẽ tạo và triển khai ứng dụng của bạn từ máy local , hãy bắt đầu bằng cách cấu hình môi trường phát triển local của bạn. Người triển khai sẽ kiểm soát toàn bộ quá trình triển khai từ máy local của bạn, vì vậy hãy bắt đầu bằng cách cài đặt nó.

Lưu ý: Nếu bạn sử dụng Windows trên máy local , bạn nên sử dụng trình giả lập BASH (như Git bash) để chạy tất cả các lệnh local .

Trên máy local của bạn, hãy mở terminal và download trình cài đặt Deployer bằng curl :

  • curl -LO https://deployer.org/deployer.phar

Tiếp theo, chạy một tập lệnh PHP ngắn để xác minh trình cài đặt trùng với hàm băm SHA-1 cho trình cài đặt mới nhất được tìm thấy trên trang download - Deployer . Thay thế giá trị được đánh dấu bằng hàm băm mới nhất:

  • php -r "if (hash_file('sha1', 'deployer.phar') === '35e8dcd50cf7186502f603676b972065cb68c129') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('deployer.phar'); } echo PHP_EOL;"
Output
Installer verified

Làm cho hệ thống sẵn có của Deployer. Lưu ý nếu bạn đang chạy Windows hoặc macOS trên máy local của bạn , bạn có thể cần tạo folder /usr/local/bin/dep trước khi chạy lệnh này:

  • sudo mv deployer.phar /usr/local/bin/dep

Làm cho nó có thể thực thi:

  • sudo chmod +x /usr/local/bin/dep

Tiếp theo, tạo một dự án Laravel trên máy local của bạn:

  • composer create-project --prefer-dist laravel/laravel laravel-app "5.5.*"

Bạn đã cài đặt tất cả phần mềm cần thiết trên máy local của bạn . Như vậy, ta sẽ chuyển sang tạo repository Git cho ứng dụng.

Bước 2 - Kết nối với Kho lưu trữ Git từ xa của bạn

Người triển khai được thiết kế để cho phép user triển khai mã từ mọi nơi. Để cho phép chức năng này, nó yêu cầu user đẩy mã đến một repository trên Internet, từ đó Người triển khai sau đó sao chép mã vào server production . Ta sẽ sử dụng Git, một hệ thống kiểm soát version open-souce , để quản lý mã nguồn của ứng dụng Laravel. Bạn có thể kết nối với server Git bằng giao thức SSH và để thực hiện việc này một cách an toàn, bạn cần tạo SSH key . Điều này an toàn hơn xác thực dựa trên password và cho phép bạn tránh nhập password trước mỗi lần triển khai.

Chạy lệnh sau trên máy local của bạn để tạo SSH key . Lưu ý -f chỉ định tên file của file khóa và bạn có thể thay thế gitkey bằng tên file của riêng mình. Nó sẽ tạo một cặp SSH key (có tên gitkeygitkey .pub ) vào folder ~/.ssh/ .

  • ssh-keygen -t rsa -b 4096 -f ~/.ssh/gitkey

Có thể bạn có nhiều SSH key hơn trên máy local của bạn , vì vậy hãy cấu hình client SSH để biết private key SSH nào sẽ sử dụng khi nó kết nối với server Git của bạn.

Tạo file cấu hình SSH trên máy local của bạn :

  • touch ~/.ssh/config

Mở file và thêm lối tắt vào server Git của bạn. Điều này phải chứa chỉ thị HostName (trỏ đến tên server Git của bạn) và chỉ thị IdentityFile (trỏ đến đường dẫn file của SSH key bạn vừa tạo:

~ / .ssh / config
Host mygitserver.com     HostName mygitserver.com     IdentityFile ~/.ssh/gitkey 

Lưu file , sau đó hạn chế quyền của nó:

  • chmod 600 ~/.ssh/config

Bây giờ client SSH của bạn sẽ biết private key nào sử dụng để kết nối với server Git.

Hiển thị nội dung của file public key của bạn bằng lệnh sau:

  • cat ~/.ssh/gitkey.pub

Sao chép kết quả và thêm public key vào server Git của bạn.

Nếu bạn sử dụng dịch vụ lưu trữ Git, hãy tham khảo tài liệu của dịch vụ đó về cách thêm SSH key vào account của bạn:

Đến đây bạn sẽ có thể kết nối với server Git bằng máy local của bạn . Kiểm tra kết nối bằng lệnh sau:

  • ssh -T git@mygitserver.com

Nếu lệnh này dẫn đến lỗi, hãy kiểm tra xem bạn đã thêm đúng SSH key của bạn hay chưa bằng cách tham khảo tài liệu của dịch vụ lưu trữ Git và thử kết nối lại.

Trước khi đẩy ứng dụng lên repository Git từ xa và triển khai nó, trước tiên hãy cấu hình server production .

Bước 3 - Cấu hình user triển khai

Người triển khai sử dụng giao thức SSH để thực hiện các lệnh trên server một cách an toàn. Vì lý do này, bước đầu tiên ta sẽ thực hiện để cấu hình server production sẽ là tạo một user mà Người triển khai có thể sử dụng để đăng nhập và thực thi các lệnh trên server của bạn thông qua SSH.

Đăng nhập vào server LEMP của bạn bằng một user không phải root có quyền sudo và tạo một user mới có tên là “người triển khai ” bằng lệnh sau:

  • sudo adduser deployer

Laravel cần một số folder có thể ghi để lưu trữ các file được lưu trong bộ nhớ cache và tải lên, do đó, các folder do user triển khai tạo phải được web server Nginx có thể ghi được. Thêm user vào group dữ liệu www để thực hiện việc này:

  • sudo usermod -aG www-data deployer

Quyền mặc định cho file do user triển khai tạo phải là 644 cho file và 755 cho folder . Bằng cách này, user triển khai sẽ có thể đọc và ghi các file , trong khi group và những user khác sẽ có thể đọc chúng.

Thực hiện việc này bằng cách đặt umask mặc định của người triển khai thành 022 :

  • sudo chfn -o umask=022 deployer

Ta sẽ lưu trữ ứng dụng trong folder /var/www/html/ , vì vậy hãy thay đổi quyền sở hữu của folder thành user triển khai và group dữ liệu www .

  • sudo chown deployer:www-data /var/www/html

User triển khai cần có khả năng sửa đổi các file và folder trong folder /var/www/html . Do đó, tất cả các file và folder con mới được tạo trong folder /var/www/html phải kế thừa id group của folder ( www-data ). Để làm điều này, hãy đặt id group trên folder này bằng lệnh sau:

  • sudo chmod g+s /var/www/html

Người triển khai sẽ sao chép Git repo vào server production bằng SSH, vì vậy bạn muốn đảm bảo kết nối giữa server LEMP và server Git được an toàn. Ta sẽ sử dụng phương pháp tương tự mà ta đã sử dụng cho máy local của bạn và ta sẽ tạo SSH key cho user triển khai .

Chuyển sang user triển khai trên server của bạn:

  • su - deployer

Tiếp theo, tạo một cặp SSH key với quyền là user triển khai . Lần này, bạn có thể chấp nhận tên file mặc định của các SSH key :

  • ssh-keygen -t rsa -b 4096

Hiển thị public key :

  • cat ~/.ssh/id_rsa.pub

Sao chép public key và thêm nó vào server Git của bạn như bạn đã làm trong bước trước.

Máy local của bạn cũng sẽ giao tiếp với server bằng SSH, vì vậy bạn nên tạo SSH key cho user triển khai trên máy local của bạn và thêm public key vào server .

Trên máy local của bạn, hãy chạy lệnh sau. Vui lòng thay thế triển khai phím bằng tên file bạn chọn:

  • ssh-keygen -t rsa -b 4096 -f ~/.ssh/deployerkey

Sao chép kết quả của lệnh sau có chứa public key :

  • cat ~/.ssh/deployerkey.pub

Trên server của bạn khi user triển khai chạy như sau:

  • nano ~/.ssh/authorized_keys

Dán public key vào editor và nhấn CTRL-X , Y , sau đó ENTER để lưu và thoát.

Hạn chế quyền của file :

  • chmod 600 ~/.ssh/authorized_keys

Bây giờ chuyển trở lại user sudo:

  • exit

Bây giờ server của bạn có thể kết nối với server Git và bạn có thể đăng nhập vào server với user triển khai từ máy local của bạn.

Đăng nhập từ máy local vào server của bạn với quyền là user triển khai để kiểm tra kết nối:

  • ssh deployer@your_server_ip -i ~/.ssh/deployerkey

Sau khi bạn đã đăng nhập với quyền là người triển khai , hãy kiểm tra kết nối giữa server của bạn và server Git:

  • ssh -T git@mygitserver.com

Cuối cùng, thoát khỏi server :

  • exit

Từ đây, ta có thể chuyển sang cấu hình Nginx và MySQL trên web server của bạn .

Bước 4 - Cấu hình Nginx

Bây giờ ta đã sẵn sàng để cấu hình web server sẽ phục vụ ứng dụng. Điều này sẽ liên quan đến việc cấu hình cấu trúc folder và root của tài liệu mà ta sẽ sử dụng để chứa các file Laravel. Ta sẽ cài đặt Nginx để phục vụ các file của ta từ folder /var/www/laravel .

Đầu tiên, ta cần tạo tệp cấu hình khối server cho trang web mới.

Đăng nhập vào server với quyền là user sudo của bạn và tạo một file cấu hình mới. Hãy nhớ thay thế example.com bằng domain của bạn :

  • sudo nano /etc/nginx/sites-available/example.com

Thêm khối server vào đầu file cấu hình:

example.com '> / etc / nginx / sites-available / example.com
server {         listen 80;         listen [::]:80;          root /var/www/html/laravel-app/current/public;         index index.php index.html index.htm index.nginx-debian.html;          server_name example.com www.example.com; } 

Hai chỉ thị listen ở trên cùng cho Nginx biết cổng nào sẽ lắng nghe và chỉ thị root xác định root tài liệu nơi Laravel sẽ được cài đặt. Hiện current/public trong đường dẫn của folder root là một softlink trỏ đến bản phát hành mới nhất của ứng dụng. Bằng cách thêm index thị index , ta yêu cầu Nginx phân phát bất kỳ index.php nào trước khi tìm kiếm đối tác HTML của chúng khi yêu cầu vị trí folder . Chỉ thị server_name phải được tuân theo bởi domain của bạn và bất kỳ alias nào của domain đó.

Ta cũng nên sửa đổi cách mà Nginx sẽ xử lý các yêu cầu. Điều này được thực hiện thông qua chỉ thị try_files . Ta muốn nó cố gắng phân phát yêu cầu dưới dạng file trước tiên và nếu nó không thể tìm thấy file có tên chính xác, nó sẽ cố gắng phân phát file index mặc định cho một folder phù hợp với yêu cầu. Không thực hiện được, nó sẽ chuyển yêu cầu đến index.php dưới dạng tham số truy vấn.

example.com '> / etc / nginx / sites-available / example.com
server {         listen 80;         listen [::]:80;          root /var/www/html/laravel-app/current/public;         index index.php index.html index.htm index.nginx-debian.html;          server_name example.com www.example.com;          location / {                 try_files $uri $uri/ /index.php?$query_string;         } 

Tiếp theo, ta cần tạo một khối xử lý việc thực thi thực tế của các file PHP nào. Điều này sẽ áp dụng cho các file nào kết thúc bằng .php. Nó sẽ thử chính file và sau đó cố gắng chuyển nó dưới dạng tham số cho index.php .

Ta sẽ đặt các chỉ thị fastcgi để yêu cầu Nginx sử dụng đường dẫn thực tế của ứng dụng (được giải quyết sau khi theo softlink ), thay vì softlink . Nếu bạn không thêm các dòng này vào cấu hình, đường dẫn nơi các điểm softlink sẽ được lưu vào bộ nhớ đệm, nghĩa là version cũ của ứng dụng của bạn sẽ được tải sau khi triển khai. Nếu không có các chỉ thị này, bạn sẽ phải xóa bộ nhớ cache theo cách thủ công sau mỗi lần triển khai và các yêu cầu tới ứng dụng của bạn có thể không thành công. Ngoài ra, lệnh fastcgi_pass sẽ đảm bảo Nginx sử dụng socket mà php7-fpm đang sử dụng để giao tiếp và index.php được sử dụng làm index cho các hoạt động này.

example.com '> / etc / nginx / sites-available / example.com
server {         listen 80;         listen [::]:80;          root /var/www/html/laravel-app/current/public;         index index.php index.html index.htm index.nginx-debian.html;          server_name example.com www.example.com;          location / {                 try_files $uri $uri/ /index.php?$query_string;         }           location ~ \.php$ {                 include snippets/fastcgi-php.conf;                  fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;                 fastcgi_param DOCUMENT_ROOT $realpath_root;                  fastcgi_pass unix:/run/php/php7.0-fpm.sock;          } 

Cuối cùng, ta muốn đảm bảo Nginx không cho phép truy cập vào bất kỳ .htaccess ẩn nào. Ta sẽ thực hiện việc này bằng cách thêm một khối vị trí nữa được gọi là location ~ /\.ht và trong khối đó, một lệnh chỉ định deny all; .

Sau khi thêm khối vị trí cuối cùng này, file cấu hình sẽ giống như sau:

example.com '> / etc / nginx / sites-available / example.com
server {         listen 80;         listen [::]:80;          root /var/www/html/laravel-app/current/public;         index index.php index.html index.htm index.nginx-debian.html;          server_name example.com www.example.com;          location / {                 try_files $uri $uri/ /index.php?$query_string;         }           location ~ \.php$ {                 include snippets/fastcgi-php.conf;                  fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;                 fastcgi_param DOCUMENT_ROOT $realpath_root;                  fastcgi_pass unix:/run/php/php7.0-fpm.sock;          }          location ~ /\.ht {                 deny all;         }  } 

Lưu file ( CTRL-X , Y , sau đó ENTER ), sau đó bật khối server mới bằng cách tạo softlink đến folder sites-enabled :

  • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Kiểm tra file cấu hình của bạn để tìm lỗi cú pháp:

  • sudo nginx -t

Nếu bạn thấy bất kỳ lỗi nào, hãy quay lại và kiểm tra lại file của bạn trước khi tiếp tục.

Khởi động lại Nginx để áp dụng các thay đổi cần thiết:

  • sudo systemctl restart nginx

Server Nginx hiện đã được cấu hình . Tiếp theo, ta sẽ cấu hình database MySQL của ứng dụng.

Bước 5 - Cấu hình MySQL

Sau khi cài đặt, MySQL tạo user gốc theo mặc định. Tuy nhiên, user này có các quyền không giới hạn, do đó, việc sử dụng user gốc cho database của ứng dụng là một phương pháp bảo mật không tốt. Thay vào đó, ta sẽ tạo database cho ứng dụng với một user chuyên dụng.

Đăng nhập vào console MySQL bằng quyền root :

  • mysql -u root -p

Thao tác này sẽ nhắc bạn nhập password gốc .

Tiếp theo, tạo một database mới cho ứng dụng:

  • CREATE DATABASE laravel_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Sau đó, tạo một user database mới. Với mục đích của hướng dẫn này, ta sẽ gọi user này là laravel_user bằng mật password , mặc dù bạn nên thay thế password bằng một password mạnh mà bạn chọn.

  • CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'password';

Cấp các quyền trên database cho user :

  • GRANT ALL ON laravel_database.* TO 'laravel_user'@'localhost';

Tiếp theo, reload các quyền :

  • FLUSH PRIVILEGES;

Và cuối cùng, thoát khỏi console MySQL:

  • EXIT;

Database và user của ứng dụng của bạn hiện đã được cấu hình và bạn gần như đã sẵn sàng để chạy triển khai đầu tiên của bạn .

Bước 6 - Triển khai ứng dụng

Lúc này, bạn đã cấu hình tất cả các công cụ và chương trình cần thiết để Deployer hoạt động. Tất cả những gì còn lại cần làm trước khi chạy triển khai đầu tiên của bạn là hoàn tất việc cấu hình ứng dụng Laravel và chính Trình triển khai của bạn, đồng thời khởi tạo và đẩy ứng dụng vào repository Git từ xa của bạn.

Mở terminal trên máy local của bạn và thay đổi folder làm việc thành folder của ứng dụng bằng lệnh sau:

  • cd /path/to/laravel-app

Từ folder này, hãy chạy lệnh sau để tạo một file có tên là deploy.php trong folder laravel-app , chứa thông tin cấu hình và các việc để triển khai:

  • dep init -t Laravel

Tiếp theo, mở file deploy.php bằng editor hoặc IDE bạn muốn . Dòng thứ ba bao gồm một tập lệnh PHP chứa các việc và cấu hình cần thiết để triển khai một ứng dụng Laravel:

deploy.php
<?php namespace Deployer;  require 'recipe/laravel.php';  . . . 

Dưới đây là một số trường mà bạn nên chỉnh sửa để phù hợp với cấu hình của bạn :

  • Trong // Project Name , thêm tên dự án Laravel của bạn.
  • Trong // Project Repository , hãy thêm liên kết vào repository Git của bạn.
  • Trong phần // Hosts , hãy thêm địa chỉ IP hoặc domain của server của bạn vào lệnh host() , tên của user Người triển khai của bạn (người triển khai trong các ví dụ của ta ) vào lệnh user() . Bạn cũng nên thêm SSH key mà bạn đã tạo ở Bước 3 vào chỉ thị defineFile identifyFile() . Cuối cùng, bạn nên thêm đường dẫn file của folder chứa ứng dụng của bạn .

Khi bạn hoàn tất việc chỉnh sửa các trường này, chúng sẽ trông như thế này:

deploy.php
... // Project name set('application', 'laravel-app');  // Project repository set('repository', 'git@mygitserver.com:username/repository.git');  . . .  // Hosts  host('your_server_ip')     ->user('deployer')     ->identityFile('~/.ssh/deployerkey')     ->set('deploy_path', '/var/www/html/laravel-app');  

Tiếp theo, hãy comment dòng cuối cùng của file , before('deploy:symlink', 'artisan:migrate'); . Dòng này hướng dẫn Người triển khai tự động chạy quá trình di chuyển database và bằng cách comment nó, ta đang vô hiệu hóa nó. Nếu bạn không comment nó, việc triển khai sẽ không thành công vì dòng này yêu cầu thông tin đăng nhập database thích hợp trên server , chỉ có thể được thêm vào bằng cách sử dụng file sẽ được tạo trong lần triển khai đầu tiên:

deploy.php
... // Migrate database before symlink new release.  //before('deploy:symlink', 'artisan:migrate'); 

Trước khi ta có thể triển khai dự án, trước tiên ta phải đẩy nó vào repository Git từ xa.

Trên máy local của bạn, hãy thay đổi folder làm việc thành folder ứng dụng của bạn:

  • cd /path/to/laravel-app

Chạy lệnh sau trong folder laravel-app của bạn để khởi tạo repository Git trong folder dự án:

  • git init

Tiếp theo, thêm tất cả các file dự án vào repository :

  • git add .

Commit các thay đổi :

  • git commit -m 'Initial commit for first deployment.'

Thêm server Git của bạn vào repository local bằng lệnh sau. Đảm bảo thay thế văn bản được đánh dấu bằng URL của repository từ xa của bạn :

  • git remote add origin git@mygitserver.com:username/repository.git

Đẩy các thay đổi vào repository Git từ xa:

  • git push origin master

Cuối cùng, chạy triển khai đầu tiên của bạn bằng lệnh dep :

  • dep deploy

Nếu mọi thứ suôn sẻ, bạn sẽ thấy một kết quả như thế này với Successfully deployed! cuối cùng:

Deployer's output
✈︎ Deploying master on your_server_ip ✔ Executing task deploy:prepare ✔ Executing task deploy:lock ✔ Executing task deploy:release ➤ Executing task deploy:update_code ✔ Ok ✔ Executing task deploy:shared ✔ Executing task deploy:vendors ✔ Executing task deploy:writable ✔ Executing task artisan:storage:link ✔ Executing task artisan:view:clear ✔ Executing task artisan:cache:clear ✔ Executing task artisan:config:cache ✔ Executing task artisan:optimize ✔ Executing task deploy:symlink ✔ Executing task deploy:unlock ✔ Executing task cleanup Successfully deployed!

Cấu trúc sau sẽ được tạo trên server của bạn, bên trong folder /var/www/html/ laravel-app :

├── .dep ├── current -> releases/1 ├── releases │   └── 1 └── shared     ├── .env     └── storage 

Xác minh điều này bằng cách chạy lệnh sau trên server của bạn, lệnh này sẽ liệt kê các file và folder trong folder :

  • ls /var/www/html/laravel-app
Output
current .dep releases shared

Đây là những gì mỗi file và folder này chứa:

  • Thư mục releases chứa các bản phát hành triển khai của ứng dụng Laravel.

  • current là một softlink cho bản phát hành cuối cùng.

  • Thư mục .dep chứa metadata đặc biệt cho Người triển khai.

  • Thư mục shared chứa file cấu hình .env và folder storage sẽ được liên kết với mỗi bản phát hành.

Tuy nhiên, ứng dụng sẽ chưa hoạt động vì file .env trống. Tệp này được sử dụng để giữ các cấu hình quan trọng như khóa ứng dụng - một chuỗi ngẫu nhiên được sử dụng để mã hóa. Nếu nó không được đặt, phiên user và dữ liệu được mã hóa khác của bạn sẽ không được bảo mật. Ứng dụng có file .env trên máy local của bạn, nhưng file .gitignore của Laravel loại trừ file đó khỏi kho Git vì lưu trữ dữ liệu nhạy cảm như password trong repository lưu trữ Git không phải là một ý tưởng hay và ứng dụng cũng yêu cầu cài đặt khác trên server của bạn . Tệp .env chứa cài đặt kết nối database , đó là lý do tại sao ta vô hiệu hóa việc di chuyển database cho lần triển khai đầu tiên.

Hãy cấu hình ứng dụng trên server của bạn.

Đăng nhập vào server của bạn với quyền là user triển khai :

  • ssh deployer@your_server_ip -i ~/.ssh/deployerkey

Chạy lệnh sau trên server của bạn , copy paste file .env local của bạn vào editor :

  • nano /var/www/html/laravel-app/shared/.env

Trước khi bạn có thể lưu nó, có một số thay đổi mà bạn nên thực hiện. Đặt APP_ENV thành production , APP_DEBUG thành false , APP_LOG_LEVEL thành error và đừng quên thay thế database , user database và password của bạn . Bạn cũng nên thay thế example.com bằng domain của riêng mình:

/var/www/html/laravel-app/shared/.env
APP_NAME=Laravel APP_ENV=production APP_KEY=base64:cA1hATAgR4BjdHJqI8aOj8jEjaaOM8gMNHXIP8d5IQg= APP_DEBUG=false APP_LOG_LEVEL=error APP_URL=http://example.com  DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_database DB_USERNAME=laravel_user DB_PASSWORD=password  BROADCAST_DRIVER=log CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=sync  REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 

Lưu file và đóng editor .

Bây giờ bỏ comment cuối cùng của file deploy.php trên máy local của bạn:

deploy.php
... // Migrate database before symlink new release.  before('deploy:symlink', 'artisan:migrate'); 

Cảnh báo: Điều này sẽ khiến quá trình di chuyển database của bạn tự động chạy trên mỗi lần triển khai. Điều này sẽ cho phép bạn tránh di chuyển database theo cách thủ công, nhưng đừng quên backup database của bạn trước khi triển khai.

Để kiểm tra xem cấu hình này có hoạt động không, hãy triển khai ứng dụng . Chạy lệnh sau trên máy local của bạn :

  • dep deploy

Bây giờ, ứng dụng của bạn sẽ hoạt động chính xác. Nếu bạn truy cập vào domain của server ( http://example.com ), bạn sẽ thấy trang đích sau:

Trang đích của Laravel

Bạn không phải chỉnh sửa file .env trên server của bạn trước khi triển khai tất cả. Việc triển khai điển hình không phức tạp như lần đầu tiên và được thực hiện chỉ với một vài lệnh.

Bước 7 - Chạy một triển khai điển hình

Bước cuối cùng, phần này sẽ trình bày một quy trình triển khai đơn giản mà bạn có thể sử dụng hàng ngày.

Bắt đầu bằng cách sửa đổi ứng dụng trước khi bạn triển khai lại. Ví dụ: bạn có thể thêm một tuyến mới trong file routes/web.php :

/routes/web.php
<?php  . . .  Route::get('/', function () {     return view('welcome'); });  Route::get('/greeting', function(){     return 'Welcome!'; }); 

Commit những thay đổi này:

  • git commit -am 'Your commit message.'

Đẩy các thay đổi vào repository Git từ xa:

  • git push origin master

Và cuối cùng, triển khai ứng dụng:

  • dep deploy

Bạn đã triển khai thành công ứng dụng đến server của bạn .

Kết luận

Bạn đã cấu hình máy tính local và server của bạn để dễ dàng triển khai ứng dụng Laravel mà không mất thời gian chết. Bài viết chỉ trình bày những kiến thức cơ bản về Deployer và nó có nhiều chức năng hữu ích. Bạn có thể triển khai đến nhiều server hơn cùng một lúc và tạo các việc ; ví dụ, bạn có thể chỉ định một nhiệm vụ backup database trước khi di chuyển. Nếu bạn muốn tìm hiểu thêm về các tính năng của Người triển khai, bạn có thể tìm thêm thông tin trong tài liệu Người triển khai .


Tags:

Các tin liên quan

Cách thiết lập trang web phát triển Jekyll trên Ubuntu 16.04
2018-03-20
Cách cài đặt Ruby on Rails với rbenv trên Ubuntu 16.04
2018-03-15
Cách cài đặt Node.js trên Ubuntu 16.04
2018-03-07
Cách cài đặt và bảo mật Memcached trên Ubuntu 16.04
2018-03-06
Cách cài đặt Buildbot trên Ubuntu 16.04
2018-03-06
Cách quản lý an toàn bí mật với HashiCorp Vault trên Ubuntu 16.04
2018-02-28
Cách bảo mật Roundcube trên Ubuntu 16.04
2018-02-24
Cách cài đặt ứng dụng Webmail của riêng bạn với Roundcube trên Ubuntu 16.04
2018-02-24
Cách thiết lập và sử dụng LXD trên Ubuntu 16.04
2018-02-22
Cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 16.04
2018-02-20