Hướng dẫn php virtual machine - máy ảo php

  • Trang chủ
  • Hướng dẫn học
  • Học PHP
  • Cấu hình Virtual Host trong XAMPP

Cấu hình Virtual Host trong XAMPP

  • Trong hướng dẫn cài đặt XAMPP chúng ta đã biết chạy một file PHP như thế nào, đối với một file PHP có tên hello-world.php được chứa trong folder myproject ta chỉ cần chạy trên thanh địa chỉ của trình duyệt http://localhost/myproject/hello-world.php, nếu chưa biết thì bạn cần xem lại phần Thư mục làm việc với XAMPP.hello-world.php được chứa trong folder myproject ta chỉ cần chạy trên thanh địa chỉ của trình duyệt http://localhost/myproject/hello-world.php, nếu chưa biết thì bạn cần xem lại phần Thư mục làm việc với XAMPP.
  • Theo cách trên, ứng với mỗi project, chúng ta sẽ có một đường dẫn tương ứng:

    • http://localhost/myproject/hello-world.php myproject/hello-world.php
    • http://localhost/project_a/hello-world.phpproject_a/hello-world.php
    • http://localhost/project_b/hello-world.phpproject_b/hello-world.php
  • Cách sử dụng trên sẽ trở nên dài vì có thêm tên project, hoặc sẽ trở nên bất tiện nếu chúng ta sử dụng đường dẫn root có dạng /myproject/include/file.php./myproject/include/file.php.
  • Để giải quyết vấn đề trên, chúng ta sẽ cấu hình XAMPP sao cho có thể chạy được nhiều domain ngắn gọn hơn và có thể dùng root path tiện lợi hơn, khi này thay vì viết như trên, chúng ta có thể sử dụng đường dẫn như sau:

    • http://localhost:81/hello-world.php:81/hello-world.php
    • http://localhost:82/hello-world.php:82/hello-world.php
    • http://localhost:83/hello-world.php:83/hello-world.php
  • Chúng ta cũng có thể sử dụng cách này để cấu hình chạy nhiều domain trong cùng một server.

Thêm port cho XAMPP: httpd.conf

  • Mở file C:\xampp\apache\conf\httpd.conf với một công cụ chỉnh sửa (editor) nào đó, notepad cũng được, hoặc truy cập file trực tiếp từ XAMPP theo hình bên dưới.C:\xampp\apache\conf\httpd.conf với một công cụ chỉnh sửa (editor) nào đó, notepad cũng được, hoặc truy cập file trực tiếp từ XAMPP theo hình bên dưới.

Hướng dẫn php virtual machine - máy ảo php

  • Khi file httpd.conf đã được mở, tìm tới dòng
    ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    3, bạn sẽ thấy đoạn code bên trong có dạng như sau:httpd.conf đã được mở, tìm tới dòng
    ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    3, bạn sẽ thấy đoạn code bên trong có dạng như sau:

#Listen 12.34.56.78:80
Listen 80

  • Port 80 là port mặc định chạy http://localhost/ của XAMPP.
  • Từ vị trí này ta thêm nhiều port khác nhau, save lại sau mỗi lần thêm port:

#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83

Cấu hình Virtual Host: httpd-vhosts.conf

  • Mở file C:\xampp\apache\conf\extra\httpd-vhosts.conf với một công cụ chỉnh sửa (editor) nào đó.C:\xampp\apache\conf\extra\httpd-vhosts.conf với một công cụ chỉnh sửa (editor) nào đó.
  • Bên dưới file ta thấy có sẵn đoạn cấu hình mẫu cho port 80 đã được comment không cho chạy bằng dấu #

##
    ##ServerAdmin [email protected]
    ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##

  • Bên dưới đoạn code mẫu này ta thêm đoạn code cấu hình sau:


    DocumentRoot "C:/xampp/htdocs/myproject"
    ServerName myproject.hwc
    ServerAlias www.myproject.hwc
    ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
    CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
    
        Order Allow,Deny
        Allow from all
    

  • ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    4 : Đây là một trong những port đã được thêm vào httpd.conf, nếu cấu hình chạy domain thì chúng ta có thể dùng port 80.
  • ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    5 Thư mục chứa project (khai báo bắt buộc).
  • ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    6 Tên server, dùng tên domain và port nếu có (khai báo bắt buộc).
  • ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    7 Tên thay thế cho tên server (khai báo tùy chọn).
  • ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    8 Đường dẫn tới file log error, sẽ xem lỗi từ đây (khai báo tùy chọn).
  • ##
        ##ServerAdmin [email protected]
        ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
        ##ServerName dummy-host.example.com
        ##ServerAlias www.dummy-host.example.com
        ##ErrorLog "logs/dummy-host.example.com-error.log"
        ##CustomLog "logs/dummy-host.example.com-access.log" common
    ##
    9 Đường dẫn tới file log Uri khi người dùng request (khai báo tùy chọn).
  • 
        DocumentRoot "C:/xampp/htdocs/myproject"
        ServerName myproject.hwc
        ServerAlias www.myproject.hwc
        ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
        CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
        
            Order Allow,Deny
            Allow from all
        
    
    0 Bên trong tag này dùng để cấp quyền cho thư mục.

Sau khi cấu hình như trên hoàn tất, save lại và cần restart Apache, bằng cách mở XAMPP click vào stop tương ứng của Apache và start lại, khi này bạn thử chạy trên trình duyệt lại bằng đường dẫn mới: http://localhost:82/hello-world.php.
http://localhost:82/hello-world.php.

Tương tự như vậy, chúng ta có thể tạo nhiều Virtual Host khác nhau trong cùng một server.

Hướng dẫn php virtual machine - máy ảo php

Đã đăng vào thg 11 18, 2019 9:34 SA 6 phút đọc 6 phút đọc

Mở đầu

  • Khi hoàn thành một project thì công việc tiếp theo là deploy nó để mọi người có thể xem app của bạn. Với những project mang tính chất học tập thì các bạn có thể deply nó lên các server miễn phí (ví dụ Heroku).Tuy nhiên vì nó miễn phí nên nó còn gặp nhiều vấn đề.Chính vì vậy, hôm nay mình sẽ hướng dẫn các bạn deploy một project Laravel sử dụng VPS Ubuntu.

VPS là gì?

  • VPS (Virtual Private Server) là một dạng máy chủ ảo được tạo ra từ phương pháp phân chia một máy chủ vật lý thành nhiều các máy chủ khác nhau có tính năng tương tự như máy chủ riêng. Và chạy dưới dạng chia sẻ tài nguyên từ máy chủ vật lý ban đầu. Và mỗi VPS sẽ có một phần CPU, dung lượng RAM, dung lượng ổ HDD, địa chỉ IP và hệ điều hành riêng biệt, người dùng có toàn quyền quản lý root và có thể khởi động lại hệ thống bất cứ lúc nào họ muốn.

Thông số cần biết khi thuê máy chủ ảo VPS là gì?

  • RAM của máy chủ: Để giúp server VPS hoạt động mượt và ổn định, nên chọn sản phẩm có càng nhiều RAM càng tốt. Hầu hết các loại RAM đều có điểm tương đồng về mặt hiệu năng. Khi mua hay thuê VPS, nên hỏi kĩ nhà cung cấp rằng RAM cho server vật lý hay server ảo.
  • SWAP máy chủ ảo VPS được hiểu là gì? :SWAP là bộ nhớ ảo lưu lại các hành động xử lý cũ nếu như bộ nhớ RAM bị đầy. Bản thân SWAP là một không gian lưu trữ trên ổ cứng chứ không phải là một bộ nhớ độc lập. Không phải VPS nào cũng hỗ trợ bộ nhớ SWAP mà chỉ có các XEN VPS mới hỗ trợ SWAP.
  • Ổ cứng (disk): Là không lưu trữ sẽ được sử dụng để lưu các file cài đặt của hệ điều hành và các file của mã nguồn website bạn lưu trên đó. Ổ đĩa hiện nay được chia làm 2 loại: HDD và SSD. Ổ cứng loại SSD thường giá sẽ đắt hơn loại ổ HDD.
  • Băng thông (Band Width): Hãy ví độ lớn của băng thông cũng như độ rộng của đường phố. Phố càng rộng, giao thông càng thuận lợi và ngược lại. Các nhà cung cấp băng thông thường cung cấp lượng băng thông tối thiểu 10 – 20 Mbps.
  • Thời gian Up-time của máy chủ ảo VPS là gì?: Một lưu ý nữa bạn cần biết khi chọn mua hoặc thuê server đó là thời gian Up-time của nó. Thời gian up-time của VPS thường được ước lượng từ thời gian hoạt động của nó. Thời gian hoạt động của VPS từ 99.95 đến 99.9% thì bạn đều có thể chấp nhận mua được.
  • Hệ điều hành máy chủ ảo VPS là gì? Máy chủ ảo VPS có 2 hệ điều hành phổ biến gồm: Linux và Window. Linux thân thiện người dùng, hỗ trợ ứng dụng nhiều hơn với chi phí ít hơn so với Window. Tuy nhiên, làm việc với Dot Net hoặc Visual Studio, bạn nên chọn VPS Window.

VPS lấy ở đâu ?

  • Chính vì xịn xò như thế nên đa phần VPS đều phải mua.Có một số nhà cung cấp nổi tiếng trên thế giới mà mình biết là:

https://www.vultr.com/

https://www.digitalocean.com/

Hướng dẫn deploy

Đăng nhập

  • Mở Terminal trên Ubuntu lên và gõ lệnh:
    ssh username@ip

(với username và ip là các thông số sau khi đăng ký VPS cung cấp)

Sau đó nhập password (đăng ký VPS cung cấp) Sau khi đăng nhập xong có giao diện thế này

Hướng dẫn php virtual machine - máy ảo php

Cài đặt các thành phần cần thiết để chạy PHP Application

Install nginx

sudo apt install nginx

Install PHP + PHP-FPM

 sudo add-apt-repository ppa:ondrej/php
 sudo apt install php7.3-fpm php7.3-mbstring php7.3-xmlrpc php7.3-soap php7.3-gd php7.3-xml php7.3-cli php7.3-zip php7.3-mysql

install MySQL

sudo apt-get update
sudo apt-get install mysql-server

Sau khi đã cài xong các thành phần cần thiết để chạy PHP Application thì ta cần config lại


    DocumentRoot "C:/xampp/htdocs/myproject"
    ServerName myproject.hwc
    ServerAlias www.myproject.hwc
    ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
    CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
    
        Order Allow,Deny
        Allow from all
    
1 cùng với

    DocumentRoot "C:/xampp/htdocs/myproject"
    ServerName myproject.hwc
    ServerAlias www.myproject.hwc
    ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
    CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
    
        Order Allow,Deny
        Allow from all
    
2, các bạn gõ lệnh

sudo nano /etc/nginx/sites-available/default

nó hiện ra như này

Hướng dẫn php virtual machine - máy ảo php

rồi tìm đến đoạn


    DocumentRoot "C:/xampp/htdocs/myproject"
    ServerName myproject.hwc
    ServerAlias www.myproject.hwc
    ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
    CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
    
        Order Allow,Deny
        Allow from all
    
3 và chỉnh sửa lại đoạn đấy lại như sau:

location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php7.3-cgi alone:
        # fastcgi_pass 127.0.0.1:9000;
        # With php7.3-fpm:
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}

Tạo user deploy - Phục vụ auto deploy (Optional)

  • Để thực hiện các tác vụ deploy trên một user chuyên biệt. Cô lập với các tài khoản user khác.
  • Cần sinh ra SSH key để có thể pull source code thông qua SSH (phục vụ việc auto deploy)
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
0

Chuyển user chạy tiến trình nginx thành user deploy

  • Để tránh các vấn đề về file/folder permission sau khi deploy. Bởi các tiến trình của Nginx cần có quyền đọc, ghi và thực thi trên các thư mục "storage" và "bootstrap/cache"
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
1

Chuyển user chạy tiến trình php-fpm thành user deploy

  • Để tránh các vấn đề về file/folder permission sau khi deploy. Bởi các tiến trình của php-fpm cần có quyền đọc, ghi và thực thi trên các thư mục "storage" và "bootstrap/cache"
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
2

Add deploy key vào repository

  • Vào repository trên github add deploy key

Deployment

ssh lên server

#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
3

Pull code trên repo github của bạn

#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
4

Cài đặt thêm các package phục vụ việc setup

  • install
    
        DocumentRoot "C:/xampp/htdocs/myproject"
        ServerName myproject.hwc
        ServerAlias www.myproject.hwc
        ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
        CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
        
            Order Allow,Deny
            Allow from all
        
    
    4
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
5
  • install
    
        DocumentRoot "C:/xampp/htdocs/myproject"
        ServerName myproject.hwc
        ServerAlias www.myproject.hwc
        ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
        CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
        
            Order Allow,Deny
            Allow from all
        
    
    5
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
6
  • install
    
        DocumentRoot "C:/xampp/htdocs/myproject"
        ServerName myproject.hwc
        ServerAlias www.myproject.hwc
        ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
        CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
        
            Order Allow,Deny
            Allow from all
        
    
    6
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
7

Setup các package và config file


    DocumentRoot "C:/xampp/htdocs/myproject"
    ServerName myproject.hwc
    ServerAlias www.myproject.hwc
    ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
    CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
    
        Order Allow,Deny
        Allow from all
    
7

  • Di chuyển vào project
#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
8

Chạy migrate

#Listen 12.34.56.78:80
Listen 80
Listen 81
Listen 82
Listen 83
9

Bước cuối cùng và quan trọng nhất là Setup virtual host để trỏ vào thư mục project

  • Tạo file config deploy trong nginx và config nó
##
    ##ServerAdmin [email protected]
    ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##
0
  • Vì mặc định nginx nó đang đọc
    
        DocumentRoot "C:/xampp/htdocs/myproject"
        ServerName myproject.hwc
        ServerAlias www.myproject.hwc
        ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
        CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
        
            Order Allow,Deny
            Allow from all
        
    
    8 nên cần xóa file
    
        DocumentRoot "C:/xampp/htdocs/myproject"
        ServerName myproject.hwc
        ServerAlias www.myproject.hwc
        ErrorLog "C:/xampp/apache/logs/myproject.hwc-error.log"
        CustomLog "C:/xampp/apache/logs/myproject.hwc-access.log"
        
            Order Allow,Deny
            Allow from all
        
    
    9 rồi symlinks
        ssh username@ip
    
    0 đến
        ssh username@ip
    
    1 để defaul đọc config ở deploy.conf
##
    ##ServerAdmin [email protected]
    ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##
1
  • Restart nginx, php-fpm:
##
    ##ServerAdmin [email protected]
    ##DocumentRoot "C:/xampp/htdocs/dummy-host.example.com"
    ##ServerName dummy-host.example.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
##
2

Lên trình duyệt gõ địa chỉ ip và xem kết quả nhé

Hướng dẫn php virtual machine - máy ảo php

All rights reserved