Skip to the content.

Cài đặt Wordpress trên Centos 7

1. Giới thiệu

Wordpress là một công cụ tạo trang web và viết blog mã nguồn mở miễn phí sử dụng PHP và MySQL. Wordpress hiện đang là CMS phổ biến nhất( Content Management System) trên Internet, có hơn 20.000 plugins để có thể mở rộng chức năng của nó.

Cài đặt sau yêu cầu cài trên một máy Centos 7 với user root và đã cài LAMP( Linux, Apache, MySQL/Mariadb, PHP).

2. Tiến hành cài đặt Wordpress

2.1. Tạo một database và user cho Wordpress.

Đăng nhập vào MySQL sử dụng tài khoản root:

mysql -u root

Tạo một database tên là wordpress:

CREATE DATABASE wordpress;

Tạo một user để Woropress có thể sử dụng MySQL và gán quyền cho user này tất cả quyền với database wordpress:

CREATE USER wpuser@localhost IDENTIFIED BY '123';
GRANT ALL ON wordpress.* TO wpuser@localhost;
FLUSH PRIVILEGES;

Thoát MySQL

exit

2.2. Cài Wordpress.

Tải bản wordpress từ trang chủ bằng wget:

cd ~
wget http://wordpress.org/latest.tar.gz

Giải nén:

tar xzvf latest.tar.gz

Sử dụng rsync để chuyển thư mục wordpress đến thư mục DocumentRoot của Apache giúp thư mục giữ nguyên quyền, owner,..:

rsync -avP ~/wordpress/ /var/www/html/

Tạo thư mục cho Wordpress để có thể chứa được những file được tải lên:

mkdir /var/www/html/wp-content/uploads

Thiết lập quyền cho các file và thư mục trong /var/www/html cho user và group apache:

chown -R apache:apache /var/www/html/*

2.3. Cấu hình Wordpress.

Di Chuyển đến thư mục chứa code Wordpress:

cd /var/www/html

File cấu hình chính cho Wordpress là wp-config.php nhưng nó không có sẵn, tiến hành copy từ file cấu hình mẫu:

cp wp-config-sample.php wp-config.php

Tiến hành chỉnh sửa file config để Wordpress có thể kết nối đến mysql và database đã tạo trước đó

vi wp-config.php

Chỉnh sửa nội dung các dòng sau (tên database, user để sử dụng database đó, mật khẩu của user và MySQL host ):

/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', '123' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

2.4. Hoàn thành cấu hình trên web

Truy cập vào địa chỉ IP của host:

http://10.88.88.143

Chọn ngôn ngữ rồi chọn Continue, tiếp theo thiết lập tên trang web, và các thông tin liên quan đến tài khoản:

Sau khi cấu hình thành công, đăng nhập vào wordpress sử dụng tài khoản vừa tạo:

Sau đó sẽ vào được giao diện quản trị của Wordpress:

3. Viết script Cài đặt Wordpress sử dụng MariaDB 10.1, php 7.0 và apache 2.4 trên centos 7.

Những câu lệnh sau thực hiện bằng user root:

vi install_wordpress.sh
#!/bin/bash


sleep 1
echo -e "Script cài đặt Wordpress \n"
sleep 1

function check_and_install_LAMP()
{
    echo 'Kiểm tra và cài đặt các package'

    # Danh sách các package cần cài đặt, và các package xung đột cần kiểm tra và gỡ bỏ.
    package=(httpd php71-php php71-php-mysqlnd MariaDB-server MariaDB-client wget unzip)
    remove_package=(nginx mysql mysql-server MariaDB-server MariaDB-client mariadb mariadb-server)


    echo "Đang cài đặt Repo"
    yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm &> /dev/null
    yum -y install epel-release &> /dev/null

    # Cấu hình để cài đặt php 7.1 làm mặc định
    sudo yum-config-manager --enable remi-php71

cat << EOF > /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

    echo 'Đang kiểm tra các package xung đột'
    for pack in "${remove_package[@]}"
    do 
        if rpm -q $pack 
        then 
            echo "Đang gỡ cài đặt $pack"
            yum remove -y $pack > /dev/null
        else 
            echo "Package $pack chưa được cài đặt"
        fi
    done

    rm -rf /var/lib/mysql
    rm /etc/my.cnf
    
    echo "Đang kiểm tra và cài đặt các package cần thiết."
    for pack in ${package[@]}
    do 
        if rpm -q $pack 
        then 
            echo -e "Package $pack đã được cài đặt \n"
        else 
            echo "Đang cài đặt package $pack "
            yum install -y $pack > /dev/null
        fi
    done


}

function install_wordpress()

{
    echo "Cấu hình MariaDB"
    systemctl start mariadb
    systemctl enable mariadb

    read -s -p "Password cho tài khoản root: " sql_rootpass

    echo $sql_rootpass > /root/sql_rootpass.txt

#    read -p "User cho Wordpress để truy cập vào MariaDB" sql_user
#    read -s -p "Password cho tài khoản $sql_user" sql_userpass

    # Cấu hình mật khẩu cho tài khoản root mariadb
    /usr/bin/mysqladmin -u root -h localhost password $sql_rootpass > /dev/null
    

# Tạo database cho wordpress
mysql -u root --password=$sql_rootpass <<EOF
DROP DATABASE IF EXISTS wordpress;
CREATE DATABASE wordpress;
EOF
    

    echo -e "\n ---- \n Tải và cấu hình Wordpress \n ----"


    rm -rf /tmp/wordpress.zip ||:
    rm -rf /tmp/wordpress ||:
    rm -rf /var/www/html/* ||:

    # Tải và unzip wordpress
    wget https://wordpress.org/latest.zip -O /tmp/wordpress.zip &> /dev/null
    unzip /tmp/wordpress.zip -d /tmp/ &> /dev/null
    cd /tmp/wordpress
    cp wp-config-sample.php wp-config.php


    # Cấu hình wordpress kết nối đến database
    sed -i -e "s/database_name_here/wordpress/g" /tmp/wordpress/wp-config.php

    sed -i -e "s/username_here/root/g" /tmp/wordpress/wp-config.php

    sed -i -e "s/password_here/$sql_rootpass/g" /tmp/wordpress/wp-config.php


    # Chuyển thư mục wordpress đến thư mục DocumentRoot của apache.
    mv  /tmp/wordpress/* /var/www/html/
    chown -R apache:apache /var/www/html/*

    echo 'Cấu hình wordpress thành công'


}


function service_firewall()
{
    echo "Cấu hình khởi chạy các dịch vụ"
    systemctl -n 0 start firewalld
    systemctl -n 0 enable firewalld
    systemctl -n 0 start httpd
    systemctl -n 0 restart httpd
    systemctl -n 0 enable httpd 
    systemctl -n 0 start mariadb
    systemctl -n 0 restart mariadb
    systemctl -n 0 enable mariadb

    echo 'Cấu hình firewalld'
    firewall-cmd --add-service=http --permanent 
    firewall-cmd --reload
 
}

check_and_install_LAMP
install_wordpress
service_firewall

echo "Cài đặt thành công"
echo "Mật khẩu tài khoản root của mariadb lưu tại /root/sql_rootpass.txt "

4. Export và Import database sang một Server khác

Server1(10.88.88.153): đang chạy wordpress sử dụng apache, và mariadb 10.1

Server2(10.88.88.165): đã cài đặt mariadb 10.1

4.1. Export database

Trên server1(10.88.88.153):

Trên server2:

Database changed MariaDB [wordpress]> show tables; +———————–+ | Tables_in_wordpress | +———————–+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +———————–+ 12 rows in set (0.00 sec)

- Tạo user 'wpuser'.'10.88.88.153' và gám quyền để có thể truy cập từ server 1 đến database `wordpress`:

MariaDB [(none)]> create user wpuser@’10.88.88.153’ identified by ‘123@123Aa’; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> grant all privileges on wordpress.* to wpuser@10.88.88.153 identified by ‘123@123Aa’; Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)


- Cấu hình firewall cho phép port 3306:

[root@localhost ~]# firewall-cmd –add-service mysql success [root@localhost ~]# firewall-cmd –runtime-to-permanent success


- Cấu hình Wordpress trên server1 chỏ về database trên server2.

vi /var/www/html/wp-config.php

```php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wpuser' );

/** MySQL database password */
define( 'DB_PASSWORD', '123@123Aa' );

/** MySQL hostname */
define( 'DB_HOST', '10.88.88.165' );

Tài liệu tham khảo

https://github.com/nguyenhungsync/Jetking/blob/master/6.%20Install-LAMP-Wordpress.sh