Xây dựng môi trường LNMP trên CentOS 7

I. Chuẩn bị

1. Cấu hình nguồn Yum

Đầu tiên, hãy đổi tên hoặc xóa các tệp cấu hình yum mặc định của hệ thống, sau đó tải hai tệp sau:

Alibaba Cloud: http://mirrors.aliyun.com/repo/Centos-7.repo

EPEL mở rộng: http://mirrors.aliyun.com/repo/epel-7

Sau khi tải xong, cần sử dụng lệnh để xóa bộ nhớ cache yum cũ và tạo bộ nhớ cache mới với tệp cấu hình mới:

yum clean all                # Xóa bộ nhớ cache cũ
yum makecache                # Tạo bộ nhớ cache mới
yum update                   # Cập nhật tất cả các phần mềm có thể cập nhật

2. Cài đặt công cụ biên dịch và phần mềm phụ thuộc

yum -y install gcc gcc-c++ pcre-devel openssl openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel

3. Địa chỉ tải gói mã nguồn cho Nginx, MySQL, PHP

Nginx: http://nginx.org/en/download.html

MySQL: https://dev.mysql.com/downloads/mysql/

PHP: http://www.php.net/

Phiên bản đề xuất:

  • Nginx: 1.16.* # Chọn phiên bản ổn định
  • MySQL: 5.5.* # Phiên bản 5.5 trở lên yêu cầu ít nhất 1GB RAM
  • PHP: 7.3.* # Sử dụng PHP7

Lưu ý: Mỗi lần cài đặt LNMP, các phiên bản nhỏ của phần mềm có thể khác nhau. Nhà phát triển sẽ cập nhật các phiên bản nhỏ trong cùng một phiên bản lớn, vui lòng cài đặt theo phiên bản đã tải xuống.

II. Cài đặt từ mã nguồn

1. Nginx

Nginx là một máy chủ web nhẹ/máy chủ proxy ngược và máy chủ proxy email (IMAP/POP3) được phát hành dưới giấy phép BSD-like. Đặc điểm là chiếm dụng ít bộ nhớ, khả năng xử lý đồng thời mạnh mẽ.

1.1 Tải mã nguồn Nginx

[root@centos2 /lnmp]# wget http://nginx.org/download/nginx-1.16.1.tar.gz

1.2 Tạo người dùng để chạy Nginx

[root@centos2 /lnmp]# useradd -r -s /sbin/nologin nginx

1.3 Giải nén và cài đặt Nginx

[root@centos2 /lnmp]# tar -zxf nginx-1.16.1.tar.gz

[root@centos2 /lnmp/nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
[root@centos2 /lnmp/nginx-1.16.1]# make && make install

1.4 Tải và viết kịch bản khởi động Nginx

Lưu ý: Kiểm tra xem tệp có vấn đề về bộ ký tự không

#################################Kịch bản quản lý khởi động Nginx##################################
#!/bin/bash
#Tác giả: nanshan
#chkconfig: 2345 99 33
#mô tả: công cụ kiểm soát máy chủ nginx

ngxc="/usr/local/nginx/sbin/nginx"
pidf="/usr/local/nginx/logs/nginx.pid"
ngxc_fpm="/usr/local/php/sbin/php-fpm"
pidf_fpm="/usr/local/php/var/run/php-fpm.pid"
case "$1" in
    start)
        $ngxc -t &> /dev/null
        if [ $? -eq 0 ];then
                    $ngxc
                    $ngxc_fpm
                    echo "Dịch vụ nginx đã khởi động thành công!"
        else
                    $ngxc -t
        fi
        ;;
    stop)
        kill -s QUIT $(cat $pidf)
        kill -s QUIT $(cat $pidf_fpm)
                echo "Dịch vụ nginx đã dừng thành công!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        $ngxc -t &> /dev/null
        if [ $? -eq 0 ];then
                    kill -s HUP $(cat $pidf)
                    kill -s HUP $(cat $pidf_fpm)
                    echo "Tải lại cấu hình nginx thành công!"
        else
                    $ngxc -t
        fi
        ;;
    *)
        echo "Vui lòng nhập stop|start|restart|reload."
        exit 1
esac

2. MySQL

Tải xuống: https://dev.mysql.com/downloads/mysql/

Chọn: Looking for previous GA versions?

Chọn: Select Version: Chọn theo yêu cầu của bạn

Select Operating System: Source Code

Select OS Version: Generic Linux

Định dạng: mysql-N.N.NN.tar.gz

[root@centos2 /lnmp/nginx-1.16.1]# wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.62.tar.gz

2.1 Tạo người dùng để chạy MySQL

[root@centos2 /lnmp]# useradd -r -s /sbin/nologin mysql

2.2 Giải nén và cài đặt MySQL

[root@centos2 /lnmp]# tar -zxvf mysql-5.5.62.tar.gz

[root@centos2 ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
[root@centos2 ~]# make && make install
[root@centos2 ~]# ln -s /usr/local/mysql/bin/* /usr/local/bin/

2.3 Sửa đổi quyền sau khi cài đặt

[root@centos2 ~]# cd /usr/local/mysql
[root@centos2 ~]# chown -R root .
[root@centos2 ~]# chown -R mysql data

2.4 Tạo tệp cấu hình MySQL

[root@centos2 ~]# cp -a /lnmp/mysql-5-5.62/support-files/my-medium.cnf /etc/my.cnf

2.5 Khởi tạo, tạo bảng phân quyền

[root@centos2 ~]# cd /usr/local/mysql
[root@centos2 ~]# ./scripts/mysql_install_db --user=mysql
#Dấu hiệu khởi tạo thành công: hai OK

2.6 Tạo kịch bản khởi động và tự khởi động cho MySQL

[root@centos2 ~]# cd /lnmp/mysql-5.5.62/support-files/

[root@centos2 /lnmp/mysql-5.5.62/support-files]# cp -a mysql.server /etc/init.d/mysqld

[root@centos2 /etc/init.d]# chmod +x mysqld 

[root@centos2 /etc/init.d]# chkconfig --add mysqld 
[root@centos2 /etc.init.d]# chkconfig mysqld on

[root@centos2 /etc.init.d]# systemctl start mysqld
[root@centos2 /etc.init.d]# systemctl status mysqld

2.7 Đặt mật khẩu cho người dùng root của MySQL

[root@centos2 /usr/local/mysql]# mysqladmin -uroot password 123456
[root@centos2 /usr/local/mysql]# mysql -uroot -p
Enter password: 

3. PHP

Tải xuống: https://www.php.net/

http://mirrors.sohu.com/php/

[root@centos2 /lnmp]# wget https://www.php.net/distributions/php-7.3.12.tar.gz

3.1 Giải nén và cài đặt

[root@centos2 /lnmp/php-7.3.12]# tar -zxf php-7.3.12.tar.gz
[root@centos2 /lnmp/php-7.3.12]# ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --with-gd --without-pear --enable-fpm
[root@centos2 /lnmp/php-7.3.12]# make
[root@centos2 /lnmp/php-7.3.12]# make install

3.2 Tạo tệp cấu hình PHP

[root@centos2 ~]# cp -a /lnmp/php-7.3.12/php.ini-production /usr/local/php/etc/php.ini
#Sao chép tệp cấu hình từ gói mã nguồn vào thư mục cài đặt và đổi tên

3.3 Tạo liên kết mềm để sử dụng lệnh PHP tiện lợi hơn

[root@centos2 ~]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@centos2 ~]# ln -s /usr/local/php/sbin/* /usr/local/sbin/

4. Cấu hình Nginx kết nối với PHP

4.1 Để Nginx kết nối với PHP, cần khởi động dịch vụ php-fpm

[root@centos2 ~]# cd /usr/local/php/etc/
[root@centos2 /usr/local/php/etc]# cp php-fpm.conf.default php-fpm.conf
[root@centos2 /usr/local/php/etc]# vim php-fpm.conf
#Sửa đổi các tham số được chỉ định
pid = run/php-fpm.pid
[root@centos2 /usr/local/php/etc]# cd /usr/local/php/etc/php-fpm.d/
[root@centos2 /usr/local/php/etc/php-fpm.d]# cp -a www.conf.default www.conf
[root@centos2 /usr/local/php/etc/php-fpm.d]# vim www.conf
#Sửa đổi người dùng và nhóm được chỉ định
user = nginx
group = nginx

Sửa đổi kịch bản khởi động Nginx; bỏ ghi chú cho php-fpm

4.2 Sửa đổi tệp cấu hình Nginx để nhận diện tệp có đuôi .php

[root@centos2 /usr/local/php/etc/php-fpm.d]# cd ../../../nginx/conf/
[root@centos2 /usr/local/nginx/conf]# vim nginx.conf
#Bỏ ghi chú các dòng sau và sửa đổi tệp include thành fastcgi.conf, chú ý dấu chấm phẩy và dấu ngoặc nhọn ở cuối mỗi dòng

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;    #Sửa thành fastcgi.conf
        }

Kiểm tra:

Khởi động lại Nginx, tạo tệp kiểm tra PHP, truy cập và xem có được phân tích không

4.3 Sửa đổi tệp cấu hình Nginx để tự động tải tệp PHP theo mặc định

location / {
    root   html;                #Đường dẫn trang web mặc định của Nginx: prefix/html
    index  index.html index.php index.htm; #Thiết lập trang mặc định và thứ tự ưu tiên
}

Thẻ: CentOS nginx mysql php LNMP

Đăng vào ngày 27 tháng 6 lúc 08:28