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 "
- Thiết lập quyền execute cho script:
chmod +x install-wordpress.sh
- Chạy scripts:
./install-wordpress.sh
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):
- Export database workpress:
mysqldump -u root -p wordpress > wordpressdb.sql
- Copy file sang server2:
scp wordpressdb.sql root@10.88.88.165:/root/
Trên server2:
- Tạo database wordpress và Import database wordpress từ file backup từ server1: ``` [root@localhost ~]# mysql -u root -p Welcome to the MariaDB monitor. Commands end with ; or \g. Server version: 10.1.40-MariaDB MariaDB Server MariaDB [(none)]> CREATE DATABASE wordpress; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> exit Bye [root@localhost ~]# mysql -u root -p wordpress < wordpressdb.sql [root@localhost ~]# mysql -uroot -p MariaDB [(none)]> use wordpress; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
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ắt SELinux trên cả hai Server:
- Tắt tạm thời:
setenforce 0
- Tắt vĩnh viễn:
vi /etc/selinux/config
sửa nội dung thành
SELINUX=disabled
- Tắt tạm thời:
Tài liệu tham khảo
https://github.com/nguyenhungsync/Jetking/blob/master/6.%20Install-LAMP-Wordpress.sh