của András Magyar

Phát triển PHP trên Windows có một số nhược điểm. Tuy nhiên, Microsoft hiện cung cấp một tùy chọn tuyệt vời cho các nhà phát triển PHP làm việc trên Windows: Hệ thống con Windows dành cho Linux (WSL). WSL là lớp tương thích để chạy các tệp thực thi nhị phân Linux (ở định dạng ELF) nguyên bản trên Windows 10. Microsoft cho biết:
“Đây chủ yếu là một công cụ dành cho các nhà phát triển — đặc biệt là các nhà phát triển web và những người làm việc trên hoặc với các dự án nguồn mở”.
Chúng ta có thể chạy môi trường Linux trực tiếp trên Windows mà không cần máy ảo.
Ghi chú: Bài viết này không chỉ dành cho Người dùng nội bộ Windows. Các phương pháp này cũng sẽ hoạt động trên các bản phát hành ổn định mới nhất của Windows 10.
Trong hướng dẫn này, chúng tôi sẽ thiết lập ngăn xếp LAMP (Ubuntu 16.04, Apache, PHP 7.1, MariaDB) trên WSL để phát triển. Bạn có thể thiết lập các ngăn xếp khác (ví dụ: ngăn xếp LEMP) bằng các phương pháp tương tự.
điều kiện tiên quyết
Trước khi bạn bắt đầu hướng dẫn này, bạn sẽ cần những điều sau đây:
Bước 1: cài đặt bash trên Windows
Trước tiên, bạn sẽ cần cài đặt WSL trên máy tính của mình.
Bạn có thể cài đặt thêm các bản phân phối Linux từ Microsoft Store (Ubuntu, openSUSE, SUSE Linux Enterprise Server 12). Tuy nhiên, trong hướng dẫn này, chúng tôi sẽ thiết lập ngăn xếp LAMP trên Ubuntu, vì vậy bạn cần chọn Ubuntu.
Microsoft có một bài hướng dẫn rất hay về cách cài đặt WSL, hãy làm theo hướng dẫn của bài viết.
Nếu bạn đã cài đặt thành công Bash trên Ubuntu trên Windows, hãy cài đặt và định cấu hình ngăn xếp LAMP đơn giản để phát triển.
Bước 2: cài đặt máy chủ HTTP Apache
Chúng tôi muốn cài đặt phiên bản ổn định mới nhất của Apache, nhưng các kho chính thức của Ubuntu không chứa bản phát hành mới nhất.
Chúng tôi cần thêm một PPA cho các gói Apache. Kho lưu trữ gói cá nhân (PPA) là kho lưu trữ cho phép các nhà phát triển bên thứ ba xây dựng và phân phối các gói cho Ubuntu. PPA của Ondřej Surý cung cấp các gói Apache/PHP mới nhất cho Ubuntu.
Để thêm PPA, hãy chạy lệnh sau trong bash WSL:
sudo add-apt-repository ppa:ondrej/apache2
Khi PPA được định cấu hình, hãy cập nhật chỉ mục gói cục bộ:
sudo apt-get update
Cài đặt Apache:
sudo apt-get install apache2
Tạo một thư mục dự án cho các ứng dụng web của bạn. Thư mục này phải nằm ngoài hệ thống tệp WSL. Tôi khuyên bạn nên sử dụng thư mục Tài liệu của mình.
Lệnh sau sẽ tạo một thư mục máy chủ bên trong thư mục Tài liệu của bạn. hãy thay thế TÊN NGƯỜI DÙNG WINDOWS CỦA BẠN với tên người dùng Windows của bạn.
sudo mkdir /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server
Tạo một liên kết tượng trưng đến thư mục đã chọn.
sudo ln -s /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server /var/www/devroot
Mở tệp cấu hình máy chủ ảo mặc định của Apache:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Sửa đổi gốc tài liệu thành “/var/www/devroot”, trỏ đến thư mục dự án của bạn bên ngoài hệ thống tệp của WSL. Bộ ServerName
đến localhost
(nếu cổng 80 được ứng dụng Windows dành riêng, hãy thay thế 80 bằng cổng không sử dụng):
<VirtualHost *:80> ServerName localhost ServerAdmin [email protected] DocumentRoot /var/www/devroot <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>
Khi bạn hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl-O và nhấn Enter để xác nhận. Thoát bằng Ctrl-X.
Mở trình soạn thảo/IDE Windows yêu thích của bạn và tạo tệp “index.html” trong thư mục dự án của bạn (C:\Users\ TÊN NGƯỜI DÙNG WINDOWS CỦA BẠN\Documents\server) với nội dung như sau:
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>It works!</title></head><body> <h1>It works!</h1></body></html>
Khởi động máy chủ HTTP Apache:
sudo service apache2 start
Mở http://localhost/ trong trình duyệt của bạn và bạn sẽ thấy tiêu đề “It works”.
Đừng quên bật các mô-đun Apache cần thiết cho bạn. Ví dụ: bạn có thể bật mod_rewrite:
sudo a2enmod rewritesudo service apache2 restart
Bước 3: cài đặt máy chủ MariaDB
Thêm một repo chứa các gói MariaDB mới nhất:
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ams2.mirrors.digitalocean.com/mariadb/repo/10.2/ubuntu xenial main'
Cài đặt MariaDB:
sudo apt-get updatesudo apt-get install mariadb-server
Bạn sẽ được nhắc tạo mật khẩu gốc trong quá trình cài đặt. Chọn một mật khẩu an toàn và ghi nhớ nó, bởi vì bạn sẽ cần nó sau này.
Bắt đầu MariaDB:
sudo service mysql start
Chạy tập lệnh sau (điều này thay đổi một số tùy chọn mặc định kém an toàn hơn):
mysql_secure_installation
Bước 4: cài đặt PHP
Thêm PPA cho PHP mới nhất:
sudo add-apt-repository ppa:ondrej/phpsudo apt-get update
Cài đặt gói PHP 7.1:
sudo apt-get install php7.1 libapache2-mod-php7.1 php7.1-mcrypt php7.1-mysql php7.1-mbstring php7.1-gettext php7.1-xml php7.1-json php7.1-curl php7.1-zip
Chúng ta phải khởi động lại Apache:
sudo service apache2 restart
Tạo một tệp info.php trong thư mục dự án của bạn với nội dung sau:
<?phpphpinfo();
Mở http://localhost/info.php trong trình duyệt của bạn. Nếu PHP hoạt động chính xác, bạn sẽ thấy như sau:

Bước 5: cài đặt phpMyAdmin
phpMyAdmin là một công cụ quản trị mã nguồn mở và miễn phí dành cho MySQL và MariaDB.
Với phpMyAdmin, bạn có thể dễ dàng tạo/quản lý cơ sở dữ liệu của mình bằng giao diện web.
sudo apt-get install phpmyadmin
- Khi lời nhắc đầu tiên xuất hiện, nhấn Space, Tab, rồi Enter để chọn Apache.
- Chọn có khi được yêu cầu sử dụng dbconfig-common để thiết lập cơ sở dữ liệu.
- Cung cấp mật khẩu gốc MariaDB của bạn
- Chọn mật khẩu cho chính ứng dụng phpMyAdmin
Kích hoạt các phần mở rộng PHP cần thiết:
sudo phpenmod mcryptsudo phpenmod mbstring
Khởi động lại Apache:
sudo service apache2 restart
Bây giờ bạn có thể truy cập phpMyAdmin trên URL sau: http://localhost/phpmyadmin/
Bạn có thể đăng nhập bằng tên người dùng gốc và mật khẩu gốc mà bạn đã thiết lập trong quá trình cài đặt MariaDB.
Bước 6: cài đặt Composer
Composer là trình quản lý gói cho PHP. Nó cho phép bạn cài đặt/cập nhật các thư viện mà dự án của bạn phụ thuộc vào. Nếu bạn là nhà phát triển PHP, bạn có thể sử dụng trình soạn thảo.
Truy cập trang tải xuống của Composer và làm theo hướng dẫn trong phần Cài đặt dòng lệnh. Sau khi Composer đã cài đặt thành công, bạn có thể cài đặt nó trên toàn cầu:
sudo mv composer.phar /usr/local/bin/composer
Bây giờ nó có thể được chạy từ bất kỳ vị trí nào bằng cách gõ:
composer

Bước 7: cài đặt Git:
Git là một hệ thống kiểm soát phiên bản chủ yếu được sử dụng để quản lý mã nguồn. Tìm hiểu thêm về Git tại đây.
Bạn có thể cài đặt nó bằng cách chạy lệnh sau:
sudo apt-get install git
Trước khi bạn sử dụng Git (và nếu bạn chưa quen với nó), vui lòng đọc phần “Cách thiết lập Git” từ hướng dẫn Cách cài đặt Git trên Ubuntu 16.04.
Bước 8: tự động khởi động LAMP trên WSL (tùy chọn)
Các tác vụ nền hiện không được hỗ trợ trên WSL. Khi bạn đóng Bash, các dịch vụ của bạn (Apache và MariaDB) sẽ dừng lại.
Lưu ý dành cho Người dùng nội bộ Windows: Các tác vụ nền hiện được hỗ trợ trên WSL bắt đầu với Windows Insider Build 17046 (để biết thêm chi tiết, bạn có thể đọc bài đăng trên blog sau: Hỗ trợ tác vụ nền trong WSL), nhưng dịch vụ tự động bắt đầu vẫn không khả dụng.
Thật không may, việc tự động bắt đầu dịch vụ của bạn hơi khó khăn.
Hãy cấu hình tự khởi động!
Chúng tôi cần bắt đầu dịch vụ mà không cần nhập mật khẩu của bạn.
Trước khi bạn bắt đầu với điều nàyvui lòng xem hướng dẫn sau đây Cách chỉnh sửa tệp Sudoers trên Ubuntu và CentOS.
Chạy lệnh sau:
sudo visudo -f /etc/sudoers.d/services
Sao chép và dán phần sau vào trình chỉnh sửa rồi lưu lại:
%sudo ALL=(root) NOPASSWD: /usr/sbin/service *%wheel ALL=(root) NOPASSWD: /usr/sbin/service *
Điều này cho phép chúng tôi bắt đầu các dịch vụ (như Apache và MariaDB) mà không cần sử dụng mật khẩu của chúng tôi.
Bắt đầu Dấu nhắc Lệnh (không phải bash) với tư cách quản trị viên và chạy:
SchTasks /Create /SC ONLOGON /TN "Start WSL LAMP" /TR "c:\Windows\System32\bash.exe -c 'sudo service apache2 start; sudo service mysql start; cd ~; bash'"
Lệnh trên tạo một tác vụ tự động chạy khi bạn đăng nhập vào Windows. Nó làm như sau:
- Bắt đầu Apache
- Bắt đầu MariaDB
- Thay đổi thư mục thành thư mục chính của bạn
Đừng quên: khi bạn đóng cửa sổ đầu cuối, các dịch vụ sẽ dừng và bạn nên khởi động lại chúng theo cách thủ công!
Bước 9: thêm miền thử nghiệm (tùy chọn)
Khi bạn làm việc trên nhiều ứng dụng web hơn, nhiều miền thử nghiệm sẽ hữu ích. Ví dụ: nếu bạn đang làm việc trên myapp.com, bạn có thể truy cập phiên bản phát triển cục bộ trên http://myapp.test/ thay vì http://localhost/myapp.
Trong phần sau, bạn có thể thay thế “myapp” bằng tên ứng dụng web của mình.
Tạo một thư mục trong thư mục dự án cho ứng dụng web của bạn:
sudo mkdir /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server/myapp
Thêm tệp máy chủ ảo vào Apache:
sudo nano /etc/apache2/sites-available/myapp.test.conf
Lưu cấu hình sau vào tệp mới (đừng quên thay myapp bằng tên ứng dụng của bạn).
<VirtualHost *:80>
ServerName myapp.test
ServerAdmin [email protected] DocumentRoot /var/www/devroot/myapp
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Kích hoạt trang web mới:
sudo a2ensite myapp.test
Khởi động lại Apache:
sudo service apache2 restart
Cuối cùng, khởi động Notepad hoặc trình soạn thảo/IDE yêu thích của bạn trên Windows với quyền quản trị viên (Chạy như quản trị viên) và mở máy chủ tập tin. Nó nằm ở c:\windows\system32\driver\etc thư mục.
Thêm dòng sau vào cuối tệp và lưu nó:
127.0.0.1 myapp.test
Bây giờ bạn có thể truy cập ứng dụng web của mình trên miền http://myapp.test/.
Bạn cũng có thể thêm nhiều miền thử nghiệm hơn bằng phương pháp tương tự.
Phần kết luận
WSL không thay thế Vagrant hoặc Docker và nó đang thử nghiệm. Dịch vụ tự động bắt đầu hiện không được hỗ trợ trên WSL và đây là một trong những vấn đề lớn nhất với nó tại thời điểm này. Tuy nhiên, Hệ thống con Windows dành cho Linux là một tùy chọn tuyệt vời cho các nhà phát triển sử dụng trình bao Linux gốc trên Windows. Tôi nghĩ bạn nên thử!