Hướng Dẫn Cài Đặt Nginx, Php - Fpm, Mariadb Và Phpmyadmin Trên Macos Sử Dụng Homebrew

Thảo luận trong 'Tổng Hợp' bắt đầu bởi Pussy, Thg 4 8, 2018.

  1. Pussy

    Pussy New Member Chuyển tiền Tìm chủ đề

    Bài viết:
    Tìm chủ đề
    950
    Có nhiều cách để giả lập môi trường máy chủ trên máy tính cá nhân để phục vụ nhu cầu phát triển web.
    • Đơn giản, gọn nhẹ nhất là sử dụng các chương trình trọn gói như LAMP (cho Linux), WAMP (Cho Windows), MAMP (cho máy Mac) hay XAMPP (dùng cho nhiều hệ điều hành khác nhau).
    • Chuyên nghiệp hơn, bạn có thể tạo máy chủ ảo bằng VirtualBox / Vagrant, Docker,…
    • Ngoài ra trên Macbook, còn có hai ứng dụng phổ biến để tạo môi trường máy chủ là DesktopServerLocal (by Flywheel).
    Mình đã thử qua nhiều cách khác nhau để tạo môi trường phát triển web trên máy tính nhưng tất cả các phương pháp kể trên đều không đáp ứng được đúng nhu cầu.
    • Các chương trình trọn gói như LAMP, XAMPP đều dùng máy chủ Apache và MySQL, mình cần dùng Nginx + MariaDB
    • Tạo máy chủ ảo bằng VirtualBox hay Docker có thể thoải mái cấu hình nhưng cách này đòi hỏi cấu hình phức tạp và hao tốn tài nguyên máy tính.
    Lý do mình cần tạo môi trường máy chủ ảo với Nginx và MariaDB do tất cả các VPS (Virtual Private Server) mình đang dùng đều đang chạy EasyEngine (Nginx + MariaDB + PHP-FPM 5.6). Mình muốn thiết lập môi trường giả lập trên máy tính tương tự như trên VPS để hạn chế lỗi khi đồng bộ qua lại giữa localhost và server.

    Mình chọn cách tự cài đặt và cấu hình các ứng dụng máy chủ cần thiết trực tiếp lên Macbook của mình (không sử dụng máy chủ VirtualBox). Tuy hơi mất thời gian cài đặt ban đầu, nhưng sẽ bảo đảm độ ổn định sử dụng lâu dài.

    Dưới đây là các bước cài đặt trọn bộ Nginx + MariaDB + PHP-FPM 5.6 + phpMyAdmin trên Macbook Air chạy hệ điều hành Sierra 10.12.3

    I. Cài đặt XCode

    Đầu tiên, cần phải cài đặt chương trình Xcode từ App store: Link

    Trên thực tế, chúng ta không cần dùng Xcode trong quá trình phát triển web. Lý do phải cài đặt nó vì Homebrew (sẽ nói trong phần sau) cần sử dụng vài ứng dụng đi kèm với Xcode.

    Sau đỏ mở Terminal và cài đặt tiếp Xcode command line tools:

    xcode-select --install
    Sau đó các bạn mở ứng dụng Xcode vừa cài đặt, bấm ⌘ + , để truy cập mục Preferences. Chuyển đến mục Locations và chọn Command Line Tools phiên bản mới nhất vừa cài đặt.

    II. Cài đặt Homebrew
    Homebrew là phần mềm quản lý các gói chương trình trên OS X – tương tự như apt trên Linux.

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    Chạy lệnh sau để kiểm tra xem hệ thống có gặp vấn đề gì với homebrew không.

    brew doctor
    Nếu bạn cài đặt trên hệ điều hành Sierra mới cóng, chắc chắn sẽ không có lỗi gì và sẽ thấy thông báo dưới đây

    Your system is ready to brew.

    Chạy tiếp lệnh sau để chắc chắn bạn đang sử dụng Homebrew phiên bản mới nhất

    brew update && brew upgrade

    III. Cài đặt Nginx

    Cài dặt Nginx bằng lệnh sau:

    brew install nginx

    Cấu hình

    Đầu tiên bạn cần phải thiết lập quyền root cho Nginx:

    Chạy thử

    Khởi động Nginx bằng lệnh sau:

    Mặc định Nginx sẽ sử dụng cổng 8080 thay vì cổng 80 của HTTP.

    Thử nghiệm xem Nginx đã hoạt động chưa bằng lệnh

    curl -IL http://127.0.0.1:8080

    Bạn sẽ thấy kết quả báo lại như sau nếu Nginx đã hoạt động.

    Tạm thời tắt Nginx để cài đặt tiếp các ứng dụng khác.

    IV. Cài đặt PHP-FPM

    Chạy các lệnh sau để cài đặt PHP-FPM

    Homebrew sẽ tải mã nguồn và thực hiện compile trên máy tính của bạn. Sẽ mất vài phút tuỳ theo tốc độ mạng, chịu khó đợi chút nhé.

    Cấu hình PHP CLI binary

    Chạy lênh sau để cấu hình hệ thống sử dụng Bash shell mặc định

    echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.bash_profile && . ~/.bash_profile

    Cấu hình tự khởi động PHP-FPM


    Chạy lệnh sau để cấu hình PHP-FPM tự động chạy mỗi khi khởi động máy

    mkdir -p ~/Library/LaunchAgents
    ln -sfv /usr/local/opt/php56/homebrew.mxcl.php56.plist ~/Library/LaunchAgents/

    Khởi động ngay PHP-FPM bằng lệnh dưới đây:

    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

    Để kiểm tra PHP-FPM có hoạt động chưa, dùng lệnh:

    lsof -Pni4 | grep LISTEN | grep php

    Kết quả bạn nhận được sẽ như sau nếu hệ thống hoạt động đúng.

    php-fpm 69659 frdmn 6u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
    php-fpm 69660 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
    php-fpm 69661 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
    php-fpm 69662 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)

    V. Cài đặt MariaDB


    Kế tiếp là cài đặt MariaDB (phiên bản tối ưu của MySQL)

    brew install mysql

    Kế tiếp, chạy lệnh sau để Mac tự động chạy MariaDB mỗi khi máy khởi động

    ln -sfv /usr/local/opt/mariadb/*.plist ~/Library/LaunchAgents

    Để khởi động MariaDB ngay bây giờ, chạy lệnh:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.maria.plist

    Bảo mật hệ thống


    Để bảo mật cơ sở dữ liệu, chúng ta cần cấu hình hệ thống để thay đổi mật khẩu root và tinh chỉnh vài thông số.

    mysql_secure_installation
    > Enter current password for root (enter for none):

    Nhấn ENTER vì root chưa có mật khẩu.

    Change the root password? [Y/n]

    Nhấn ENTER để bắt đầu thiết lập mật khẩu root

    > Remove anonymous users? [Y/n]

    Nhấn ENTER.

    > Disallow root login remotely? [Y/n]

    Nhấn ENTER — Bạn không cần remote login khi cài đặt SQL trên máy tính cá nhân

    > Remove test database and access to it? [Y/n]

    Nhấn ENTER — Không cần dùng đến các cơ sở dữ liệu có sẵn

    > Reload privilege tables now? [Y/n] ENTER — Áp dụng những thay đổi ngay lập tức.

    Chạy thử nghiệm


    >mysql -uroot -p

    Nhập vào mật khẩu root bạn vừa thiết lập ở bước trên. Nếu MySQL hoạt động bạn sẽ thấy hiện ra như sau:

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql>

    Bạn thoát ra bằng cách gõ \q:

    mysql> \q
    Bye

    VI. Cài đặt phpMyAdmin

    Trước tiên bạn cần cài đặt autoconf trước khi cài phpMyAdmin:

    brew install autoconf

    Chạy tiếp lệnh sau

    echo 'PHP_AUTOCONF="'$(which autoconf)'"' >> ~/.bash_profile && . ~/.bash_profile

    Bây giờ cài phpMyAdmin

    brew install phpmyadmin

    VII. Cấu hình hệ thống


    Sau khi đã cài đặt toàn bộ các gói phần mềm cần thiết, chúng ta cần làm thêm bước cấu hình hệ thống để các thành phần hoạt động trơn tru với nhau.

    Cấu hình nginx.conf

    Đầu tiên cần tạo một số thư mục để sử dụng cấu hình trong những bước sau:

    mkdir -p /usr/local/etc/nginx/logs
    mkdir -p /usr/local/etc/nginx/sites-available
    mkdir -p /usr/local/etc/nginx/sites-enabled
    mkdir -p /usr/local/etc/nginx/conf.d
    mkdir -p /usr/local/etc/nginx/ssl
    sudo mkdir -p /var/www
    sudo chown :staff /var/www
    sudo chmod 775 /var/www

    Kế tiếp, thay thế file cấu hình nginx.conf mặc định bằng file cấu hình tối ưu

    rm /usr/local/etc/nginx/nginx.conf
    curl -L https://gist.github.com/frdmn/7853158/raw/nginx.conf -o /usr/local/etc/nginx/nginx.conf

    File này đã được tối ưu, loại bỏ các thiết lập không cần thiết so với file mặc định nginx.conf.default

    Cấu hình PHP-FPM

    Kế tiếp, tải file cấu hình PHP-FPM

    curl -L https://gist.github.com/frdmn/7853158/raw/php-fpm -o /usr/local/etc/nginx/conf.d/php-fpm

    Cấu hình Virtual Host mặc định

    curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_default -o /usr/local/etc/nginx/sites-available/default
    curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_default-ssl -o /usr/local/etc/nginx/sites-available/default-ssl
    curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_phpmyadmin -o /usr/local/etc/nginx/sites-available/phpmyadmin
    Tiếp theo, tải các file mặc định để sử dụng cho trang localhost 127.0.0.1

    git clone http://git.frd.mn/frdmn/nginx-virtual-host.git /var/www
    rm -rf /var/www/.git

    Cấu hình SSL

    Bước này để tạo SSL certificates và private keys. Các bạn có thể bỏ qua không cần làm.

    Tạo thư mục để chứa các file certificate và keys

    mkdir -p /usr/local/etc/nginx/ssl
    Tạo certificate và RSA key bằng lệnh sau

    openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=localhost" -keyout /usr/local/etc/nginx/ssl/localhost.key -out /usr/local/etc/nginx/ssl/localhost.crt
    openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=phpmyadmin" -keyout /usr/local/etc/nginx/ssl/phpmyadmin.key -out /usr/local/etc/nginx/ssl/phpmyadmin.crt

    Kích hoạt Virtual Host

    ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default
    ln -sfv /usr/local/etc/nginx/sites-available/default-ssl /usr/local/etc/nginx/sites-enabled/default-ssl
    ln -sfv /usr/local/etc/nginx/sites-available/phpmyadmin /usr/local/etc/nginx/sites-enabled/phpmyadmin
    Khởi động Nginx để kiểm tra kết quả

    sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

    Kiểm tra kết quả

    Tất cả các bước xem như đã xong 99%. Bạn có thể kiểm tra xem hệ thống đã hoạt động ổn định chưa. Truy cập các địa chỉ sau và xem kết quả có đúng như bảng không

    Virtual host Kết quả

    http://localhost Trang thông báo “Nginx works”
    http://localhost/info phpinfo() status
    http://localhost/nope Trang “Not Found”
    https://localhost:443 Trang “Nginx works” (SSL)
    https://localhost:443/info phpinfo() (SSL)
    https://localhost:443/nope Trang “Not Found” (SSL)
    https://localhost:306 phpMyAdmin (SSL)

    VIII. Cấu hình lệnh điều khiển

    Mặc định, mỗi khi cần tắt mở hay khởi động lại Nginx/PHP/MySQL, chúng ta phải gõ lệnh rất dài, ví dụ như lệnh sau để khởi động Nginx:

    sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

    Câu lệnh này quá dài dòng và khó nhớ nên chúng ta cần làm thêm bước Cấu hình lệnh điều khiển để có thể ra lệnh tắt/mở hệ thống đơn giản dễ nhớ hơn.

    Cách làm khá đơn giản, chỉ cần chạy các lệnh sau là xong:

    curl -L https://gist.github.com/frdmn/7853158/raw/bash_aliases -o /tmp/.bash_aliases
    cat /tmp/.bash_aliases >> ~/.bash_aliases
    echo "source ~/.bash_aliases" >> ~/.bash_profile && . ~/.bash_profile

    Nginx

    Tắt/mở hay khởi động lại Nginx bằng các lệnh sau

    nginx.start
    nginx.stop
    nginx.restart
    Kiểm tra log:

    nginx.logs.access
    nginx.logs.default.access
    nginx.logs.phpmyadmin.access
    nginx.logs.default-ssl.access
    nginx.logs.error
    nginx.logs.phpmyadmin.error
    Kiểm tra cấu hình Nginx

    sudo nginx -t

    PHP-FPM

    Tắt/mở hay khởi động lại PHP-FPM:

    php-fpm.start
    php-fpm.stop
    php-fpm.restart
    Kiểm tra cấu hình:

    php-fpm -t

    MariaDB (MySQL)

    Tắt/mở hay khởi động lại MySQL:

    mysql.start
    mysql.stop
    mysql.restart

    IX.Thiết lập Virtual Host

    Sau khi hoàn thành bước VIII, bạn đã có thể copy file vào thư mục /var/www/ để bắt đầu làm việc. Truy cập trực tiêp web qua địa chỉ http://localhost

    Tuy nhiên trên máy Mac, muốn truy cập vào thư mục /var/www/ rất phiền phức. Chỉ có cách dùng Terminal, không dùng được các chương trình editor như Sublime Text hay Visual Code Studio để chỉnh sửa code. Ngoài ra, bạn cũng không thể tạo ra nhiều tên miền ảo dạng như thuanbui.dev, thuandeptrai.dev,…

    Do đó mình làm thêm bước này để có thể tạo nhiều tên miền ảo cho từng dự án. Đồng thời dễ dàng quản lý file bằng Finder.

    Cài đặt DNSMasq:

    Để máy tính có thể truy cập các tên miền ảo .dev , chúng ta cần phải cấu hình DNS bằng cách chỉnh sửa file /etc/hosts. Ví dụ mình cần tạo ra tên miền thuanbui.dev, thêm dòng này vào /etc/hosts

    127.0.0.1 thuanbui.dev.

    Phiền phức ở chỗ mỗi lần tạo ra tên miền mới, chúng ta phải quay lại chỉnh sửa mất thời gian.

    Giải quyết vấn đề này bằng cách dùng DNSMasq:

    brew install dnsmasq
    Sau đó thiết lập cấu hình file dnsmasq.conf trong thư mực /usr/local/etc/.

    sudo nano /usr/local/etc/dnsmasq.conf

    Thêm dòng này vào và lưu lại

    address=/.dev/127.0.0.1

    Dòng này sẽ yêu cầu hệ thống điều hướng tất cả các tên miền dạng .dev về địa chỉ IP của localhost, 127.0.0.1

    Tiếp theo, cấu hình dnsmaq tự động chạy khi khởi động máy

    sudo cp -fv /usr/local/opt/dnsmasq/*.plist /Library/LaunchDaemons
    sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

    Cuối cùng, bạn cần phải chỉnh cấu hình DNS của Mac OS. Truy cập System Preferences và chọn Network.

    Vào phần DNS và thêm IP Localhost (127.0.0.1) vào đầu danh sách các IP của DNS:

    127.0.0.1
    8.8.8.8
    8.8.4.4

    Vậy là xong, bạn có thể ping thử bất kỳ tên miền nào kết thúc bằng đuôi .dev, hệ thống sẽ trả về IP tương ứng là 127.0.0.1

    $ ping thuanbui.dev

    PING thuanbui.dev (127.0.0.1): 56 data bytes

    Tạo Virtual Host cho tên miền .dev

    Mình muốn tạo ra tên miền thuanbui.dev để làm việc trên localhost. Đầu tiên, thiết lập thư mục root của tên miền để chứa file

    mkdir -p /Users/thuanbui/Sites/thuanbui.dev/public

    Chú ý:
    • thuanbui là username của mình trên máy, bạn phải thay bằng tên username của bạn.
    • thuanbui.dev là tên của tên miền mình cần tạo, bạn có thể thay thế bằng tên thư mục bất kỳ
    Kế tiếp, tạo file cấu hình nginx cho tên miền thuanbui.dev

    sudo nano /usr/local/etc/nginx/sites-available/thuanbui.dev
    Tuỳ theo mã nguồn bạn sử dụng mà cấu hình sẽ khác nhau. Dưới đây là ví dụ file cấu hình mình sử dụng để chạy WordPress

    server {

    listen 80;
    server_name thuanbui.dev www.thuanbui.dev;

    root /Users/thuanbui/Sites/thuanbui.dev/public;
    location / {
    try_files $uri $uri/ /index.php?$args;
    }

    index index.php index.html index.htm;
    include /usr/local/etc/nginx/conf.d/php-fpm;

    }
    Chạy tiếp lệnh này để tạo file cấu hình trong thư mục sites-enables

    ln -s /usr/local/etc/nginx/sites-available/thuanbui.dev /usr/local/etc/nginx/sites-enabled/thuanbui.dev
    Khởi động lại nginx

    nginx.restart

    Vậy là xong. Từ giờ bạn có thể tải mã nguồn WordPress vào thư mục

    /Users/thuanbui/Sites/thuanbui.dev/public sau đó truy cập http://thuanbui.dev để bắt đầu làm việc.

    Làm lại các bước tương tự nếu bạn cần tạo thêm nhiều tên miền .dev khác.
     
    Last edited by a moderator: Thg 4 14, 2018
  2. Đang tải...
Trả lời qua Facebook

Chia sẻ trang này