WP-DBManager是个不错的数据库管理插件,功能之一是把备份好的数据库打包发送到指定的邮箱.

VPS因为没有配置smtp服务,这样php的mail函数不能正常工作,更加考虑到用Gmail信箱用来备份是个很好的选择,于是下载了WP-Mail-SMTP插件,设置WP用SMTP发信.安装设置好后,测试邮件能发送成功,但WP-DBManager的邮件发送显示OK,Gmail里面却收不到东西.

换了Configure SMTP再试,这个插件更智能点,配置Gmail的信箱很容易.一样安装设置好后,测试邮件能发送成功,但WP-DBManager的邮件发送显示OK,Gmail里面却收不到东西.

于是估计大概可能也许是WP-DBManager的问题.查看了一下,与wp-dbmanager/wp-dbmanager.php及wp-dbmanager/database-manage.php二个文件有关.前者用于配置参数,其中有自动备份并发送邮件功能;后者用于管理备份文件,其中有将备份文件发送到指定信箱功能.果然这二个文件里都将邮件发送部分写成死死的php的mail函数,这样无论WP-Mail-SMTP还是Configure SMTP有多强大,它都不知道啊~~

修改很简单,查找wp-dbmanager/wp-dbmanager.php中的

mail($backup_email, $mail_subject, $mail_message, $mail_header);

改为

wp_mail($backup_email, $mail_subject, $mail_message, $mail_header);

查找wp-dbmanager/database-manage.php中的

mail($mail_to, $mail_subject, $mail_message, $mail_header);

改为

wp_mail($mail_to, $mail_subject, $mail_message, $mail_header);

啊,没错,前面加wp_就好,wp_mail的相关信息可以参考 http://phpdoc.wordpress.org/trunk/WordPress/_wp-includes---pluggable.php.html#functionwp_mail 这样修改后,wp_mail会使用WP-Mail-SMTP或Configure SMTP的配置SMTP发送邮件.这二个插件在wp3中都正常工作.

WP-DBManage现在能成功发送打包后的数据库备份文件到指定的Gmail信箱了,8过标题是乱码,好在正文是全E文的,能看清. 修正标题乱码,在前面所说的二个php文件中,查找

$mail_subject = sprintf(__('%s Database Backup File For %s', 'wp-dbmanager'), get_bloginfo('name'), $file_date);

均在后面加入下面这一行进行base64编码

$mail_subject = '=?UTF-8?B?'.base64_encode($mail_subject).'?=';

再试一次发送邮件,万事大吉了~

可能的问题: WP-DBManager的设置页面,Path To mysqldump:以及Path To mysql:在自动检测失败时,要手动填入包含程序名的绝对路径,比如

Path To mysqldump:/usr/local/mysql/bin/mysqldump
Path To mysql:/usr/local/mysql/bin/mysql

或者在大多数机器上,是在/usr/bin下的.

wp-content/backup-db放有备份文件,确保使用.htaccess进行保护,或者修改这个目录名.

WP-Mail-SMTP或Configure SMTP配置时,都最好使用ssl加密连接,端口为465.使用Gmail时,也最好用https方式,这样你的网站数据,基本上都在加密通道跑来跑去,还算是比较安全的.

参考地址

修改loop.php 查找第二处"continue reading",该行改为

<?php the_content("......点此阅读<span class=\"widget-title\">t " . get_the_title('', '', false) . "</span> 全文......"); >

function.php底部加入脚本,用于跳转到文章开头.

function remove_more_jump_link($link) { 
    $offset = strpos($link, '#more-');
    if ($offset) {
        $end = strpos($link, '"',$offset);
    }
    if ($end) {
        $link = substr_replace($link, '', $offset, $end-$offset);
    }
    return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

博客架设前,试用了很多相关程序,包括drupal,dedecms,wordpress等,甚至单文件的TiddlyWiki. 个人觉得TiddlyWiki在本地使用是很方便的,只是放在网上管理上会比较麻烦.drupal在定制一番后,也蛮好用,麻烦就麻烦在要定制不少东西.最后决定用wordpress,相对drupal来说,wordpress上手要容易得多,特别是新版本的wordpress 3的menu很好用.

WP3计划放在安装了centos5的VPS上,使用源代码编译安装apache,mod_php以及mysql三大件.Nginx要下次再换了,因为现在最新版本的php5.3.2编译成fpm方式比较麻烦.好在fpm已经进入PHP的SVN了,不久就应该有官方的fpm出来.

安装过程写在下面,方便以后重个装,查个找什么的.

  1. 安装apache

    从官方网站 http://httpd.apache.org/ 下载 httpd-2.2.15.tar.gz 把所有扩展功能都编译成模块,用--enable-modules=all与--enable-mods-shared=all二个参数.把all替换成most,则只编译大部分模块,或者指定模块名.懒人用all吧,编译完成后再去配置文件里,去掉不要的功能.

     tar vzxf httpd-2.2.15.tar.gz
     cd httpd-2.2.15
     ./configure --prefix=/usr/local/apache2 \
     --enable-modules=all \
     --enable-mods-shared=all
    

    apache的配置文件在PHP安装完成后再修改.

  2. 安装mysql

    从官方网站http://mysql.com下载mysql-5.1.35.tar.gz 其实mysql的安装,用yum最方便,我自己编译安装,是yum update时省点流量.虽然这个VPS流量挺多...

     tar -vzxf mysql-5.1.35.tar.gz
     cd mysql-5.1.35
     ./configure --prefix=/usr/local/mysql \
     --enable-assembler \
     --with-charset=utf8 \
     --enable-thread-safe-client \
     --with-extra-charsets=all \
     --with-big-tables \
     --with-readline \
     --with-ssl \
     --with-embedded-server \
     --enable-local-infile
    
     make &amp;&amp; make install
     groupadd mysql
     useradd -g mysql mysql
     cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf /usr/local/mysql/bin/mysql_install_db --user=mysql
     chown -R mysql /usr/local/mysql/var
     chgrp -R mysql /usr/local/mysql/.
     cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
     chmod 755 /etc/init.d/mysql
     echo "/usr/local/mysql/lib/mysql" &gt;&gt; /etc/ld.so.conf
     echo "/usr/local/lib" &gt;&gt;/etc/ld.so.conf
     ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
     ln -s /usr/local/mysql/include/mysql /usr/include/mysql
     ldconfig
    

    安装完成后,修改/etc/my.cnf文件.用#注释掉skip-networking,开启TCP监听.

     #skip-networking
    

    并在之后插入下面这行,只在本机监听:

     bind-address=127.0.0.1
    
  3. 安装PHP

    centos没有现成的libiconv包,所以在编译PHP之前要手动编译下libiconv. 要用最新的1.13.1才行,1.13我这里编译后PHP死活找不到.

     wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
     tar -zxvf libiconv-1.13.1.tar.gz
     cd libiconv-1.13.1
     ./configure --prefix=/usr/local/libiconv
     make
     make install
    

    从http://php.net上下载php-5.3.2.tar.gz 现在可以编译PHP子,有一个老长老长的编译参数:

     tar vzxf php-5.3.2.tar.gz
     cd php-5.3.2.tar.gz
     ./configure \
     --with-apxs2=/usr/local/apache2/bin/apxs \
     --with-mysql \
     --with-mysqli=/usr/local/mysql/bin/mysql_config \
     --with-iconv=/usr/local/libiconv \
     --with-freetype-dir \
     --with-jpeg-dir \
     --with-png-dir \
     --with-zlib \
     --with-libxml-dir=/usr \
     --enable-xml \
     --disable-rpath  \
     --enable-magic-quotes \
     --enable-safe-mode \
     --enable-bcmath \
     --enable-shmop \
     --enable-sysvsem \
     --enable-inline-optimization \
     --with-curl \
     --with-curlwrappers \
     --enable-mbregex \
     --enable-mbstring \
     --with-mcrypt \
     --enable-ftp \
     --with-gd \
     --enable-gd-native-ttf \
     --with-openssl \
     --with-mhash \
     --enable-pcntl \
     --enable-sockets \
     --with-xmlrpc \
     --enable-zip \
     --enable-soap \
     --without-pear \
     --with-gettext
     make
     make install
    

    安装后php说是会自动修改/usr/local/apache/conf/httpd.conf文件,检查了下,发现

     LoadModule php5_module        modules/libphp5.so
    

    会被自动加入,但还是要手工添加

     AddType application/x-httpd-php .php
    

    把这行放到任意一个AddType行之后就行.

    再次修改apache的配置文件/usr/local/apache/conf/httpd.conf,去掉所有不必要模块(用#注释掉相应的LoadModule行),只保留下面几个:

     LoadModule log_config_module modules/mod_log_config.so
     LoadModule mime_module modules/mod_mime.so
     LoadModule dir_module modules/mod_dir.so
     LoadModule rewrite_module modules/mod_rewrite.so
     LoadModule php5_module        modules/libphp5.so
    

    查找

     <IfModule dir_module>
         DirectoryIndex index.php index.html index.htm
     </IfModule>
    

    加入index.php作为默认页面. 用#注释所有以Order用Deny开头的行:

     #Order deny,allow
     #Deny from all
    

    查找

     #Include conf/extra/httpd-mpm.conf
    

    去掉前面的#,并修改httpd-mpm.conf,考虑到现在来我这的客人会比较少,数字填写小点,省点内存.要想过好日子,能省点就省点吧...

     <IfModule mpm_prefork_module>
         StartServers          3
         MinSpareServers       3
         MaxSpareServers       5
         MaxClients            50
         MaxRequestsPerChild   500
     </IfModule>
    

    其中MaxRequestsPerChild默认值为0.最好改为非0值,500,1000都可.这样一个apache子进程在做完500个份内工作后,会光荣退休,换新鲜血液上来,防止他一直霸占工作岗位.

  4. 启动mysql及apache

    麻烦的东西都安装好了,现在可以启动mysql和apache了.

     /etc/init.d/mysql start
     /usr/local/apache2/bin/apachectl start
    
  5. 安装wordpress3 从http://wordpress.org下载最新版本的wordpress,我下载的是3.0

     wget http://wordpress.org/latest.tar.gz
     tar vzxf latest.tar.gz
     mv wordpress/* /usr/local/apache2/htdocs
    

    这样就把wp3放到apache默认网站的根目录了

    安装wp3前,要先安装phpmyadmin,用来操作mysql数据库.yum install phpmyadmin 或者直接官网下载解开就好.放在htdocs/db下. 默认mysql root口令为空,如果是新版本的phpmyadmin,要修改一下其配置文件config.inc.php,才能正常login.

     $cfg['Servers'][$i]['AllowNoPassword'] = true;
    

    默认为false,改为true就好.没有这行就不用管.

    先在firefox打开 http://站点ip或域名/db ,首先修改root口令,然后在mysql里单独建立一个新用户如wp及新库如wp,并将库wp的所有权限授予新用户wp.完成后刷新下权限表.

    再打开 http://站点ip或域名 就可以正常安装wordpress了,数据库地址填写localhost 或127.0.0.1,最好mysql新用户wp对应的host字段也是localhost.

  6. 可能存在的问题 安装程序如果提示配置文件wp-config.php无法创建,大部分原因是因为htdocs目录的权限问题. 先查找用户名

     cat /usr/local/apache2/conf/httpd.conf | grep -1 Group
     #
     # User/Group: The name (or #number) of the user/group to run httpd as.
     # It is usually good practice to create a dedicated user and group for
     --
     User daemon
     Group daemon
    

    可见apache是以daemon的身份运行的,更改用户并查看结果

     chown -R daemon.daemon /usr/local/apache2/htdocs
     ls -ld /usr/local/apache2/htdocs/
     drwxr-xr-x 6 daemon daemon 4096 Jul 15 22:33 /usr/local/apache2/htdocs/
    

再运行wordpress安装程序就能自动建立配置文件了.以后也不会出现wordpress安装插件或升级时,要输入连接信息的错误.

到这里安装就差不多完成了.接下来就是配置插件等内容了.有空再慢慢写.

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!