Cấu hình web server chạy Nginx/Apache, PHP và MySQL (Percona) – Phần II: Cài đặt Nginx

C

 

AWS (Amazon Web Service) là 1 dịch vụ nền đám mây của Amazon cho phép người dùng dễ dàng tạo 1 hoặc nhiều server ảo và dễ dàng mở rộng nó tuỳ theo nhu cầu sử dụng. Như ở bài viết trước chúng ta đã biết được cách tạo 1 EC2 instance. Trong bài viết này chúng ta sẽ tiếp tục với cách cài đặt Nginx, PHP và Percona lên đó.

Why Nginx?

Mặc dù Apache vẫn là web server được dùng nhiều nhất trên thế giới, nhưng Nginx (cách đọc như engine-X) gần đây nổi lên với tư cách 1 web server cho hiệu năng và tốc độ cao hơn trong khi tiêu tốn ít tài nguyên hơn. Nginx, thường đi cặp với PHP-FPM để tạo thành cặp đôi hoàn hảo cho 1 PHP server

 

Step 1: Cài đặt Nginx và PHP-FPM

Cài đặt Nginx và cho phép nginx khởi chạy khi start server

sudo yum install nginx && sudo chkconfig nginx on && sudo service nginx start

Cài đặt php-fpm và cho phép php-fpm khởi chạy khi start server

sudo yum install php-fpm && sudo chkconfig php-fpm on && sudo service php-fpm start

Nếu gặp lỗi

Starting php-fpm: [30-Jun-2014 14:01:53] ERROR: [pool www] cannot get uid for user ‘apache’

thì nguyên nhân là do php-fpm mặc định sử dụng apache là user khởi chạy nên chỉ cần đổi settings của php-fpm về 1 user có sẵn. Trường hợp này ta chọn “nginx”.
Backup lại file config của php-fpm

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.original

Sửa lại nội dung file

sudo vi /etc/php-fpm.d/www.conf

Sửa từ

; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

sang

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Sau đó restart lại php-fpm

sudo service php-fpm restart
Starting php-fpm: [ OK ]

Step 2: Cài đặt PHP và các thư viện liên quan

 

Cài đặt PHP và các thư viện liên quan

sudo yum install php.x86_64 php-bcmath.x86_64 php-xml php-gd.x86_64 php-mbstring.x86_64
sudo yum install php-pear.noarch php-pecl-apc.x86_64 php-pecl-memcache.x86_64 php-mcrypt.x86_64 memcached.x86_64 php-pdo php-odbc

Step 3: Cài đặt Percona

Ở đây ta dùng Percona server thay vì MySQL server để đạt được hiệu suất cao hơn

sudo yum install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
sudo yum install Percona-Server-server-56.x86_64

Khởi động Percona và Memcached, đồng thời cho phép 2 service khởi chạy cùng hệ thống

sudo service mysql start && sudo chkconfig mysql on
sudo service memcached start&& sudo chkconfig memcached on

Chi tiết về cách cài đặt Percona có thể tham khảo ở đây: http://blog.codelovers.vn/howto-cai-dat-percona-cai-dat-moi-hoac-thay-the-mysql/

 

Step 4: Tạo nginx SSH account

User mặc định để kết nối SSH vào instance là ec2-user, tuy nhiên các request của Nginx Web server sẽ chạy bằng user tên là nginx, do đó nếu dùng ec-user thì có thể gặp 1 số lỗi về permission. Phương án là đổi toàn bộ owner permission của files về nginx, hoặc dùng chính nginx làm user để kết nối SSH, upload file …

  1. Phương án 1: đổi owner permission của thư mục /var/www/html về nginx, chạy lệnh

    chown -R nginx:nginx /var/www/html/

  2. Phương án 2: sử dụng nginx là 1 user để upload files …

    sudo vi /etc/ssh/sshd_config

    và đổi giá trị PasswordAuthentication từ “No” về “Yes”
    Sau đó restart lại sshd service. Lưu ý sau khi restart lại sshd service thì nên giữ nguyên console hiện tại, mở kết nối tới server trên 1 console khác để đề phòng config của sshd_config bị sai

    sudo service sshd restart

    Kết nối SSH tới server, đặt password cho nginx

    sudo passwd nginx

    Cho phép nginx dùng bash

    sudo chsh -s /bin/bash nginx 

    Kiểm tra lại

    ssh nginx@your-instance-ip

 

 

Trouble Shooting

Trường hợp MySQL Server đã được cài đặt trước thì cần gỡ bỏ MySQL Server trước khi cài đặt Percona, vì sẽ xảy ra tình trạng xung đột.

Gỡ bỏ MySQL và MySQL Server

sudo yum remove mysql mysql-server

Tagcloud

Posts