Cách cài đặt web server LEMP trên VPS

Để chạy được website trên VPS bạn cần cài 1 webserver cho VPS đó, sau đây mình sẽ hướng dẫn các bạn cách cài đặt bộ webserver nổi tiếng LEMP bao gồm: Linux + Nginx + MariaDB + PHP (PHP-FPM) trên CentOS 7/6.*/5.10 và phpmyadmin một công cụ quản lí database

– Nginx (đọc là Engine x) là một webserver nhỏ gọn, ít tốn RAM, mạnh mẽ và có hiệu suất hoạt động cao.

– PHP 7.0 với hiệu suất cao hơn hẳn các phiên bản trước.

– MariaDB là phiên bản mã nguồn mở của MySQL, hoạt động giống hệt MySQL. Bắt đầu từ CentOS 7 mặc định đã bắt đầu hỗ trợ MariaDB, các bạn nên sử dụng thay cho MySQL ngay từ bây giờ.

I. Cài đặt Nginx và PHP trên CentOS 7/6/5.10

Đầu tiên bạn cần chuẩn bị một server CentOS mới tinh chưa cài gì cả. Khuyến khích sử dụng centos 6.9 vì chạy ổn định ít lỗi khi cài đặt.

Khi mua VPS thường sẽ có lựa chọn hệ điều hành cho bạn còn nếu không bạn cài bằng dòng lệnh sử dụng phần mềm VNC upstream Installation Guide.

1. Thêm repo cần thiết

CentOS 7/6.5/5.10 EPEL repository

yum install epel-release

CentOS 7/6.5/5.10 Remi repository

## CentOS 7 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

## CentOS 6 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## CentOS 5 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

CentOS 7/6.5/5.10 Nginx repository

## CentOS 7 ##
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

## CentOS 6 ##
rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

## CentOS 5 ##
rpm -Uvh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm

2. Cài đặt Nginx, PHP

CentOS 7/6.5/5.10

yum --enablerepo=remi,remi-php70 install -y nginx php-fpm php-common

3. Cài đặt PHP module

Một số module PHP thông dụng: Một số bắt buộc phải cài như php-cli, pear (để sau này download phpmyadmin)

  • OPcache (php-opcache) – The Zend OPcache provides faster PHP execution through opcode caching and optimization.
  • APCu (php-pecl-apc) – APCu userland caching
  • CLI (php-cli) – Command-line interface for PHP
  • PEAR (php-pear) – PHP Extension and Application Repository framework
  • PDO (php-pdo) – A database access abstraction module for PHP applications
  • MySQL (php-mysqlnd) – A module for PHP applications that use MySQL databases
  • PostgreSQL (php-pgsql) – A PostgreSQL database module for PHP
  • MongoDB (php-pecl-mongo) – PHP MongoDB database driver
  • SQLite (php-pecl-sqlite) – Extension for the SQLite Embeddable SQL Database Engine
  • Memcache (php-pecl-memcache) – Extension to work with the Memcached caching daemon
  • Memcached (php-pecl-memcached) – Extension to work with the Memcached caching daemon
  • GD (php-gd) – A module for PHP applications for using the gd graphics library
  • XML (php-xml) – A module for PHP applications which use XML
  • MBString (php-mbstring) – A module for PHP applications which need multi-byte string handling
  • MCrypt (php-mcrypt) – Standard PHP module provides mcrypt library support

Để cài đặt bạn hãy sử dụng lệnh yum --enablerepo=remi,remi-php56 install ten_module. Ví dụ:

yum --enablerepo=remi,remi-php70 install -y php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongo php-pecl-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

4. Stop httpd (Apache) server, Start Nginx và PHP-FPM

Stop httpd (Apache)

## CentOS 7 ##
systemctl stop httpd.service

## CentOS 6.5/5.10 ##
service httpd stop

Start Nginx

## CentOS 7 ##
systemctl start nginx.service
 
## CentOS 6.5/5.10 ##
service nginx start

Start PHP-FPM

## CentOS 7 ##
systemctl start php-fpm.service

## CentOS 6.5/5.10 ##
service php-fpm start

5. Tự động khởi động Nginx, PHP-FPM và tắt httpd

Tắt httpd (Apache) khi boot

## CentOS 7 ##
systemctl disable httpd.service
 
## CentOS 6.5/5.10 ##
chkconfig httpd off

Autostart Nginx

## CentOS 7 ##
systemctl enable nginx.service
 
## CentOS 6.5/5.10 ##
chkconfig --add nginx
chkconfig --levels 235 nginx on

Autostart PHP-FPM

## CentOS 7 ##
systemctl enable php-fpm.service
 
## CentOS 6.5/5.10 ##
chkconfig --add php-fpm
chkconfig --levels 235 php-fpm on

6. Cấu hình Nginx và PHP-FPM

Cấu hình Nginx

– Thay đổi worker_processes

nano /etc/nginx/nginx.conf

Chỉnh worker_processes bằng với số processor VPS của bạn

– Cấu hình nginx virtual hosts

nano /etc/nginx/conf.d/default.conf

Bạn thay đổi thông tin như bên dưới:

#
# The default server
#
server {
    listen       80;
    server_name example.com;
    
    location / {
        root   /usr/share/nginx/html;
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   unix:/run/php/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Các đoạn in đậm là cần phải thay đổi.

– Restart Nginx

## CentOS 7 ##
systemctl restart nginx.service
 
## CentOS 6.5/5.10 ##
service nginx restart

Cấu hình PHP-FPM

– Chỉnh user và group

nano /etc/php-fpm.d/www.conf

Thay user = apache và group = apache sang nginx

Thay đổi listen = 127.0.0.1:9000 sang listen = /run/php/php-fpm.sock

 [...]
 ; Unix user/group of processes
 ; Note: The user is mandatory. If the group is not set, the default user's group
 ; will be used.
 ; 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
 listen = /run/php/php-fpm.sock
 [...]

– Restart PHP-FPM

## CentOS 7 ##
systemctl restart php-fpm.service

## CentOS 6.5/5.10 ##
service php-fpm restart

Vậy là bạn đã cài đặt thành công nginx và php rồi

II. Cài đặt MariaDB trên CentOS 7/6.5/5.10

 1.Update yum

yum update

2. Thêm MariaDB repo

Lưu ý: Không cần thực hiện trên CentOS 7. Phiên bản MariaDB trên CentOS 7 hiện nay là 5.5.37

## CentOS 6/5 MariaDB 5.5 ##
wget -O /etc/yum.repos.d/MariaDB.repo http://mariadb.if-not-true-then-false.com/centos/$(rpm -E %centos)/$(uname -i)/5

## CentOS 6/5 MariaDB 10.0 ##
wget -O /etc/yum.repos.d/MariaDB.repo http://mariadb.if-not-true-then-false.com/centos/$(rpm -E %centos)/$(uname -i)/10

2. Cài đặt hoặc update MariaDB

## CentOS 7 ##
yum install -y mariadb mariadb-server

## CentOS 6.5/5.10 ##
yum install -y MariaDB MariaDB-server

3. Khởi động MariaDB và tự động chạy khi boot

## CentOS 7 ##
systemctl start mariadb.service
systemctl enable mariadb.service

## CentOS 6.5/5.10 ##
service mysql start
chkconfig --levels 235 mysql on

4. Cấu hình MariaDB

  • Set (Change) root password
  • Remove anonymous users
  • Disallow root login remotely
  • Remove test database and access to it
  • Reload privilege tables

– Bắt đầu cài đặt

/usr/bin/mysql_secure_installation

Ngay bước đầu tiên bạn sẽ bị hỏi root password, do mới cài đặt nên tất nhiên chưa có password, nhấn Enter để tiếp tục.

– Output tương tự như sau:

Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Thanks for using MariaDB!

Như vậy là bạn đã hoàn thành việc cài đặt LEMP stack trên CentOS rồi đó.

III. Chỉnh lại permission cho folder đặt web

Bước này rất quan trọng vì nếu không có nó thì khi sử dụng web bạn có thể gặp trục trặc khi upload file

find ../var/lib/php/session -type d -exec chmod 755 {} \
setfacl -dm u::rwx,g::rwx,o::r ../var/lib/php/session
chown -R nginx:nginx /usr/share/nginx/html/

Tắt SElinux cho folder cài đặt website

chcon -Rt httpd_sys_content_t /usr/share/nginx/html/

IV. Cài đặt phpmyadmin trên CentOS 7/6.5/5.10

Cài zip và unzip tool

yum install zip
yum install unzip

Cài phpmyadmin

cd ../usr/share/nginx/html
wget https://files.phpmyadmin.net/phpMyAdmin/4.4.14/phpMyAdmin-4.4.14-all-languages.zip
unzip phpMyAdmin-*.zip
mv ../usr/share/nginx/html/phpMyAdmin-4.4.14-all-languages ../usr/share/nginx/html/phpmyadmin

Sau bước này là bạn có thể truy cập phpmyadmin qua url 10.0.0.2/phpmyadmin (10.0.0.2 là địa chỉ VPS của bạn) rồi đó

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *