Cách cài đặt Nginx, PHP và MySQL (LEMP Stack) trên OpenSUSE Leap 42.1

theanh

Administrator
Nhân viên
LEMP hay Linux, Engine-x, MySQL và PHP là một tập hợp các phần mềm được cài đặt trên hệ điều hành Linux để đưa các ứng dụng web dựa trên PHP của bạn lên và chạy trên máy chủ web Nginx nhanh. LEMP stack cung cấp một cơ sở nhanh chóng và đáng tin cậy để lưu trữ các ứng dụng web. LEMP là một tập hợp các phần mềm nguồn mở có bộ tài liệu đầy đủ để bạn có thể dễ dàng tìm hiểu thêm về các ứng dụng khác nhau và cách chúng phù hợp với nhau.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt Nginx, MariaDB và PHP-FPM trên openSUSE leap 42.1. Sau đó, tôi sẽ cấu hình tường lửa OpenSUSE với SuSEfirewall2 để cho phép truy cập vào máy chủ web Nginx và hướng dẫn bạn cách thêm cấu hình máy chủ ảo mới trên máy chủ web Nginx.

Cuối cùng, chúng ta sẽ cài đặt phpMyAdmin như một công cụ quản trị cơ sở dữ liệu dễ sử dụng và bảo mật bằng cách thay đổi thư mục web và bật xác thực HTTP cho thư mục phpMyAdmin.



Điều kiện tiên quyết
  • OpenSUSE Leap 42.1.
  • Quyền root.
  • Hiểu lệnh zypper.

Bước 1 - Cài đặt và cấu hình SuSEfirewall2​

SuSEfirewall2 là một tập lệnh tạo ra các quy tắc iptables dựa trên tệp cấu hình "/etc/sysconfig/SuSEfirewall2". Chúng ta sẽ cài đặt và cấu hình nó để ngăn chặn các cuộc tấn công mạng vào cổng máy chủ.

Cài đặt SuSEfirewall2 bằng zypper:
Mã:
zypper trong SuSEfirewall2
Khi quá trình cài đặt hoàn tất, chúng ta phải mở một số cổng cho các ứng dụng web và SSH. Chúng ta sẽ mở cổng 22 cho dịch vụ ssh và cổng 80 và 443 cho http và https. Vào thư mục "/etc/sysconfig/" và chỉnh sửa tệp "SuSEfirewall2":
Mã:
cd /etc/sysconfig/
vim SuSEfirewall2
Ở dòng 253, thêm số cổng của các dịch vụ, cách nhau bằng khoảng trắng:
Mã:
FW_SERVICES_EXT_TCP="22 80 443"
Lưu tệp và thoát.

Khởi động lại SuSEfirewall2 và dịch vụ SSH, sau đó kiểm tra cấu hình cổng bằng cách kết nối telnet tới máy chủ.

Khởi động lại SuSEfirewall2 và dịch vụ SSH:
Mã:
/sbin/rcSuSEfirewall2 restart
systemctl restart sshd
Kiểm tra kết nối ssh bằng telnet trên cổng 22:
Mã:
telnet 192.168.1.101 22



Bước 2 - Cài đặt và cấu hình Nginx​

Nginx hay engine x là máy chủ proxy và HTTP hiệu suất cao với mức tiêu thụ bộ nhớ thấp. Nó được sử dụng bởi các trang web quy mô lớn như Netflix, Pinterest, CloudFlare, Github, v.v. Nginx có cú pháp cấu hình dễ học và cũng có thể hoạt động như một bộ cân bằng tải với các kiểm tra tình trạng và proxy ngược với các tính năng lưu trữ đệm.

Trong bước này, chúng ta sẽ cài đặt nginx và thêm nó để bắt đầu khi khởi động. Cài đặt bằng lệnh "zypper in":
Mã:
zypper in nginx
Khởi động nginx và cho phép nó được khởi động tại thời điểm khởi động:
Mã:
systemctl start nginx
systemctl enable nginx
Nginx hiện đã được khởi động, nhưng nếu bạn cố gắng truy cập nó thông qua trình duyệt web, bạn sẽ nhận được lỗi 403 bị cấm. Lỗi này xảy ra vì không có tài liệu chỉ mục chuẩn trong thư mục gốc web. Để giải quyết vấn đề này, hãy tạo một chỉ mục html mới trong thư mục gốc web "/srv/www/htdocs". Đi đến thư mục và tạo tệp index.html:
Mã:
cd /srv/www/htdocs/
echo "[HEADING=1]Đây là Nginx OpenSUSE Leap 42.1[/HEADING]" > index.html
Mở trình duyệt web của bạn và nhập IP máy chủ của bạn và bạn sẽ nhận được trang chỉ mục:





Bước 3 - Cài đặt và cấu hình MariaDB​

MariaDB là RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ) mã nguồn mở được phân nhánh từ MySQL theo giấy phép GNU GPL. Trong hướng dẫn này, chúng tôi sẽ cài đặt MariaDB và cấu hình mật khẩu gốc cho shell MariaDB.

Cài đặt MariaDB bằng lệnh zypper:
Mã:
zypper trong mariadb mariadb-client
Khởi động MariaDB/MySQL và thêm nó vào khởi động khởi động bằng lệnh systemctl bên dưới:
Mã:
systemctl start mysql
systemctl enable mysql
Tiếp theo, cấu hình mật khẩu quản trị viên cho MariaDBb/MySQL bằng lệnh mysqladmin. Một tùy chọn khác mà bạn có thể sử dụng cho mục đích này là "mysql_secure_installation". Trong bước này, tôi sẽ sử dụng mysqladmin:
Mã:
/usr/bin/mysqladmin -u root password 'aqwe123'
Lưu ý:

"aqwe123" là mật khẩu mới cho MariaDB/MySQL.

Sau đó, hãy đăng nhập vào shell mysql bằng tên người dùng root và mật khẩu aqwe123:
Mã:
mysql -u root -p
TYPE PASSWORD 'aqwe123'


Bây giờ MariaDB/MySQL đã được cài đặt và cấu hình bằng mật khẩu mới của chúng tôi.


Bước 4 - Cài đặt và cấu hình PHP-FPM​

PHP-FPM hay FastCGI Process Manager là một giải pháp thay thế cho PHP FastCGI cũ hơn, cung cấp các tính năng bổ sung và cải thiện tốc độ. PHP-FPM rất phù hợp với các trang web nhỏ và lớn dựa trên ngôn ngữ lập trình PHP.

Trong bước này, chúng tôi sẽ cài đặt php5-fpm với một số tiện ích mở rộng bổ sung mà phpMyAdmin yêu cầu. Cài đặt php5-fom và các tiện ích mở rộng bằng zypper:
Mã:
zypper trong php5 php5-mysql php5-fpm php5-gd php5-mbstring
Khi quá trình cài đặt hoàn tất, hãy vào thư mục php5-fpm và sao chép tệp cấu hình:
Mã:
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Chỉnh sửa cấu hình bằng lệnh vim:
Mã:
vim php-fpm.conf
Bỏ chú thích dòng 32 để bật nhật ký php-fpm, tiền tố mặc định là /var và nếu bạn gặp bất kỳ sự cố nào với php5-fpm, bạn có thể kiểm tra tệp nhật ký "/var/log/php-fpm.log".
Mã:
error_log = log/php-fpm.log
Ở dòng 148, chúng ta sẽ cấu hình chủ sở hữu của tiến trình nginx thành người dùng Nginx. Đổi người dùng và nhóm tiến trình thành nginx:
Mã:
user = nginx
group = nginx
Dòng 159: cấu hình php-fpm để chạy dưới tệp asocket, không phải cổng. Thay đổi dòng đó như thế này:
Mã:
listen = /var/run/php-fpm.sock
Và ở dòng 170, thay đổi quyền cho socket unix thành người dùng và nhóm nginx với chế độ 0660.
Mã:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, hãy vào thư mục PHP cli và chỉnh sửa tệp php.ini bằng vim:
Mã:
cd /etc/php5/cli/
vim php.ini
Thay đổi giá trị của cgi.fix_pathinfo thành 0 vì lý do bảo mật. dòng 178:
Mã:
cgi.fix_pathinfo=0
lưu và thoát.

Sao chép php.ini vào thư mục conf.d:
Mã:
cp php.ini /etc/php5/conf.d/
Cấu hình PHP-FPM đã hoàn tất ở giai đoạn này, nhưng chúng ta vẫn cần cấu hình Nginx. Chúng ta phải thiết lập Nginx để làm việc với php-fpm.

Vào thư mục cấu hình nginx và sao lưu tệp cấu hình bằng lệnh cp:
Mã:
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
Chỉnh sửa nginx.conf bằng vim:
Mã:
vim nginx.conf
Thêm index.php vào dòng 48:
Mã:
index index.php index.html index.htm;
Thêm phần cấu hình php mới vào dòng 68, đây là cấu hình để xử lý các yêu cầu tệp .php.
Mã:
location ~ \.php$ {
 root /srv/www/htdocs;
 try_files $uri =404;
 include /etc/nginx/fastcgi_params;
 fastcgi_pass unix:/var/run/php-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
Lưu tệp và thoát.

Tiếp theo, kiểm tra cú pháp tệp cấu hình nginx để đảm bảo không có lỗi. Sau đó, khởi động daemon php-fpm và khởi động lại Nginx:
Mã:
nginx -t
systemctl start php-fpm
systemctl restart nginx
Để đảm bảo php-fpm và nginx hoạt động bình thường, chúng ta sẽ thêm một tệp thử nghiệm php mới. Vào thư mục DocumentRoot và tạo một tệp phpinfo có tên info.php:
Mã:
cd /srv/www/htdocs/
echo "" > info.php
Mở trình duyệt web của bạn, nhập địa chỉ máy chủ ipad của bạn:

http://192.168.1.101/info.php



Nginx và php-fpm hiện đang hoạt động.


Bước 5 - Cấu hình Nginx Virtualhost​

Trong bước này, tôi sẽ chỉ cho bạn cách thêm cấu hình máy chủ ảo cho một trang web. Chúng ta sẽ cấu hình một tên miền mới "www.example.com" và thư mục webroot trong "/srv/www/example/". Vui lòng thay example và example.com bằng tên miền của riêng bạn.

Thư mục GNginx nginx và tạo một thư mục mới cho cấu hình virtualhost.
Mã:
cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/
Tiếp theo, tạo tệp example.conf mới cho tên miền "example.com" virtualhost.
Mã:
vim example.conf
dán cấu hình virtualhost bên dưới:
Mã:
server {
 server_name example.com;
 return 301 $scheme://www.example.com$request_uri;
}
 
server {
 listen 80;
 
 root /srv/www/example;
 index index.php index.html index.htm;
 
 location / {
 try_files $uri $uri/ =404;
 }
 
 location ~ \.php$ {
 try_files $uri =404;
 include /etc/nginx/fastcgi_params;
 fastcgi_pass unix:/var/run/php-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
 
 
}
Lưu tệp và thoát.

Bây giờ hãy tạo thư mục cho trang web "example.com" trong thư mục /srv/www/ và tạo một tệp chỉ mục mới.
Mã:
mkdir -p /srv/www/example/
cd /srv/www/example/
echo "[HEADING=1]Đây là trang web www.example.com.[/HEADING]" > index.html
echo "" > info.php
Bây giờ hãy mở trình duyệt web của bạn và truy cập tên miền:

example.com

Bạn sẽ được chuyển hướng đến tên miền www và bây giờ hãy truy cập tệp php:

http://www.example.com/info.php




Bước 6 - Cài đặt và cấu hình phpMyAdmin​

PhpMyAdmin là ứng dụng dựa trên PHP để quản lý cơ sở dữ liệu MySQL hoặc MariaDB từ trình duyệt web. Trong bước này, tôi sẽ cấu hình phpMyAdmin để chạy dưới php-fpm và sau đó bảo mật PHPMyAdmin bằng cách hạn chế quyền truy cập vào trang đăng nhập phpMyAdmin.

Cài đặt phpMyAdmin bằng lệnh zypper:
Mã:
zypper trong phpMyAdmin
Lệnh này sẽ cài đặt tất cả các gói cần thiết cho phpMyAdmin, bao gồm cả apache2-utils cần thiết để tạo tệp mật khẩu.

Bây giờ chúng ta đã cài đặt phpMyAdmin trên hệ thống. Tiếp theo, chúng ta sẽ tạo một tệp htpasswd mới bằng lệnh htpasswd.

tạo tệp mật khẩu htpasswd:
Mã:
htpasswd -c /etc/nginx/htpasswd megumi
NHẬP MẬT KHẨU CỦA BẠN cho người dùng megumi
Tiếp theo, chúng ta phải cấu hình Nginx để sử dụng xác thực cơ bản HTTP cho thư mục phpmyadmin. Chúng tôi sẽ hạn chế quyền truy cập vào trang đăng nhập phpMyAdmin bằng auth_basic và chỉ những người dùng trong tệp "htpasswd" mới có thể đăng nhập vào phpMyAdmin.

Đi tới thư mục cấu hình Nginx và chỉnh sửa tệp nginx.conf:
Mã:
cd /etc/nginx/
vim nginx.conf
Xác định thư mục gốc web bên trong phần máy chủ bằng cách thêm một dòng mới dưới dòng 40 (server_name):
Mã:
server_name localhost;
 root /srv/www/htdocs; #newline config
Sau đó thêm cấu hình phpMyAdmin cho nginx ở dòng 60:
Mã:
location ~ ^/phpMyAdmin/.*\.php$ {
 auth_basic "Quyền truy cập bị hạn chế";
 auth_basic_user_file /etc/nginx/htpasswd;
 fastcgi_pass unix:/var/run/php-fpm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
Lưu tệp và thoát khỏi trình chỉnh sửa.

Kiểm tra cấu hình nginx và khởi động lại nginx:
Mã:
nginx -t
systemctl restart nginx
Tiếp theo, hãy mở trình duyệt web của bạn và truy cập phpMyAdmin URL, bạn sẽ được yêu cầu nhập tên người dùng và mật khẩu cho trang đăng nhập.

http://192.168.1.101/phpMyAdmin/



Sau đó, đăng nhập bằng tên người dùng và mật khẩu MySQL của bạn.



phpMyAdmin đã được cài đặt thành công và chỉ người dùng trong htpasswd mới có thể đăng nhập.


Tham khảo​

http://nginx.org/en/docs/
https://www.ruby-forum.com/topic/4411851
 
Back
Bên trên