如何使用Apache的非默认端口部署Wordpress

用的是Apache 2.2 / Linux Mint13 / wordpress 3.4.1.

网上的解决办法都说只要在文件/etc/apache2/ports.conf中添加如下行:

NameVirtualHost *:1234

Listen 1234

然后在目录/etc/apache2/sites-available为wordpress站点新建一个virtual host:

<VirtualHost *:1234>
    ServerName wordpress.com
    ServerAdmin [email protected]

    DocumentRoot /home/tristan/workspace/wordpress
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/tristan/workspace/wordpress/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

然后把wordpress.com名称解析添加到/etc/hosts文件中,

127.0.0.1 wordpress.com

这样当域名解析时会直接把wordpress.com解析为127.0.0.1,而不是公网上的那个真正的wordpress官网的IP地址。

我试了以后在浏览器中输入http://wordpress.com:1234,仍然收到301 (permanent removed)错误代码,然后直接跳转到apache服务器的默认index页面。

这个需要打开浏览器的脚本debugger,然后检测请求发送与响应。

然后,我用netstat检测端口有没有打开,发现端口已经打开了。

然后我又用telnet尝试连接http://wordpress.com:1234,

telnet http://wordpress.com 1234

GET / HTTP/1.0

(注意,输完后要按两次回车)

可以得到响应。

开始一直以为apache2没配对,看了那个官方文档,英文的,中文的都看了,没发现有啥不对劲。后来又怀疑端口是不是有问题,换了其他端口,也没发现问题。

在网上找了半天,终于发现是wordpress的配置8对。天杀的,网上的那些答案太抽象了。

原来要再wp-config.php文件中修改两个变量的值:

  1. define('WP_SITEURL''http://wordpress.com:1234');  
  2. define('WP_HOME''http://wordpress.com:1234');  
这两个全局变量需要比较新的wordpress,应该版本大于2.2哈。如果不是的话,那就直接修改数据库中表wp_options。
  1. update wp_options set option_value=N'http://wordpress.com:1234' where option_name='siteurl';  
  2. update wp_options set option_value=N'http://wordpress.com:1234' where option_name='home';  

如何使用Apache的非默认端口部署Wordpress

相关推荐