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
Cài đặt SuSEfirewall2 bằng zypper:
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":
Ở dòng 253, thêm số cổng của các dịch vụ, cách nhau bằng khoảng trắng:
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:
Kiểm tra kết nối ssh bằng telnet trên cổng 22:
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":
Khởi động nginx và cho phép nó được khởi động tại thời điểm khởi động:
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ở 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:
Cài đặt MariaDB bằng lệnh zypper:
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:
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:
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:
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.
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:
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:
Chỉnh sửa cấu hình bằng lệnh vim:
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".
Ở 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:
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:
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.
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:
Thay đổi giá trị của cgi.fix_pathinfo thành 0 vì lý do bảo mật. dòng 178:
lưu và thoát.
Sao chép php.ini vào thư mục 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:
Chỉnh sửa nginx.conf bằng vim:
Thêm index.php vào dòng 48:
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.
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 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ở 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.
Thư mục GNginx nginx và tạo một thư mục mới cho cấu hình virtualhost.
Tiếp theo, tạo tệp example.conf mới cho tên miền "example.com" virtualhost.
dán cấu hình virtualhost bên dưới:
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.
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
Cài đặt phpMyAdmin bằng lệnh zypper:
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:
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:
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):
Sau đó thêm cấu hình phpMyAdmin cho nginx ở dòng 60:
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:
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.
https://www.ruby-forum.com/topic/4411851
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
Mã:
cd /etc/sysconfig/
vim SuSEfirewall2
Mã:
FW_SERVICES_EXT_TCP="22 80 443"
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
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
Mã:
systemctl start nginx
systemctl enable nginx
Mã:
cd /srv/www/htdocs/
echo "[HEADING=1]Đây là Nginx OpenSUSE Leap 42.1[/HEADING]" > index.html
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
Mã:
systemctl start mysql
systemctl enable mysql
Mã:
/usr/bin/mysqladmin -u root password 'aqwe123'
"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
Mã:
cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
Mã:
vim php-fpm.conf
Mã:
error_log = log/php-fpm.log
Mã:
user = nginx
group = nginx
Mã:
listen = /var/run/php-fpm.sock
Mã:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
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
Mã:
cgi.fix_pathinfo=0
Sao chép php.ini vào thư mục conf.d:
Mã:
cp php.ini /etc/php5/conf.d/
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
Mã:
vim nginx.conf
Mã:
index index.php index.html index.htm;
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;
}
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ã:
cd /srv/www/htdocs/
echo "" > info.php
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/
Mã:
vim example.conf
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;
}
}
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
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
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
Đ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
Mã:
server_name localhost;
root /srv/www/htdocs; #newline config
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;
}
Kiểm tra cấu hình nginx và khởi động lại nginx:
Mã:
nginx -t
systemctl restart nginx
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/Basic HTTP Authentication with Nginx
This tutorial shows how you can use basic HTTP authentication with Nginx to password-protect directories on your server or even a whole website. Th...
www.howtoforge.com