wordpress转移到阿里云(非wordpress镜像)需要注意什么?
首先要安装mysql和php,这是wordpress必备项。
新主机安装mysql
由于wordpress默认的数据库配置是mysql,因此需要在新主机提前安装。
首先需要确保 Ubuntu 的包列表是最新的:
sudo apt update
Bash安装 MySQL 服务器:
sudo apt install mysql-server
Bash配置 MySQL:
这个工具将会提示你设置 root 用户的密码、删除匿名用户、禁止 root 远程登录和删除测试数据库。对于大多数情况,推荐选择默认配置(通常是输入 “y”)。
我在这里设置用户是root,密码是”,你可以根据实际情况设置。
sudo mysql_secure_installation
Bash启动和启用 MySQL 服务:
sudo systemctl status mysql
Bash确保 MySQL 服务在开机时自动启动:
sudo systemctl enable mysql
Bash登录 MySQL:
sudo mysql -u root -p
Bash输入你在 mysql_secure_installation
中设置的密码。
可选:这里可以选择在安全组里面打开3306,这是mysql默认使用的端口,暂没发现如果没打开这个端口会有什么问题。
创建数据库wordpress
在mysql界面,直接创建:
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Bash这里的[database_name]通常是wordpress,注意要带上分号;,不然命令会不成功。
CHARACTER和COLLATE其实是输出的是默认项,即utf8,上面mb4不影响。
测试是否创建成功:
登录mysql后,连接数据库:
USE wordpress;
Bash显示表格:
SHOW TABLES;
Bash这一步就会显示出所有的表名。
退出MYSQL:
EXIT #或者quit
Bash如果在mysql输入错误,点击ctrl+c可以返回上一步。
安装PHP
更新包列表:
sudo apt update
Bash安装php:
使用以下命令安装PHP及其常用模块:
sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear
Bash验证安装:
php -v
Bash可选步骤:安装wordpress
如果你把备份的wordpress拷贝过去,一般不需要操作这一步。但是如果你发现新的文件有各种各样的问题,或者文件损坏,这时候最好就安装新的wordpress,再把wp-content和wp-admin文件夹的内容拷贝过去。
下载WordPress:
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
Bash将WordPress文件复制到web服务器的文档根目录下:
sudo cp -a /tmp/wordpress/. /var/www/html
Bash配置文件权限:
为了确保WordPress能够正确地工作,您需要更改文件和目录的所有权:
sudo chown -R www-data:www-data /var/www/html
Bash注:wordpress默认用户是www-data,所以在给它设置文件夹的权限。这个用户名也会体现在Nginx的配置中。
备份数据库和wordpress文件夹
针对原主机上,在terminal上执行下面的操作以备份数据库到本地:
scp root@149.129.84.1:/home/admin/backup.sql /Users/lxz/Desktop
Bash执行下面操作备份wordpress文件夹:
scp root@149.129.84.1:/data/wwwroot/wordpress/wordpress_backup.tar.gz /Users/lxz/Downloads
Bash这个步骤会比较久,因为文件比较大。
推送备份到新主机
数据库备份:
scp /Users/lxz/Downloads/backup.sql root@8.217.65.15:/root
Bashwordpress备份:
scp /Users/lxz/Downloads/wordpress_backup.tar.gz root@8.217.65.15:/root
Bash同样,文件大了,这个过程会比较久。
当然,有人肯定注意到了,其实不需要经过本地这个“二道贩子”,直接云主机间传输的。我这次没有尝试这个方式,下次会试一下。
好了,这样一来,新主机就有源主机的wordpress配置信息和数据库了。下面的操作都是在新主机完成的了。
设定文件夹 /var/www/html
上面的流程,我们把备份文件放在了root文件夹,这不是最佳实际,最好是放在/var/www/html文件夹内。移动文件夹:
sudo mv /root/* /var/www/html/
Bash如果你需要的是拷贝:
sudo cp -r /root/* /var/www/html
Bash将root下面的文件全部复制到/var/www/html中去。
设置适当的权限:
sudo chown -R www-data:www-data /var/www/html/
sudo find /var/www/html/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/ -type f -exec chmod 644 {} \;
BashNginx设置
由于我使用的nginx,所以下面都是Nginx的配置,aphache请自行GPT。
我的nginx.conf配置如下:
关键点有三个:
1.设定server_name,root文件夹,和要用作主页的index
2.设定location里的index.php
3.设定php的路径
user www-data;
#user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
server {
#listen 443 ssl;
listen 80;
#server_name 183441.xyz;
server_name 183441.xyz;
root /var/www/html;
index index.php;
#index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$args;
# proxy_pass http://localhost:3000;
# proxy_pass https://commonlearner.com;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
}
#处理php
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 请注意这里使用了 8.1 的套接字
# fastcgi_index index.php;
}
location /phpMyAdmin {
root /var/www/html;
index index.php index.html index.htm;
}
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Bash注:phpmyadmin可以根据需要设置,非必要
如果nginx没有运行
确认Nginx是否正在运行:
ps aux | grep nginx
Bash如果不是active的状态,启动Nginx:
sudo systemctl start nginx
Bash重新加载nginx配置:
sudo nginx -s reload
Bash如果问题还存在,检查nginx配置中的错误:
sudo nginx -t
BashNginx启动不了?
通常是别的服务占用了80端口,可能是apache,找出正在使用端口80的进程:
sudo netstat -tuln | grep :80
Bash杀死占用端口80的进程:
sudo kill -9 [PID]
Bash再次查看占用的程序:
sudo lsof -i :80
Bash再次启动Nginx:
sudo systemctl start nginx
Bash改变数据库默认登录方式
这一步非常关键!!!!特别是Ubuntu系统要看。我在这一步卡了两天。
因为连接到主机IP地址后,总是显示“数据库连接错误”,各种排查都找不到原因。最后还是无意中GPT提到的这个方法——改变数据库默认登录方式,从私钥验证改成密码验证,就成功了。
首先登录mysql,这里username是root,-p是输入密码的意思。我的密码是空,所以接着按回车就可以;
mysql -u root -p
Bash接着将mysql默认的身份验证方式改成密码验证,我没设置密码,因此是空字符”;
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '';
Bash手动改变wordpress主题的首页链接
因为发现首页会自动跳转到以前的旧网址,一排查原因发现是主题内设定了自定义链接。
在后台进入主题设置,改变主页地址,从www.linxiaozhong.club改到183441.xyz就可以了。
wp-admin无法登录?
通常是wp_options的问题,这个可以在mysql里面改。
主机登录mysql后,
检查当前siteurl和home的值:
SELECT option_name, option_value FROM wp_options WHERE option_name='siteurl' OR option_name='home';
Bash更新siteurl
和home
值:
UPDATE wp_options SET option_value='http://your_domain_or_IP' WHERE option_name='siteurl';
UPDATE wp_options SET option_value='http://your_domain_or_IP' WHERE option_name='home';
Bash退出MySQL:
exit;
Bash通常这就搞定了。
其他wordpress错误:
可以通过日志了解。
将wp-config.php文件里的debug设置为true,可以给你更多的信息。
define('WP_DEBUG', true);
Bash