Hướng dẫn cài đặt LEMP trên ubuntu 18.04 step by step
LEMP la gì?
LEMP server là một webserver trên môi trường Linux, LEMP( Linux, Nginx, MySql và PHP (hoặc Perl/Python))
Các thành phần cấu thành LEMP stack cũng gần tương tự với LAMP, chỉ khác là Apache sẽ được thay thế bởi nginx. Nginx được đọc là “engine-x”, giải thích cho chữ E trong “LEPM”, nginx cũng là một ứng dụng HTTP proxy nhưng không có được danh tiếng ấn tượng như Apache, tuy nhiên, nó có ưu điểm là cho phép xử lý tốc độ tải cao hơn đối với các HTTP request
Nginx là một máy chủ proxy và proxy hiệu suất cao với mức tiêu thụ bộ nhớ thấp. Hầu hết các trang web quy mô lớn như Netflix, Pinterest, CloudFlare, GitHub đều sử dụng Nginx.
Trong bài viết này mình sẽ hướng dẫn cách cài đặt LEMP trên ubuntu 18.04 và PHP 7.2, Mysql
Xem thêm Hướng dẫn cài đặt LAMP trên ubuntu 18.04
Cài đặt LEMP trên ubuntu 18.04
Trước tiên các bạn cần update ubuntu
sudo apt update
Bước 1: Cài đặt Nginx
Trong bước này, mình sẽ cài đặt máy chủ web Nginx từ Ubuntu repository.
sudo apt install nginx -y
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ Nginx và cho phép nó khởi chạy mỗi khi khởi động hệ thống
systemctl start nginx
systemctl enable nginx
Cấu hình firewall cho webserver Nginx
Ubuntu 18.04 sử dụng UFW firewall, chúng ta sẽ mở port 80 và 443 cho webserver
ufw allow https
ufw allow http
Khởi động UFW firewall và cho phép khởi động cùng hệ thống.
ufw enable
Ok xong
Bước 2 Cài đặt Mysql / MariaDB
Các bạn có thể sử dụng Mysql hoặc MariaDb
1 Sử dụng Mysql
MySQL là Hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) phổ biến nhất được tạo bởi Oracle Corporation. Đây là thành phần trung tâm của LEMP Stack và mình sẽ cài đặt phiên bản MySQL mới nhất từ kho lưu trữ Ubuntu.
Cài đặt MySQL bằng lệnh apt bên dưới.
sudo apt install mysql-server mysql-client -y
Sau khi cài đặt MySQL hoàn thành, thực hiện tự khởi động Mysql sau khi reboot hệ thống
systemctl start mysql
systemctl enable mysql
Tiếp theo chúng ta cần thiết lập bảo mật mysql
mysql_secure_installation
Bạn sẽ được yêu cầu thiết lập các thông tin dưới đây
Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root password
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Choose 'y' here if you like to enable the password validation, I don't need that function, so I choose 'n' here.
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y
Success.
All done!
Ok vậy là xong
2. Sử dụng MariaDB
Để thực hiện cài đặt phiên bản mới nhất hay theo yêu cầu các bạn cần tạo MariaDB repository trên ubuntu, truy cập vào kho cài đặt mariadb tại đây
Lựa chọn phiên bản cần cài và thực hiện theo hướng dẫn, ở đây mình sẽ cài MariaDB 10.3 trê ubuntu 18.04, chúng ta sẽ thêm MariaDB repository như sau
apt-get install software-properties-common
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mariadb.biz.net.id/repo/10.3/ubuntu bionic main'
Xong chạy các lệnh sau để cài đặt MariaDb trên ubuntu
apt update
apt install mariadb-server
Chúng ta cần thiết lập bảo mật cho MariaDB
mysql_secure_installation
Hoàn thành các yêu cầu
Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y
Ok cài đặt cơ sở dữ liệu hoàn tất
Bước 3 Install PHP-FPM
PHP-FPM hoặc FastCGI Process Manager là một giải pháp thay thế cho FastCGI PHP cũ hơn, cung cấp các tính năng bổ sung và cải thiện tốc độ.
Mình sẽ cài đặt PHP7.2-FPM với một số phần mở rộng bổ sung theo yêu cầu của phpmyadmin.
Cài đặt PHP-FPM bằng lệnh bên dưới.
sudo apt install php7.2 php7.2-fpm php7.2-cli php7.2-curl php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php-pear -y
Khởi động PHP-FPM cùng hệ thống
systemctl start php7.2-fpm
systemctl enable php7.2-fpm
Bước 4 Cấu hình Nginx và PHP-FPM
Cấu hình Nginx
Đi đến thư mục ‘/etc/nginx‘ và chỉnh sửa file ‘nginx.conf‘
cd /etc/nginx/
nano nginx.conf
Bỏ comment các dòng dưới đây
keepalive_timeout 2; server_tokens off;
Xong lưu lại và thoát
Tiếp tục chỉnh sửa file default Nginx virtual host
nano sites-available/default
Bỏ ghi chú dòng PHP hiển thị bên dưới và thay đổi dòng sock
location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.2.0.1:9000; }
Xong lưu lại và thoát
Kểm tra Nginx hoạt động đảm bảo không có lỗi và khởi động lại Nginx
nginx -t
systemctl reload nginx
Cấu hình PHP-FPM
Đi đến thư mục ‘/etc/php/7.2‘ và sửa file ‘php.ini‘
cd /etc/php/7.2/
nano fpm/php.ini
Bỏ comment dòng ‘cgi.fix_patinfo‘ và thay đổi value thành ‘0‘.
cgi.fix_pathinfo=0
Lưu lại và thoát
Khởi động lại PHP-FPM service.
systemctl reload php7.2-fpm
Ok xong
Bước 5: test kểm tra cài đặt LEMP
Đi đến thư mục web-root: / var / www / html, tạo một tệp PHP (info.php) để kiểm tra việc Nginx xử lý PHP thành công chưa
nano /var/www/html/info.php
<?php phpinfo();
Ok mở trình duyệt web lên và kiểm tra kết quả
Cài đặt phpMyAdmin để quản lý CSDL
Chạy lệnh sau để cài đặt phpmyadmin
sudo apt install phpmyadmin -y
Trong quá trình cài đặt nó sẽ hỏi web server configuration for phpmyadmin, các bạn không chọn option nào hết và chọn OK. ( chúng ta sẽ cấu hình với Nginx sau)
Sau khi cài đặt xong chúng ta cần cấu hình phpmyadmin để chạy dưới máy chủ web Nginx và định cấu hình truy cập phpmyadmin của người dùng MySQL
Đi đến thư mục ‘/etc/nginx‘ và chỉnh sửa file default virtual host
cd /etc/nginx/
nano sites-available/default
Copy nội dung dưới đây và dán vào bên dưới ‘server {…}‘
location /phpmyadmin { root /usr/share/; index index.php; try_files $uri $uri/ =404; location ~ ^/phpmyadmin/(doc|sql|setup)/ { deny all; } location ~ /phpmyadmin/(.+\.php)$ { fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } }
Lưu lại và thoát
Kiểm tra cài đặt và khởi động lại nginx service.
nginx -t
systemctl reload nginx
Tạo tài khoản truy cập phpmyadmin
Chúng ta sẽ tạo một người dùng MySQL mới có tên “admin” với cùng đặc quyền so với người dùng root.
Đăng nhập vào cơ sở dữ liệu MySQL với tư cách người dùng root trên shell:
mysql -u root
Tạo một user với tên “admin” và mật khẩu “@ad12345”.
CREATE USER 'admin'@'localhost' IDENTIFIED BY '@ad12345';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
Ok giờ bạn có thể truy cập phpMyAdmin qua trình duyệt web http://your_IP_webserver/phpmyadmin/
Vậy là mình đã hướng dẫn xong các bước cài đặt LEMP trên ubuntu 18.04, trong bài viết sau mình sẽ hướng dẫn các bạn cách cài đặt LEMP trên centos 7