2011年3月23日 | 标签: , , ,

设置rewrite的伪静态主要是为了去除url路径里包含的index.php,让url看起来更为规范,也可以说是为了更好的SEO。现在的*nix主机基本都部署的apache和nginx,这里整理下常见的wordpress在两个服务器下的伪静态文件。

wordpress在apache服务器上rewrite的伪静态文件代码。
只有在apache加载了rewrite模块后才能使rewrite生效,并且设置allowoverride all才能使.htaccess文件生效。


RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

wordpress在nginx服务器上rewrite的伪静态文件代码。

location / {
      index index.html index.php;
      if (-f $request_filename/index.html){
           rewrite (.*) $1/index.html break;
      }
     if (-f $request_filename/index.php){
           rewrite (.*) $1/index.php;
     }
     if (!-f $request_filename){
           rewrite (.*) /index.php;
     }
}

对于在dotcloud这种以nginx作为服务器的云平台上搭建wordpress尤其适用。

try_files $uri $uri/ /index.php;
2011年3月5日 | 标签: , ,

收到了DotCloud的邀请,于是将自己使用wordpress建立的blog迁移到DotCloud。记录一下整个的过程,同样的方法也可以用于在DotCloud上搭建一个新的wordpress,因为前半部分过程基本是一份中文版的DotCloud安装wordpress教程,若需要看原文请访问 http://docs.dotcloud.com/tutorials/wordpress/

 

DotCloud介绍

DotCloud是第二代平台服务商,与GAE只支持Python和Java不同,为客户提供多种语言支持与服务组建:PHP,Python,Java,Ruby,MySQL,PostgreSQL,Redis等等,连稀有的Node.js都在他们的组件支持范围内(详情请访问 http://docs.dotcloud.com/components/roadmap/ )。但是现在DotCloud处于Beta阶段,只有获得邀请的用户才能使用。
DotCloud基本是通过命令行方式的客户端对项目进行管理。所以在了解DotCloud提供的基础命令之前,我们需要先在本地安装DotCloud的命令行客户端。

 

安装DotCloud客户端

  • 首先请确认你的python版本至少是2.6版的,如果不是2.6版本,请更新你的python。
    $ python -V
    

    根据情况选择一下一种方式安装DotCloud客户端:

    • 安装有setuptools开发包的请使用easy_install安装DotCloud;
      $ sudo easy_install dotcloud //官方推荐方式
      
    • 如果没有setuptools开发包请使用下面的方式安装DotCloud客户端;

      $ sudo apt-get install python-pip //基于Debian的系统,获取pip(原pyinstall)
      $ sudo pip install dotcloud       //通过pip安装DotCloud
      

    确认DotCloud的命令行程序安装成功,提示你输入API Key。登陆DotCloud网站,你的账户下的settings里有你的API Key。

    $ dotcloud   //这时会提醒你输入你的API Key
    

     

    下载wordpress

    你可以选择下载最新的wordpress的中文版或者英文版,并解压至一文件夹。

    $ wget -O wordpress.zip  http://wpcn.googlecode.com/files/WordPress.v3.1.Incl.Simp.Chinese.Pack.v1-wpcng.zip  //下载wordpress 3.1中文版
    $ unzip wordpress.zip
    

     

    在DotCloud上部署服务

    首先需要建立一个新项目的空间命名,在该空间命名下部署多个不同类型的服务,也可以部署多个相同类型的服务。空间命名的唯一性要求该项目的空间命名不能和DotCloud上其他用户建立的命名重复。

    /***
    建立一个新项目的空间命名foo(请将“foo”替换成你喜欢的名称,如果和其他户用项目名称重复会有提示)
    ***/
    $ dotcloud create foo
    
    /***
    然后我们为foo项目下部署一些不同的类型的服务来支持我们的wordpress的运行
    因为wordpress应用通常是基于PHP和MySQL,所以让DotCloud为我们的wordpress提供这两项服务支持
    ***/
    
    $ dotcloud deploy -t php  foo.blog //提供PHP支持
    /***
    部署成功后,你可以通过http://blog.foo.dotcloud.com来访问,并看见phpinfo输出的信息
    ***/
    
    $ dotcloud deploy -t mysql foo.mysql  //提供MySQL支持
    
    $ dotcloud list  //察看DotCloud上我们的所有项目及服务
    
    $ dotcloud info foo.mysql //服务具体信息,尤其是MySQL的具体信息,我们在配置wordpress会需要用到
    cluster: wolverine
    config:
        mysql_password: L2T3yuH}
    deployment: sanfran
    name: sanfran.db
    ports:
    -   name: mysql
        url: mysql://root:L2T3yuH}@mysql.foo.dotcloud.com:7255
    -   name: ssh
        url: ssh://dotcloud@mysql.foo.dotcloud.com:7256
    type: mysql
    

     

    修改wordpress配置

    将wordpress文件夹里的wp-config-sample.php并另存为wp-config.php,并打开文件,根据上面提供的mysql的具体信息(注意:如果不愿意使用DotCloud生成默认数据库,请登录MySQL,新建一个数据库),修改以下内容:

    /** The name of the database for WordPress */
    define('DB_NAME', 'mysql');  //若你新建一个数据库,这里填写你新建数据库名称,而非”mysql“,推荐方法是:新建一个数据库来供wordpress使用;
    
    /** 该数据库的用户名 */
    define('DB_USER', 'root');
    
    /** 该用户的密码 */
    define('DB_PASSWORD', 'L2T3yuH}');
    
    /** 数据库的主机名(一般情况下不需要改动本项) */
    define('DB_HOST', 'mysql.foo.dotcloud.com:7255');   //请注意这里填写你mysql服务的具体地址和端口,并非原文注释的不做修改。
    

    打开 https://api.wordpress.org/secret-key/1.1/salt/ 将获取的值覆盖文件里的以下内容

    define('AUTH_KEY',         'put your unique phrase here');
    define('SECURE_AUTH_KEY',  'put your unique phrase here');
    define('LOGGED_IN_KEY',    'put your unique phrase here');
    define('NONCE_KEY',        'put your unique phrase here');
    define('AUTH_SALT',        'put your unique phrase here');
    define('SECURE_AUTH_SALT', 'put your unique phrase here');
    define('LOGGED_IN_SALT',   'put your unique phrase here');
    define('NONCE_SALT',       'put your unique phrase here');
    

     

    设置永久链接

    因为DotCloud是基于nginx,官方的资料上提供了让nginx支持wordpress的永久链接的配置文件。在wordpress文件夹下新建一个nginx.conf文件,输入以下内容:

    try_files $uri $uri/ /index.php;
    

     

    制作postinstall脚本

    使用DotCloud客户端push代码,会试本地的代码与服务器上的代码作比较,并完全覆盖已存在的代码,并删除服务器上多余的代码。可以看作似乎在DotaCloud上建立一个与本地完全一样的镜像。所以DotCloud提供了一种方法来防止覆盖通过wordpress安装的插件、主题及一些上传的文件(其实就是所有在wp-content里的文件)。
    在wordpress下新建一个postinstall文件并输入以下内容

    #!/bin/sh
    if [ -d ~/data/wp-content ]
    then
          rm -rf ~/current/wp-content
    else
          mkdir -p ~/data
          mv ~/current/wp-content ~/data/wp-content
    fi
    ln -s ~/data/wp-content ~/current/wp-content
    

    让postinstall脚本可执行

    $ chmod +a postinstall
    

     

    将wordpress代码push到DotCloud

    $ cd wordpress
    $ dotcloud push foo.blog . //将wordpress文件下的所有内容传送至DotCloud并覆盖原有的内容
    

     
    至此基本的wordpress已经部署完毕了,打开http://blog.foo.dotcloud.com便可以开始设置你的wordpress并开始使用了。

    而DotCloud建议用户通过下载新版本wordpress进行升级,解压后覆盖掉wp-config.php, postinstall and nginx.conf,将代码push到服务器上完成升级。

     
    接下来开始数据迁移,需要对原有的blog数据进行备份,并向新的blog导入备份。

     

    使用BackWPup备份wordpress

    BackWPup是一个优秀的wordpress插件,提供了较为全面的备份服务。BackWPup使用方法
    当然你也可以使用更为熟悉的插件或者其他方式备份wordpress。

     

    导入wordpress数据库备份

    导入备份的方式有几种:

    • 推荐方式:通过phpMyAdmin导入sql文件;
    • 通过mysql命令行导入sql文件;
    • 通过wordpress自身的xml文件导入;

    通过phpMyAdmin导入数据

    配置phpMyAdmin并将其运行在DotCloud,可以方便以后对数据库进行管理,推荐使用该方法导入数据,同时也因为可以突破DotCloud现在针对免费用户的2M上传限制。
    通过上面的方法在DotCloud上为phpMyAdmin建立一个PHP服务foo.phpmyadmin。

    $ dotcloud deploy -t php foo.phpmyadmin
    

     

    配置phpMyAdmin

    phpMyAdmin网站 下载最新的phpMyAdmin,解压后根据之前为wordpress建立的mysql服务修改配置。
    phpMyAdmin版本高于3.3.x可以直接找到phpmyadmin文件夹里的/libraries/config.default.php文件并进行编辑(如果是版本低于3.3.x请将config.default.php打开,以config.php命名另存在phpmyadmin文件里进行编辑),使其可以对在DotCloud建立的数据库进行管理:

    /**找到$cfg['Servers'][$i]['host'],$cfg['Servers'][$i]['user'],$cfg['Servers'][$i]['password']进行修改,并确认 $cfg['Servers'][$i]['auth_type'] = 'cookie';
    **/
    $cfg['Servers'][$i]['host'] = 'mysql.foo.dotcloud.com:7255'; //我们建立的mysql的地址及端口
    $cfg['Servers'][$i]['user'] = 'root'; //登录数据库的用户名
    $cfg['Servers'][$i]['password'] = 'L2T3yuH}'; //用户密码
    $cfg['Servers'][$i]['auth_type'] = 'cookie'; //因为通过网络进行访问,请确认该值为cookie。
    

    因为DotCloud的对通过PHP上传文件的大小限制为2M(可能收费用户没限制,我现在使用的是免费服务),所以为方便我们导入大于2M的备份文件,还需要继续修改phpMyAdmin的配置文件(具体原因请访问 让phpMyAdmin导入超过上传限制的备份文件 )。在phpmyadmin下建立一个文件夹backup,继续修改phpmyadmin文件夹里的/libraries/config.default.php文件:

    $cfg['UploadDir'] = 'backup'; //赋值为phpmyadmin下刚才建立的文件夹
    

    将phpMyAdmin代码push到DotCloud:

    $ cd phpmyadmin
    $ dotcloud push foo.phpmyadmin .
    

    接下来我们可以访问http://phpmyadmin.foo.dotcloud.com登录phpMyAdmin对数据库进行管理,选中mysql数据库,导入我们的wordpress数据库备份文件。
    如果我们的备份文件大于2M,请将备份文件放至backup文件夹里,确认备份为sql文件而非压缩文件或者其他格式。
    再次将phpMyAdmin的代码push到DotCloud,打开phpMyAdmin的导入选项,会发现里面多了一个“网站服务器上传文件夹”选项,选中我们刚才导入的备份文件,导入文件,完成后我们便完成了数据导入过程。

     

    通过mysql命令行导入sql文件

    $ mysql -h mysql.foo.dotcloud.com -P7255  -u root -p
     Enter password://数据密码
    
    mysql>use mysql //选择到mysql数据库
    
    mysql>source /home/jeremy/wordpress.sql  //导入sql文件,请根据你的备份文件修改文件路径及名字
    

    通过XML导入

    就是通过wordpress自带的工具栏里的导入进行导入,比较简单,不作详细介绍。

     

    完成wordpress数据库升级

    完成数据导入以后,请重新登陆wordpress以便使其进行数据库数据升级。

     

    其他

    以上便是整个将wordpress搬家到DotCloud云服务上的整个过程。当然或者你还有别的需要,比如你需要在DotCloud上绑定你现有的域名:

    /**
    将下面的地址换成你自己的域名,并根据提示修改你的CNAME记录。
    **/
    $ dotcloud alias add foo.blog http://5.yupana.net
    
  • 2011年1月31日 | 标签: ,
    2010年12月30日 | 标签: ,

    301110: Marmite
    301110: Marmite
    http://www.flickr.com/photos/-madonna-/5227229034/

    Scene from The Birds
    Scene from The Birds
    http://www.flickr.com/photos/heavenly-flower/5225795871/

    Délire d’automne….
    Délire d'automne....
    http://www.flickr.com/photos/cachemaille/5226471678/

    Even the sun sets more beautiful in Paris~
    Even the sun sets more beautiful in Paris~
    http://www.flickr.com/photos/-sunny-/5226295833/

    Boats versus Clouds
    Boats versus Clouds
    http://www.flickr.com/photos/tripax/5223733307/

    Dear sunshine
    Dear sunshine
    http://www.flickr.com/photos/pyrus/5223364196/

    Frost
    Frost
    http://www.flickr.com/photos/abvidars/5223517337/

    Sin destino…….
    Sin destino.......
    http://www.flickr.com/photos/yokusho/5223699990/

    Lighting Candles
    Lighting Candles
    http://www.flickr.com/photos/pmmphoto/5302528019/

    Blackall Sparks
    Blackall Sparks
    http://www.flickr.com/photos/snelvis/5225537369/

    Einseideln Abbey HDR (Explore Front page)
    Einseideln Abbey HDR (Explore Front page)
    http://www.flickr.com/photos/mr_deven/5230950803/

    無標題 | Flickr – 相片分享!
    無標題 | Flickr - 相片分享!
    http://www.flickr.com/photos/toshiya-w/5230860847/

    無標題 | Flickr – 相片分享!
    無標題 | Flickr - 相片分享!
    http://www.flickr.com/photos/poppycockburn/5232855720/

    Cheung Chau, HK
    Cheung Chau, HK
    http://www.flickr.com/photos/fireflyworkshop/5231197487/

    無標題 | Flickr – 相片分享!
    無標題 | Flickr - 相片分享!
    http://www.flickr.com/photos/michad90/5273021039/

    Just before the marriage….(Explored..!)
    Just before the marriage....(Explored..!)
    http://www.flickr.com/photos/13196249@N05/5284731591/

    Spots in the night {explored}
    Spots in the night {explored}
    http://www.flickr.com/photos/dominikfoto/5285279014/

    294/365
    294/365
    http://www.flickr.com/photos/olivia-paige/5275264306/

    Day 124/365: Face To Face
    Day 124/365: Face To Face
    http://www.flickr.com/photos/hien1234/5273631563/

    Travel light
    Travel light
    http://www.flickr.com/photos/lasfotosdemikel/5292331489/

    2010年11月30日 | 标签: ,

    Switch to our mobile site