AWS中国ubuntu实例搭建wordpress遇到的问题分享:端口、更换IP\域名、路径\地址

来源:互联网 发布:怎么用python做计算 编辑:程序博客网 时间:2024/06/05 01:53

    我们在亚马逊云(中国区)上部署了wordpress用做门户网站,当时选择的EC2实例是ubuntu,搭建wordpress的过程参照了网友的“豆博草堂”的分享:http://idocbox.com/%E5%9C%A8amazon-ec2%E6%90%AD%E5%BB%BAwordpress%E5%8D%9A%E5%AE%A2/

    当把apache安装并启动后发现无法访问,“豆博草堂”的帖子中这样写的:

然后在我们本地电脑浏览器上输入 http://<你的pulic-dnc>, 像这个http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com, 如果看到 “It works!”, 说明网站已经可以对外访问了。

就这一步卡住了,无论怎么折腾就是无法通过浏览器访问,而通过telnet工具登陆到ubuntu上输入命令curl http://localhost/都可以正常输出HTML内容,百思不得其解啊!

后来联系AWS技术人员,才知道中国大陆地区的域名和主机都要备案的,上述地址默认使用80端口,这个80端口没有备案所以无法直接访问。临时解决方案是换一个端口如1973,最终我们的wordpress地址为:http://ec2-xx-xx-xx-xx.cn-north-1.compute.amazonaws.com.cn:1973/wordpress 

具体配置如下

更换端口的配置:

打开/etc/apache2/ports.conf文件,修改配置Listen 1973

注意:别忘了在安全组中配置这个新端口!

配置域名/IP以及访问路径:

打开/etc/apache2/sites-available/000-default.conf,加上如下配置

<VirtualHost ec2-xx-xx-xx-xx.cn-north-1.compute.amazonaws.com.cn>
ServerAdmin ubuntu@ec2-xx-xx-xx-xx.cn-north-1.compute.amazonaws.com.cn
DocumentRoot /var/www
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>



好,接下来就要分享我们更换IP\域名、路径\地址时遇到的问题及解决方案了,先说更新IP\域名遇到的问题:

我们想对上述wordpress访问地址进行域名绑定,先尝试一下AWS的弹性IP,在此过程中我们重启了EC2实例,重启后发现该实例的公有DNS和公有IP都变了!(后来才知道每次重启都会变,这才体现弹性IP的价值嘛!),这下就出问题了,上面提到的wordpress地址无法访问了!赶紧登陆到EC2 上去改/etc/apache2/sites-available/000-default.conf,把之前新增的<VirtualHost></VirtualHost>中的配置改一下, 把里面的DNS地址全部替换为新地址,改完重启apache,OK!wordpress可以访问了,但是页面上图片加载不出来,排版样式全部失效,链接无法访问,控制台无法登陆,总之一堆问题,惨不忍睹。

    上网搜了一些资料,找到了思路:wordpress很多内容是配置在数据库中的,数据库中的数据可能写死了地址,要改!把wordpress对应的database下的表都检查一下,里面的的数据中如果有写死地址的都要替换一下,这里有一个技巧:phpadmin有搜索功能,如下图



搜索结果如下


通过上图可以看到在一些表中查到了数据,点击右侧的Browse连接查看具体数据:


当时更新了下面的表中的数据,替换了原先的公有DNS地址,相关SQL如下:

update wp_options a set a.option_value =replace(a.option_value,'ec2-XX-XX-XX-XX','ec2-YY-YY-YY-YY')  where a.option_value like '%ec2-XX-XX-XX-XX.cn-north-1.compute.amazonaws.com.cn%';
update wp_posts a set a.guid =replace(a.guid,'ec2-XX-XX-XX-XX','ec2-YY-YY-YY-YY')  where a.guid like '%ec2-XX-XX-XX-XX.cn-north-1.compute.amazonaws.com.cn%';

......

更新完后重启apache:sudo /etc/init.d/apache2 restart ,服务回复正常。

好,今天先写到这里,下次再分享更换路径\地址遇到的问题吧。

-----------------------------------------------------------------------------------------华丽的分割线--------------------------------------------------------------------------------------------------

继续发,boss要求将URL地址中的wordpress给去掉,不能让人一眼就看出来咱网站用啥做的。原先的URL地址是http://域名:1973/wordpress (不要笑这个端口,我们ICP备案还在进行中,所以暂时不能用80端口)  ,此次调整后将变成http://域名:1973 。我欣然接受任务:这有何难,3分钟的事情嘛!具体操作如下:

打开/etc/apache2/sites-available/000-default.conf 将原先的DocumentRoot /var/www 改为 DocumentRoot /var/www/wordpress (我们的wordpress就放在/var/www这个路径下),然后重启apache服务,发现wordpress又出现页面显示不全的问题,还好之前处理过这样的问题,肯定是数据库中存在写死的路径!按照上面的的方法再一次排查、修改数据。在此重启apache,发现wordpress总算正常点了,但是还有有些样式不对!!!

    头大啊!继续排查数据库中是否有写死路径、清理浏览器缓存、重启服务等等,方法用尽了!半天过去了,依然没有解决问题!

    事情不解决以后还怎么混啊,原先答应boss时那么的自信满满,那么有把握,现在这点屁事尽然卡住了,没法交差啊。

   继续分析:既然与数据库、本地缓存无关,那么有没有可能是服务器端缓存呢?把wordpress整个路径都下载到本地,使用totoal commands的强大文件检索功能,查询“wordpress”这个字符串,果然查到一些文件,仔细看了一下这些文件的名字及所在路径,发现一个名字多次出现,它就是“Minify",这是什么鬼?登录wordpress控制台去看看,在插件一栏中果然看到一款名叫”Better WordPress Minify“的插件,真凶找到了!!!就是它生成的缓存文件!把它禁用后wordpress恢复正常!至此,问题彻底解决。


后记:Better WordPress Minify 这款插件还是挺不错的,把它禁用一下,过一段时间再启用就行了。


1 0