HƯỚNG DẪN Cài đặt LEMP Server trên CentOS 6

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 28/10/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Tài liệu này mô tả một bộ cài đặt thay thế tương thích với "LAMP" stack (Linux, Apache, MySQL, và PHP), được gọi là "LEMP."
    LEMP stack là một nhóm các phần mềm có thể được sử dụng để phục vụ các trang web động và các ứng dụng web. Đây là một từ viết tắt mô tả một hệ điều hành Linux, với một máy chủ web Nginx. Các dữ liệu được lưu trữ trong MySQL và được xử lý bằng PHP.

    Trong hướng dẫn này, chúng tôi sẽ hướng dẫn làm thế nào để cài đặt một LEMP stack trên một máy chủ Centos 6.
    Trước khi bạn bắt đầu bạn cần làm các công việc sau:
    Kiểm tra hostname
    Mã:
    hostname
    hostname -f
    
    Cập nhập hệ thống
    Mã:
     yum update
    Nginx Web Server
    Cài đặt và cấu hình
    Có 2 cách để cài đặt nginx:
    1.1 Cài đặt từ gói EPEL:
    Quá trình cài đặt như sau:
    1. Cài đặt gói EPEL
    Mã:
    rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    
    2. Cài đặt nginx bằng yum
    Mã:
    yum install nginx 
    3. Tiến hành khởi động và cho phép nginx chạy lúc khởi động hệ thống
    Mã:
    /etc/init.d/nginx start
    chkconfig --add nginx
    chkconfig nginx on
    
    1.2 Biên dịch từ nguồn:
    1.2.1. Cài đặt các gói cần thiết
    :
    Mã:
    yum install zlib-devel wget openssl-devel pcre pcre-devel sudo gcc make autoconf automake
    
    1.2.2. Quá trình thực hiện như sau:
    Mã:
    cd /opt/ --> Đi tới thư mục của opt
    Mã:
    wget http://nginx.org/download/nginx-1.0.0.tar.gz --> Download về máy chủ
    Mã:
    tar -zxvf nginx-1.0.0.tar.gz --> Giải nén
    Mã:
    cd /opt/nginx-1.0.0/ --> Đi tới thư mục của nginx-1.0.0
    Mã:
    ./configure --prefix=/opt/nginx --user=nginx --group=nginx –with-http_ssl_module → Tiến hành biên dịch
    
    
    Quá trình biên dịch kết thúc ta sẽ thu được một số thông số như sau:
    Mã:
    nginx path prefix: "/opt/nginx"
    nginx binary file: "/opt/nginx/sbin/nginx"
    nginx configuration prefix: "/opt/nginx/conf"
    nginx configuration file: "/opt/nginx/conf/nginx.conf"
    nginx pid file: "/opt/nginx/logs/nginx.pid"
    nginx error log file: "/opt/nginx/logs/error.log"
    nginx http access log file: "/opt/nginx/logs/access.log"
    nginx http client request body temporary files: "client_body_temp"
    nginx http proxy temporary files: "proxy_temp"
    nginx http fastcgi temporary files: "fastcgi_temp"
    
    Cài đặt nginx bằng 2 câu lệnh sau:
    Mã:
    make
    make install
    
    Tạo một người dùng hệ thống dành riêng để chạy quá trình nginx dưới bằng câu lệnh sau đây:
    Mã:
    useradd -M -r --shell /bin/sh --home-dir /opt/nginx nginx
    
    1.2.3. Tạo một scrrip để khởi động và dừng máy chủ dễ dàng hơn
    Tạo tập tin /etc/rc.d/init.d/nginx với các nội dung sau đây:
    Mã:
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/opt/nginx/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    lockfile=/var/lock/subsys/nginx
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $”Reloading $prog: ”
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
        $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
            ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
        esac
    ~~~
    
    1.2.4. Một số câu lệnh cuối cùng để hoàn thành cài đặt
    Cấp quyền cho tập tin script
    Mã:
    chmod +x /etc/rc.d/init.d/nginx
    Tiến hành khởi động và cho phép nginx chạy lúc khởi động hệ thống
    Mã:
    service nginx start
    chkconfig --add nginx
    chkconfig nginx on
    
    Cấu hình nginx Virtual Hosting
    Mở file cấu hình lên:
    Mã:
    vim /opt/nginx/conf/nginx.conf
    Mã:
    server {
           listen   80;
           server_name www.example.com example.com;
           access_log /opt/nginx/logs/access.log;
           error_log /opt/nginx/logs/error.log;
    
           location / {
               root  /opt/nginx/html;
               index  index.html index.htm;
           }
    }
    
    Ở đây ta cần quan tâm đến dòng server_name và dòng root. Thay thế dòng server_name với tên miền của bạn cần sử dụng, còn dòng root nơi bạn khai báo nơi để dữ liệu trang web của bạn.
    Theo cấu hình trên, tạo tạo ra thư mục như sau:
    Mã:
    mkdir -p /opt/nginx/html
    
    Tạo 3 thư mục chứa dữ liệu liên quan virtual host
    Mã:
    mkdir -p /opt/nginx/site-available
    mkdir -p /opt/nginx/site-enable
    mkdir -p /opt/nginx/webdata
    
    • Thư mục site-available được dùng để chứa config nginx cho từng domain
    • Thư mục site-enable được dùng để kích hoạt cho domain chạy được nginx thông qua liên kết cứng - giữa site-available, chỉ những domain liên kết cứng mới được quyền chạy
    • Thư mục webdata được dùng chứa source của domain
    Thêm vào file cấu hình nginx.conf như sau:
    Mã:
    vim /opt/nginx/conf/nginx.conf
    Mã:
    http{
    include mime.type;
    include /opt/nginx/site-enable/*.conf;
    server_names_hash_bucket_size 64;
    
    Khởi động lại nginx
    Mã:
    /etc/init.d/nginx restart
    
    Triển khai PHP với FastCGI
    Nếu ứng dụng của bạn bao gồm mã PHP bạn sẽ cần phải thực hiện những điều sau đây.
    Giải pháp "PHP-FastCGI" cho phép nginx có thể xử lý và phục vụ các trang có chứa mã PHP. Bắt đầu quá trình triển khai thực hiện các lệnh sau để cài đặt phụ thuộc yêu cầu:
    Mã:
    rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    yum update  
    yum install php-cli php spawn-fcgi wget
    
    Tạo script cho quá trình xử lý php-cgi
    Mã:
    vim /usr/bin/php-fastcgi
    
    Mã:
    #!/bin/sh
    
    if [ `grep -c "nginx" /etc/passwd` = "1" ]; then
       FASTCGI_USER=nginx
    elif [ `grep -c "www-data" /etc/passwd` = "1" ]; then
       FASTCGI_USER=www-data
    elif [ `grep -c "http" /etc/passwd` = "1" ]; then
       FASTCGI_USER=http
    else
    # Set the FASTCGI_USER variable below to the user that
    # you want to run the php-fastcgi processes as
    
    FASTCGI_USER=
    fi
    
    /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 6 -u $FASTCGI_USER -f /usr/bin/php-cgi
    
    Tiếp theo tạo script để khởi động và dừng xử lý quá trình php-cgi
    Mã:
    vim /etc/init.d/php-fastcgi
    
    Mã:
    #!/bin/sh
    
    # php-fastcgi - Use php-fastcgi to run php applications
    #
    # chkconfig: - 85 15
    # description: Use php-fastcgi to run php applications
    # processname: php-fastcgi
    
    if [ `grep -c "nginx" /etc/passwd` = "1" ]; then
       OWNER=nginx
    elif [ `grep -c "www-data" /etc/passwd` = "1" ]; then
       OWNER=www-data
    elif [ `grep -c "http" /etc/passwd` = "1" ]; then
       OWNER=http
    else
    # Set the OWNER variable below to the user that
    # you want to run the php-fastcgi processes as
    
    OWNER=
    fi
    
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/bin/php-fastcgi
    
    NAME=php-fastcgi
    DESC=php-fastcgi
    
    test -x $DAEMON || exit 0
    
    # Include php-fastcgi defaults if available
    if [ -f /etc/default/php-fastcgi ] ; then
        . /etc/default/php-fastcgi
    fi
    
    set -e
    
    case "$1" in
      start)
        echo -n "Starting $DESC: "
        sudo -u $OWNER $DAEMON
        echo "$NAME."
        ;;
      stop)
        echo -n "Stopping $DESC: "
        killall -9 php-cgi
        echo "$NAME."
        ;;
      restart)
        echo -n "Restarting $DESC: "
        killall -9 php-cgi
        sleep 1
        sudo -u $OWNER $DAEMON
        echo "$NAME."
        ;;
          *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart}" >&2
            exit 1
            ;;
        esac
        exit 0
    
    Các lệnh sau đây để làm cho script thực thi, bắt đầu quá trình lần đầu tiên, và đảm bảo rằng quá trình này sẽ bắt đầu sau một chu kỳ khởi động lại:
    Mã:
    chmod +x /usr/bin/php-fastcgi
    chmod +x /etc/init.d/php-fastcgi
    service php-fastcgi start
    chkconfig --add php-fastcgi
    chkconfig php-fastcgi on
    
    Chỉnh sửa file /etc/sudoers và comment dòng Defaults requiretty và đảm bảo rằng các tập lệnh init sẽ bắt đầu khởi động.
    Mã:
     Defaults requiretty
    Sửa đổi cấu hình trong file nginx.conf
    Mã:
    server {
        server_name www.example.com example.com;
        access_log /srv/www/example.com/logs/access.log;
        error_log /srv/www/example.com/logs/error.log;
        root /srv/www/example.com/public_html;
    
        location / {
            index index.html index.htm index.php;
        }
    
        location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
        }
    }
    
    Quan trọng lưu ý bảo mật: Nếu bạn đang lập kế hoạch để chạy các ứng dụng hỗ trợ tải tập tin ( ví dụ như hình ảnh), cấu hình trên có thể đặt bạn vào một nguy cơ bảo mật bằng cách cho phép thực thi mã tùy ý.
    Để giảm thiểu vấn đề này, bạn có thể muốn thay đổi cấu hình của bạn để bao gồm một chỉ thị try_files.
    Xin lưu ý rằng sửa chữa điều này đòi hỏi nginx và php-fcgi phải nằm trên cùng một máy chủ.

    Mã:
    location ~ \.php$ {
            try_files $uri =404;
            include /etc/nginx/fastcgi_params;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;[/B]
        }
    
    Ngoài ra, bạn cũng có thể sử dụng cách sau để bảo mật tốt hơn. Ta se có đoạn mã sau đây:
    Mã:
    
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        if ($uri !~ "^/images/") {
        fastcgi_pass 127.0.0.1:9000;
        }
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /srv/www/example.com/public_html$fastcgi_script_name;
    }
    
    Khởi động lại nginx
    Mã:
    /etc/init.d/nginx restart
    
    MySql
    Cài đặt và cấu hình
    1. Cài gói MySql bằng lệnh yum:
    Mã:
    yum install mysql-server php-mysql
    
    Gói php-mysql giúp kết nối php với mysql

    2. Khởi động MySql lần đầu tiên và thiết lập chạy khi khởi động
    Mã:
    service mysqld start
    /sbin/chkconfig --levels 235 mysqld on
    
    3. Chạy mysql_secure_installation để cấu hình bảo mật MySQL
    Bạn sẽ được cung cấp tùy chọn để thay đổi mật khẩu gốc, loại bỏ tài khoản người dùng ẩn danh, vô hiệu hóa đăng nhập root bên ngoài của localhost, và loại bỏ các cơ sở dữ liệu, kiểm tra và tải lại đặc quyền.
    Mã:
    mysql_secure_installation
    Tạo cơ sở dữ liệu MySql
    1. Đăng nhập vào mysl

    Mã:
    mysql -u root -p
    
    2. Tạo cơ sở dữ liệu và user
    Mã:
    create database example;
    grant all on example.* to 'example' identified by 'password';
    
    3. Thoát khỏi MySql
    Mã:
    quit
    Để đảm bảo rằng PHP sẽ có thể truy cập các kết nối MySQL của bạn chỉ cần khởi động lại dịch vụ PHP bằng cách dùng lệnh sau đây:
    Mã:
    /etc/init.d/php-fastcgi restart
     
    #1 quyet1990, 28/10/16
    Sửa lần cuối: 28/10/16

Chia sẻ trang này

Đang tải...