大家好,又见面了,我是你们的朋友全栈君。
最近在做毕业论文,需要用到Linux(Fedora)下的postgreSQL+Drupal构建。就这么边学边做,碰到许多小问题,折腾了好几天,终于把网站架起来。
一些问题的解决办法:
1、用yum安装postgreSQL算是简单的,但是按某教程装好后直接运行service postgresql start总是不成功。后来查其他资料,发现在第一次start之前需要执行service postgresql initdb初始化数据库。网上不正确的教程害死人啊。
2、Drupal下载后解压,我是mv到网站目录下的,文件权限保留,造成了SELinux下的许多麻烦。有资料说cp到网站目录下会继承网站目录属性,较为容易配置SELinux。调整参见http://www.cnblogs.com/hiloves/archive/2011/08/25/2152895.html的8、配置SELinux。
可能由于我安装时是mv的,在“10、更改Drupal文件权限”时总不正常——明明文件的权限正确,但是安装时总提示权限不对,SELinux也配置不对。一气之下把SELinux暂时禁了,安装时正常通过权限检查。安装完成后记得恢复SELinux,恢复Drupal文件权限即可。
3、最纠结的是安装时的“设置数据库”步骤。
一开始甚至没有出现postgreSQL选项,在安装“php-pgsql”扩展后解决。
然后就是始终无法连接postgreSQL数据库——不但php无法连接,pgadmin无法连接,连命令行都无法连接。纠结了几天,查了无数资料之后,发现默认的ident认证和pg_ident.conf文件有关,但是pg_ident.conf文件里面全是注释,竟然没有实质内容!想起来认证失败的提示信息也是“psql: 致命错误: 用户 “username” Ident 认证失败”,看来是这个ident认证不知什么原因失效了。就把pg_hba.conf文件里面的ident认证全部改成md5认证,即
# TYPE DATABASE USER CIDR-ADDRESS METHOD
"local" is for Unix domain socket connections only
local all all ident
IPv4 local connections:
host all all 127.0.0.1/32 ident
IPv6 local connections:
host all all ::1/128 ident
host drupaldb drupal 127.0.0.1/32 md5
改成
# TYPE DATABASE USER CIDR-ADDRESS METHOD
"local" is for Unix domain socket connections only
local all all md5 #ident
IPv4 local connections:
host all all 127.0.0.1/32 md5 #ident
IPv6 local connections:
host all all ::1/128 md5 #ident
host drupaldb drupal 127.0.0.1/32 md5
成功在命令行、pgadmin里面登陆,安装也正常!
主要参考资料:
http://www.cnblogs.com/hiloves/archive/2011/08/25/2152895.html
http://zhupou.cn/book/export/html/89
http://blog.csdn.net/dyx1024/article/details/6912530
http://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html
http://www.54xue.com/man/PostgreSQL8.2.3/auth-pg-hba-conf.html
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162285.html原文链接:https://javaforall.cn