【准备】
1、三台主机:
两台服务器(我的是虚拟机),假设从旧服务器(192.168.1.101)迁移到新服务器(192.168.1.102)。新主机操作系统为Ubuntu Server 18.04 LTS。
一台主机(我的是Deepin Linux)用来远程ssh和ftp操作,安装有浏览器、FileZilla、终端,所有操作在这台主机进行。
2、备份旧服务器数据
(1)主机使用FileZilla把192.168.1.101服务器的/var/www/html目录整个拷贝到本机的一个目录下;
(2)浏览器输入:http://192.168.1.101/phpmyadmin
用phpMyAdmin将数据库迁移,点击左侧wordpress,然后右侧点击导出,导出为sql文件,也保存在本机的一个目录下。
【新服务器配置】
1、登录新服务器
本机打开终端,输入
ssh 192.168.1.102
2、安装LAMP
sudo apt install lamp-server^
给/var/www/html赋予读写权限
sudo chmod -R 777 /var/www/html
3、修改MySQL5.7的root密码
sudo nano /etc/mysql/debian.cnf
找到用户名:debian-sys-maint,密码:fPw**********b22(这是随机生成的)
复制这个密码
Ctrl+X,退出
mysql -u debian-sys-maint -p
Enter password:输入刚才找到的密码
接下来,设置root用户密码(假设为123456)
mysql> update mysql.user set authentication_string=PASSWORD(“123456″) where User=’root’;
mysql> update mysql.user set plugin=”mysql_native_password”;
mysql> flush privileges;
mysql> quit;
注意:双引号和单引号都是英文的,如果复制时发生问题,记得改过来
关闭再启动MySQL
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
用root用户和密码进去看看
mysql -u root -p
4、安装和配置phpMyAdmin
sudo apt install phpmyadmin
设定 phpmyadmin时按空格键选apache2
Configure database for phpmyadmin with dbconfig-common? 选择yes
输入数据库密码
然后,重启apache,Mysql
sudo service apache2 restart
sudo service mysql restart
浏览器http://192.168.1.102/phpmyadmin看是否出现初始登录界面
5、安装和设置vsftpd
sudo apt install vsftpd
sudo mkdir /home/ftp
sudo chmod -R 777 /home/ftp
sudo useradd -m ftp
sudo passwd ftp
目录/home/ftp和用户ftp都有了,接下来配置vsftpd
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf
然后把下面这段粘贴进去
listen=YES
max_clients=200
max_per_ip=4
seccomp_sandbox=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
local_root=/home/ftp/
然后Ctrl+X,Y,保存退出
接下来,编辑锁定的用户名单
sudo gedit /etc/vsftpd.chroot_list
打开是个空白文件,将需要的用户名写进去,这些用户之前是已经建立,比如这次要把用户ftp、abc、def设为可用的用户,就这样写:
ftp
abc
def
注意每行后面不要留空格。保存,退出。
接下来,重启一下vsftpd
sudo service vsftpd restart
6、修改php上传最高权限
(默认上传为2MB,这是为了恢复数据库文件的,根据数据库大小,比如修改到50MB)
sudo nano /var/www/html/info.php
空白文件,粘贴下面内容:
<?php
phpinfo();
?>
然后Ctrl+X,Y,保存退出
浏览器http://192.168.1.102/info.php
找到Loaded Configuration File,这样就可以找到/etc/php/7.2/apache2/php.ini
sudo nano /etc/php/7.2/apache2/php.ini
找到以下项目,修改为50MB
post_max_size = 50M
upload_max_filesize = 50M
然后Ctrl+X,Y,保存退出
【恢复备份到新服务器】
1、恢复WordPress
主机使用FileZilla把html目录下的所有文件上传到192.168.1.102
这样就把WordPress本尊和内容都一次性迁移过去了
2、数据库还原
主机浏览器:http://192.168.1.102/phpmyadmin
语言:选中文
用户名:root
密码:建LAMP环境时设置的密码
点击数据库,输入数据库名,比如wordpress,然后点击创建。
(注意,这个数据库名必须和之前备份的sql文件里的一致,不记得的话可以用文本编辑器打开sql文件,找到— Database: `wordpress`,就是这个名字)
点击导入,选择sql文件(之前保留在本机的数据库备份文件),然后执行。遇到问题,忽略即可。
【启用新服务器】
现在可以将旧服务器(192.168.1.101)关机
ssh 192.168.1.101
sudo shutdown now
接下来把这个IP给新服务器,这是为了照顾局域网内其他主机使用方便
ssh 192.168.1.102
Ubuntu Server 18.04修改的方法如下:
sudo nano /etc/netplan/50-cloud-init.yaml
然后编辑如下(IP改为192.168.1.101,路由器IP为192.168.1.1):
network:
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.1.101/24]
dhcp4: false
optional: true
gateway4: 192.168.1.1
nameservers:
addresses: [114.114.114.114,8.8.8.8]
version: 2
Ctrl+X,输入Y,回车保存退出
执行如下命令让配置生效,静态IP就配置好了
netplan apply
这时主机会断线,因为服务器IP变动了
接下来,主机新开终端:
ssh 192.168.1.101
出现Host key verification failed
会出现秘钥不对,不能登录,这时主机的问题
sudo mv ~/.ssh/known_hosts ~/.ssh/known_hosts.bak
把秘钥文件内容清空掉就好了
再次执行ssh 192.168.1.101
输入:yes
完成了
浏览器:http://192.168.1.101,原来的主页回来了
这样,新主机就和原先的设置完全一致了。
【后记】
我的服务器是VMWare虚拟机,由于VMWare对Linux类操作系统的碎片回收不好,会出现越用空间越大的问题,用VMWare自带的压缩功能也是得不到好的解决。
所以干脆用迁移新虚拟机的方法来解决,有一个好处就是软件是最新的,而且空间最节省。
用Ubuntu Server没有安装图形界面,又可以节省一些空间。
我原来的服务器虚拟机从9GB膨胀到45GB,经过迁移后,新的服务器虚拟机不到6GB。