腾讯云Ubuntu下WordPress从Apache迁移到Nginx过程

需求

之前一直都用Apache服务器,由于网站访问量比较大,另外加上旧服务器快到期了,准备迁移到腾讯云服务器上,所以决定采用Nginx服务器。

迁移过程比较心酸,之前一直用apache,对nginx服务器配置不熟悉,踩了很多坑。下面说一下我的网站从旧主机(配有apache服务器)迁移到腾讯云主机(配有nginx服务器)的过程。

那这里是我新购买的云主机

代码迁移

这个过程其实也是比较心酸的,查看了一下目录结构占用空间已经足足快1个G了,可想而知里面占用的大部分空间是上传的图片素材。

不过要是迁移全部图片的话工程量实在是巨大。不过,好消息是我从开始就使用了七牛CDN加速,所以,上传的图片会自动存放到七牛,只不过也在主机本地留了备份而已,所以,我可以安心地删掉它们了。

那么对代码进行瘦身之后,这里就有两种方法来迁移了:

1.可以用git上传到github,然后用另一台主机把代码拉下来即可,在此不再赘述。

2.打包上传,然后直接在另一台主机上下载下来,由于我的两台主机在同一局域网内,所以我直接采用了这种方式,传输速度快。

打包

由于代码中含有 .git 目录,所以这部分我们不需要打包,那么压缩时我们就需要排除这个文件夹。

文件夹名叫cqc,那么我们就打包一下,排除.git目录,使用如下命令

tar -zcvf cqc.tar.gz --exclude=cqc/.git cqc

运行结束后会出现 cqc.tar.gz 文件,这就是目录压缩包。

然后我们只需要在另一台主机上输入

wget http://xxx.xxx.xxx.xxx/cqc.tar.gz

即可完成下载,速度可是嗖嗖的

然后解压即可,代码便完成了迁移。

数据库迁移

数据库用二者的phpmyadmin导出和上传即可。我导出 .sql 文件,大小为9M,而phpMyAdmin的上传限制大小是2M,怎么办?其实我们可以压缩 .sql 文件为 zip格式,压缩之后就有了1.4M了,分分钟完成上传。要知道 phpMyAdmin 可是支持 .sql.zip 文件的。

接下来是一个比较重要的部分,那就是配置一下站点信息。直接修改数据库的两个URL。

分别是 siteurl 和 home,一定要修改为 http://xxx.xxx.xxx.xxx/cqc 的形式,也就是把原来的域名改成IP加目录的形式,要不然网站是无法访问的,会出现多重循环定向的提示。

好,其他的没什么问题,连接数据库错误的话就修改一下目录的 wp-config.php 文件吧,连接数据库的信息修改正确就好了。

配置vhosts

和 apache 一样,我们多个域名肯定要可以解析到不同的目录吧,nginx 当然也是支持的。

接下来我们需要把新域名解析到 cqc 目录,在 nginx 下怎么做呢?其实还是比较简单的。

在 /etc/nginx 目录下可以新建一个 vhosts文件夹。在这里我们要解析 cqc 目录,那么我就新建一个 cqc.conf 文件。

现在例如我要把 blog.cuiqingcai.com 解析到 cqc 文件夹,配置如下

server {
	listen 80;
	server_name cuiqingcai.com blog.cuiqingcai.com;
	
	index index.html index.htm index.php;
	root /var/www/cqc;
	
	location / {
		
		if (!-e $request_filename) {
			rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;
			rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
			rewrite ^ /index.php last;
		}
	}
	
	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
	#	# With php5-fpm:
	#	fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME /var/www/cqc$fastcgi_script_name;
		include fastcgi_params;
	}
}

其中

location / {
		
		if (!-e $request_filename) {
			rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;
			rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
			rewrite ^ /index.php last;
		}
	}

这一部分是伪静态重写,因为我的博客用的是wordpress,所以伪静态重写是这样的。当然还有其他的重写方式可以尝试。之后在 /etc/nginx/nginx.conf 中的 http{} 中添加一行

include /etc/nginx/vhosts/cqc.conf;

则代表引用了这个文件。

注意,还要把 域名设置一下,添加一条A记录到主机上。

好了,一切大功告成了。

后记

迁移和配置的过程坑实在是太多了,列列吧,警醒世人呐。

(1)代码迁移过程上传git,整个项目差不多1个G,由于数据量太大,导致内存不够无法正常上传。后来删除了图片,发现项目还是很大,结果发现是 .git 目录已经占用了上百兆,后来打包排除这个目录迁移的。

(2)数据库迁移的时候由于phpMyAdmin上传大小限制,修改了一番上传大小结果发现没生效,还倒腾了一下php-fpm,后来发现可以直接上传压缩包,那就分分钟完成了。

(3)配置完之后发现网站首页正常访问了,可是其他页面全部出现了404错误,后来配置了一番伪静态解析发现配置代码直接写在了 localhost server里面,后来发现可以直接新写一个 server,然后配置域名servername,然后配置伪静态重写才成功。

总之,坎坷是多,但是,自己慢慢摸索出来,也是一种不错的体验。

当你成功之后,会觉得世界又是那么美好。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

spring-boot 速成(2) devtools之热部署及LiveReload

JRebel热部署插件相信很多人都知道,但是这是一款商业插件,spring-boot框架也提供了类似的功能,即:devtools,关键是免费的! 使用方法如下:...

2958
来自专栏码农分享

Jsbeautifier JS代码美化库

1、为了防止别人窥探Js,我们通过会对代码进行压缩,这种压缩在一定程序上可以阻止一部分人对代码的查看。通过使用此工具,可以还原压缩前的内容,这是我使用过后发现的...

2444
来自专栏FreeBuf

Empire:PowerShell后期漏洞利用代理工具

文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! Empire是一个纯碎的PowerShell后期漏洞利用代理工具,它建立在密码学、...

2206
来自专栏散尽浮华

线上mongodb 数据库用户到期时间修改的操作记录

登陆版权数据库,显示"此用户已到期",数据库使用的是mongodb,顾 需要将此用户的到期时间延长。 ? ? 解决过程: 1)到网站对应tomcat配置里找出等...

1727
来自专栏猛牛哥的博客

CENTOS关闭selinux的方法

selinux其实挺烦的,有它在,连给正常服务改个端口都不行。比方说给ssh改其他端口,改完后重启sshd服务会提示:Job for sshd.service ...

1091
来自专栏杨建荣的学习笔记

Greenplum集群故障修复小记

今天有一套环境因为网络调整,结果诺大的Greenplum集群,primary和mirror节点部分有了故障,假设有200个实例,100个segment,...

1183
来自专栏Ceph对象存储方案

RGW Bucket Shard设计与优化-中

如何缓解 index shard 过大造成的影响 下面这些都是属于应急操作,属于快速止血止痛,部分操作属高危,一定要谨慎使用。 1 调整OSD的几个op超时...

7306
来自专栏点点滴滴

frp实现外网访问群晖synology

    下载Linux(centos7)版本的frp_0.21.0,所有版本frp点这里

1.1K2
来自专栏轮子工厂

来谈一谈你在编程过程中都遇到过哪些奇葩的问题

1、Jquery插件一个通用函数一直报错,尤其是很明显是存在的函数,很有可能就是你没有引入jquery。。。或者版本不对

681
来自专栏landv

金蝶开k3wise客户端访问中间层不时提示远程服务器不存在或不可用

842

扫码关注云+社区