快速搭建/迁移wordpress


快速搭建wordpress并迁移原数据

因为之前的一个网站放在国内并且使用的是备案的域名,总觉得有诸多不好的地方,然后这几天网站又出了一些问题,索性直接搬迁到国外去并更换域名。

新服务器系统为ubuntu1804 使用nginx作为web服务器

备份

首先请先备份数据库,我直接使用phpmyadmin的导出功能导出了wordpress.sql,当然你也可以在命令行使用mysql命令来导出。另外我们的主题/插件等文件都放在wordpress目录下的wp-content里面,所以我直接压缩了该文件。

安装wordpress

配置环境并安装wordpress

数据库配置

安装

这次我使用的是mariadb,直接使用下列命令安装即可。

sudo apt update
sudo apt install mariadb-server mariadb-client
#安装完毕后,可以运行下列命令去安全初始化数据库
sudo mysql_secure_installation
#然后重启数据库
sudo systemctl restart mariadb
添加用户
#登录数据库
sudo mysql -u root -p
#因为我们之后要导入一个新的数据库,所以暂时就先创建一个临时数据库好了
CREATE DATABASE temp_db;
#创建用户并授权,如果这里不想给*权限的话,之后导入新的数据库之后记得再次授权
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'type_password_here';
GRANT ALL ON temp_db.* TO 'wp_user'@'localhost' IDENTIFIED BY 'type_user_password_here' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
一个小问题

也许你注意到了,我们安装的数据库使用mysql -u root -p登陆时,无论输入的是什么密码都可以登陆成功,因为mysql(mariadb)默认使用了auth_socket插件,可以让你直接在本机上无需密码登陆数据库,如果要改成需要密码登陆的话,可以使用下面这条命令修改,不过建议要改的话还是等到完成所有安装步骤之后再改。

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND host = 'localhost';

nginx配置

安装nginx

sudo apt install nginx

安装并配置运行所需的php模块

sudo apt install php-fpm php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql php-cli php-ldap php-zip php-curl

要修改php的配置的话(如调整上传的文件的上限等等),编辑下面这个文件

sudo nano /etc/php/7.2/fpm/php.ini

站点配置

在nginx中新增名为wordpress的站点

sudo nano /etc/nginx/sites-available/wordpress

server {
    listen 80;
    listen [::]:80;
    root /var/www/html/wordpress;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com; #填你的域名

     client_max_body_size 100M;

    location / {
        try_files $uri $uri/ /index.php?$args;        
    }

    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass             unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

站点https配置

我直接使用了certbot-nginx的插件来自动获取并配置let’s encrypt的https证书。

使用方法查看https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx

配置好之后,选择了redirect,把80重定向到443端口,强制https访问。

下载安装wordpress

cd /var/www/html && wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
sudo chown -R www-data:www-data /var/www/html/wordpress/
sudo chmod -R 755 /var/www/html/wordpress/

修改wordpress配置文件

sudo nano /var/www/html/wordpress/wp-config.php

需要修改DB_NAME为之前创建的数据库名字(temp_db),以及DB_USER和DB_PASSWORD也要改成之前新建的wp_user对应的字段

重启nginx

sudo systemctl restart nginx.service
sudo systemctl restart php7.2-fpm.service

访问 https://example.com 理论上会出现wordpress的安装界面,如果是建立新站的话到这就差不多了。

执行完安装步骤,https://example.com已经处于可以访问的状况,显示wordpress默认的界面。

恢复之前的数据

安装phpmyadmin

大部分时候用phpmyadmin还是更加方便操作的

apt install phpmyadmin

注意安装的过程中他会让你选web服务器,由于我们使用的nginx不在他的列表里面,所以都不选跳过就好,然后数据库配置的话。

创建软链接

sudo ln -s /usr/share/phpmyadmin /var/www/html/wordpress

重启一下nginx之后,我们直接访问 https://example.com/phpmyadmin 即可,使用之前的wp_user登陆就可以了,然后新建一个名为wp_database的数据库,并在数据库里执行导入,把之前导出的数据导入到数据库中。然后修改wp-config.php,修改数据库的名字。

此时如果重启nginx再访问,会发现网站一片空白,不过别急,因为我们之前的wp-content文件还没传过来,没有资源文件自然一片空白,先删除当前的wp-content,然后通过sftp之类的方法把之前的服务器上的wp-content传输过来,再重启nginx,此时我们之前的网站已经迁移到新的服务器上了。

注意

  • 传输过来的wp-content文件可能存在权限问题,再次执行chown 和 chmod即可。

文章作者: HavocW
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 HavocW !
评论
  目录