如何使用Apache的非默认端口部署Wordpress
网上的解决办法都说只要在文件/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文件中修改两个变量的值:
- define('WP_SITEURL', 'http://wordpress.com:1234');
- define('WP_HOME', 'http://wordpress.com:1234');
- update wp_options set option_value=N'http://wordpress.com:1234' where option_name='siteurl';
- update wp_options set option_value=N'http://wordpress.com:1234' where option_name='home';