Cài đặt môi trường lập trình web trên MacOS (2): config nginx, virtual host, multiple PHP

phần 1, chúng ta đã cài đặt nginx, php và mysql thông qua homebrew. Nhưng như vậy vẫn chưa thể chạy 1 dự án php đơn giản. Phần này sẽ config và kết nối các thứ với nhau cũng như virtual host.

Visual Studio Code

Phần này sẽ cần config các file, bạn có thể sử dụng 1 text editor bất kỳ để mở, chỉnh sửa file. Mình khuyên dùng visual studio code cho việc này. Có thể cài đặt thông qua brew

$ brew cask install visual-studio-code

Dnsmasq

Trước khi config nginx, ta sẽ cài đặt dnsmasq để hỗ trợ cho phần virtual host. Thông thường khi cần dùng virtual host thì ta sẽ config trong web server (apache/nginx) và thêm host vào file /etc/hosts. Với dnsmasq, chúng ta không cần làm vậy, nó sẽ tự động mapping domain *.test chẳng hạn với localhost 127.0.0.1

Đầu tiên, cài đặt dnsmasq qua brew

$ brew install dnsmasq

Thêm .test  host vào dnsmasq

$ echo 'address=/.test/127.0.0.1' > /usr/local/etc/dnsmasq.conf

Hoặc muốn thêm cả .local​vào dnsmasq

$ echo 'address=/.test/127.0.0.1\naddress=/.local/127.0.0.1' > /usr/local/etc/dnsmasq.conf

Khởi động service

$ sudo brew services start dnsmasq

Chạy các lệnh sau để add domain vào resolver

$ sudo mkdir -v /etc/resolver
$ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test'
$ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/local'

Thử ping một domain bất kỳ, ví dụ reishou.test

$ ping reishou.test
PING reishou.test (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.021 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.081 ms

Thư mục code chính

Nginx cài đặt thông qua homebrew sẽ có root document mặc định là /usr/local/var/www. Nhiều người lại thường đặt code ở home ~/ hay chính là /Users/[username]. Đặt code ở đâu tiện thì đặt, tùy ý bạn. Cá nhân mình lại thích đặt ở /Code.

$ sudo mkdir /Code
$ sudo chown reishou:staff /Code

Thay reishou bằng username của bạn, xác định username bằng câu lệnh whoami. Từ đây trờ về sau các câu lệnh hay config sẽ dùng reishou là username, bạn cần tự thay đổi cho phù hợp.

$ whoami
reishou

Config PHP

Mở thư mục /usr/local/etc/php

$ code /usr/local/etc/php

Mở file php-fpm.d/www.conf

alt text

Tìm đoạn về user, group

user = _www
group = _www

đổi thành

user = reishou
group = staff

Thay đoạn listen

listen = 127.0.0.1:9000

thành listen mới

listen = /usr/local/var/run/php73.sock

Mở comment cho phần listen permission (bỏ dấu ;)

;listen.owner = _www
;listen.group = _www
;listen.mode = 0660

và chỉnh sửa thành

listen.owner = reishou
listen.group = staff
listen.mode = 0660

File sau khi chỉnh sửa sẽ như sau

alt text

Chỉnh sửa tương tự cho các php version khác, chú ý chỉ khác ở phần listen, ví dụ config cho bản 7.2

listen = /usr/local/var/run/php72.sock

Sau đó khởi động lại các service php

$ brew services restart php@7.3
$ brew services restart php@7.2

Config nginx

Trước hết cần tạo file config để nginx gọi php

$ code /usr/local/etc/nginx/php73.conf

Copy đoạn sau vào file vừa tạo

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_pass unix:///usr/local/var/run/php73.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param SERVER_NAME $host;
    fastcgi_index index.php;
}

Làm tương tự với file /usr/local/etc/nginx/php72.conf, lưu ý dòng fastcgi_pass

fastcgi_pass unix:///usr/local/var/run/php72.sock;

Tiếp theo mở thư mục /usr/local/etc/nginx

$ code /usr/local/etc/nginx

alt text

Mở file nginx.conf, tìm dòng

#user nobody;

đổi thành

user reishou staff;

Thông thường ta có thể config server ngay trong file nginx.conf, nhưng chúng ta sẽ chia nhỏ các server vào trong thư mục server. Tạo file php73 trong thư mục này với nội dung

server {
    listen 80;
    server_name php73.test;
    index index.php index.html;

    root /Code/php73;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    include php73.conf;
}

Tương tự tạo file php72

server {
    listen 80;
    server_name php72.test;
    index index.php index.html;

    root /Code/php72;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    include php72.conf;
}

Ở đây chúng ta sẽ chạy thử 2 trang php72.test và php73.test với thư mục code cũng như load php config tương ứng. Tạo file /Code/php73/index.php và /Code/php72/index.php với cùng nội dung kiểm tra thông tin php

<span class="token keyword">$ mkdir /Code/php73 /Code/php72
$ echo "<?php phpinfo();" > /Code/php73/index.php</span>
<span class="token keyword">$ echo "<?php phpinfo();" > /Code/php72/index.php</span>

Khởi động lại nginx

$ sudo brew services restart nginx

Nếu thấy được như hình sau tức là bạn đã cài đặt và config thành công

alt text

Phần tiếp theo...

Phần tiếp theo sẽ có nội dung về Xdebug, phpunit và vài thứ linh tinh khác.

Nguồn: https://reishou.wordpress.com/2019/05/16/cai-dat-moi-truong-lap-trinh-web-tren-macos-2-config-nginx-virtual-host-multiple-php/

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Reishou

6 bài viết.
4 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
13 3
(Ảnh) Query filter là một vấn đề khá quen thuộc cho dù bạn code ngôn ngữ hay nền tảng nào. Các form search dữ liệu nâng cao với field, column cần f...
Reishou viết 3 tháng trước
13 3
White
2 0
Tạo file trait App\Http\Response.php $value) { $thisdata$key] = $value; } } public function setHeaders(array $headers) { foreach ($headers...
Reishou viết 11 tháng trước
2 0
White
1 2
Cài đặt môi trường lập trình web trên macOS khá thú vị. Có rất nhiều cách, nhiều hướng, nhiều stack cài đặt để lựa chọn. Nếu bạn muốn nhanh gọn thì...
Reishou viết 3 tháng trước
1 2
Bài viết liên quan
White
1 0
Với phần 1 và phần 2 thì các bạn có thể cài đặt hầu hết các dự án php thông thường. Tuy nhiên với các dự án hơi đặc thù lại cần một số php extensio...
Reishou viết 3 tháng trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
6 bài viết.
4 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!