域名切换后wordpress需要做的相应改动

以前买了一个索马里的域名,88元/年,价格还算厚道,忽然so域名的注册局变了,移交给了海盗当局,以后续费就要350一年了,考虑了一下,决定还是重新申请一个cn的域名用用。虽然网站几乎还没什么流量,但是毕竟搜索引擎已经有收录了,因此还是得做一些域名切换的操作。

WordPress:

登陆管理后台,在设置中,将WordPress地址设置为新的域名。

百度sitemap插件中,将系统安装的URL路径重新校验为新的域名。

百度站长工具:

在百度站长工具中新增新的域名,否则百度sitemap插件会停止提交站内索引。

百度统计:

如果用了百度统计,需要在百度统计中新增站点,并在wordpress中更新站点统计JS代码。

Nginx:

1、将以前配置中的server_name修改为新的域名:

server_name  wujc.cn www.wujc.cn;

2、增加一个server节点,用来配置老的域名并重定向到新的域名:

server {
    listen       80;
    server_name  wjc.so www.wjc.so;

    location / {
        rewrite ^/(.*) http://wujc.cn/$1 permanent;
    }
}

重新加载nginx即可,至此所有搜索引擎中老域名过来的请求都会被重新定向到新域名。传说聪明的搜索引擎检测到后会逐渐自动将老的域名PR值切换到新的域名去,不过没有验证过,但是Google很快会自动收录新域名的内容,百度不会很快主动收录。

常用的一些git操作

上传本地tag到服务器:    git push origin <tagname>
重定向仓库:git remote set-url origin
某个目录增加一个仓库:git remote add <repo_alias> git@*.com:~/repo/<repo_name>.git
放弃本地更改:git reset –hard
ssh协议checkout如果比较慢,可以尝试使用http(s)协议,而且可以指定http代理:
git config –global http.proxy http://127.0.0.1:1080
 

如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

git stash

git pull

git stash pop

然后可以使用git diff -w +文件名 来确认代码自动合并的情况.

将本地项目纳入远程git:
git init
git remote add origin xxx
git pull
git add *
git reset –hard
git checkout dev
如果项目提交的用户名和全局设置不一致,需要单独设置项目提交用户名:
git config –local user.name xxx
git config –local user.email xxx

411 错误:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly

这个错误是因为是由于上传的包过大 HTTP 的头出错导致的。

解决方法

需要设置http.postBuffer,设置为50MB就可以了

git config http.postBuffer 524288000
搭建git服务:
useradd git(ubuntu下可以使用adduser git)
su - git
mkdir repo
mkdir .ssh
chmod 700 .ssh
cd repo
git init --bare <reponame>.git
cd ../.ssh
vim authorized_keys2 添加自己的公钥
chmod 600 authorized_keys2
windows环境下在cmd中 mkdir .ssh,然后把私钥复制到.ssh目录,文件名为id_rsa,如果复制到用户的工作目录不行,可以尝试复制到git的安装目录
git clone [email protected]:~/repo/<reponame>.git
git push -u origin master

使用rinetd做端口转发

Linux中的iptables非常强大,但是用起来稍显复杂。如果只做端口转发,使用rinetd是一个非常不错的选择。

官方网站为:http://www.boutell.com/rinetd/

安装很简单:

wget  http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar fxz rinetd.tar.gz   
cd rinetd 
make  
make install

修改配置文件:vim /etc/rinetd.conf ,例如

0.0.0.0    1234    dest_ip    dest_port

其中0.0.0.0为本机要监听的IP,0.0.0.0表示所有IP都可以访问该转发服务。
1234为监听端口,dest_ip为转发目标的IP,dest_port为转发目标的端口。

Nginx根据Http头字段来分发请求

有两套客户端,共用了同一个接口服务,通过Http方式交互,现在需要将两套客户端对应的接口服务分离。由于请求的uri完全一致,调用的接口也完全一致,只有Http头里面有一个字段,用来区分是来自哪个客户端的请求。于是考虑根据这个Http头字段来进行请求分发,不同的客户端对应到不同的服务端。

写了个简单的配置示例(nginx.conf),证实该方案是可行的:

location / {
        	if ($http_t = "163"){
        		proxy_pass   http://163.com;
        	}
        	if ($http_t = "baidu"){
        		proxy_pass   http://baidu.com;
        	}
        	
            root   html;
            index  index.html index.htm;
        }

其中$http_为nginx配置文件中获取Http头字段的默认前缀,例如Http头中有个字段为t,那么$http_t就为该字段对应的值。当该值为163的时候,直接跳转到163网站,当该值为baidu的时候,直接跳转到百度网站。

处理完该事情后,对Http JSON接口协议的制定也有了一些新的认识,对于全局性的字段,建议放到Http头中进行传递,因为不需要解析包体就可以对该请求做一些简单分析和处理。对于接口相关性的字段,可以放在JSON包体中进行传递。