Bài 13: Web server – Nginx, PHP, MySQL

Nginx được đánh giá nhanh, nhẹ so với các webserver thông dụng như Apache, Lighttpd … Cách thức cấu hình websever của Nginx cũng rất đơn giản.

1. Cài đặt nginx, php

sudo su
apt-get install -y nginx php5-common php5-cli php5-fpm php5-curl

Nếu không cần sử dụng PHP trên dòng lệnh, không cần cài đặt php-cli

2. Cấu hình

Mở file cấu hình /etc/nginx/sites-available/default,

  • tìm đến dòng root /user/share/nginx/www, đổi thành tên thư mục mà ta muốn dùng làm gốc của web, thí dụ /mnt/www
  • thêm index.php sau từ khóa index ở dòng kế tiếp
root /mnt/www;
index index.php index.html index.htm
  • thư mục www và các file bên trong phải có thuộc tính 755, dùng lệnh
chmod -R 755 /mnt/www
  • sửa nhóm location / đổi index.html thành index.php
try_files $uri $uri/ /index.php;
  • tìm đến dòng location ~ \.php$ sửa lại như sau (6 dòng)
location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_index index.php;
  include fastcgi_params;
}

Nếu đã cài đặt php-cli, cho php-cli dùng chung cấu hình với php-fpm

cd /etc/php5/cli
sudo mv php.ini php.ini.backup
sudo ln -s ../fpm/php.ini

3. Câu lệnh khởi động lại webserver

service php5-fpm restart
service nginx restart

4. Chạy một ứng dụng web

Copy mã nguồn của ứng dụng vào thư mục /usr/share/nginx/www hay một thư mục con có tên test. Mở từ browser dòng địa chỉ tương tự như

http://IP_của_RPI/test/index.php

5. Cài đặt MySQL

apt-get install mysql-server php5-mysql

6.  phpmyadmin

Cài đặt theo nhu cầu qua dòng lệnh

apt-get install phpmyadmin
  • Khi phpmyadmin hỏi cấu hình theo apache hay lighttp, bấm phím tab và enter để không chọn mục nào cả
  • Sau khi cài đặt xong, mở /etc/nginx/sites-available/default, thêm sau nhóm location ~ \.php các dòng
        location ~ \.php$ {
        ...
        }
        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                       include /etc/nginx/fastcgi_params;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }
  • Khởi động lại webserver
  • Mở phpmyadmin qua địa chỉ http://ip_rpi/phpmyadmin
  • Lưu ý rằng ứng dùng này cần khá nhiều tài nguyên hệ thống

Script cài đặt webserver với nginx, php5

#!/bin/bash
echo '1. Cài đặt web server...'
sudo apt-get install -y nginx php5-common php5-cli php5-fpm php5-curl
echo
echo '2. Cấu hình Nginx, PHP...'
[ -f /etc/nginx/sites-available/default.orig ] && sudo cp -f /etc/nginx/sites-available/default.orig /etc/nginx/sites-available/default || sudo cp -f /etc/nginx/sites-available/default /etc/nginx/sites-available/default.orig
sudo sed -i -r 's|root /var/www/html\;|root /mnt/www\;|;s|index index.html |index index.php index.html |;s|#(location ~ \\.php)|\1|;s|#(\s+include snippets/fastcgi-php.conf\;)|\1|' /etc/nginx/sites-available/default
sudo sed -i -z -r 's|#(\s+fastcgi_pass unix:/var/run/php5-fpm.sock;\n\s+)#\}|\1\}|' /etc/nginx/sites-available/default
cd /etc/php5/cli
sudo mv -f php.ini php.ini.backup
sudo ln -s ../fpm/php.ini
read -n 1 -s -p 'Cài đặt ssl cho nginx [Y/n]?' answer
echo
if  [ -z $answer ] || [ "${answer,}" = 'y' ]; then
    echo '3. Cài đặt ssl cho nginx...'
    sudo mkdir /etc/nginx/ssl
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
    sudo sed -i -r 's|\t# (listen 443 ssl default_server\;)|\t\1|;s|\t# (listen \[::\]:443 ssl default_server\;)|\t\1\n\tssl_certificate /etc/nginx/ssl/nginx.crt\;\n\tssl_certificate_key /etc/nginx/ssl/nginx.key\;|' /etc/nginx/sites-available/default
fi
sudo service nginx restart

Chú thích

Khi dùng apt-get install, đôi khi gặp thông báo lỗi

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Khi đó chạy lệnh

apt-get update --fix-missing

rồi lập lại lệnh cài đặt vừa rồi.

 

Leave a Comment

Filed under Software

Leave a Reply