作者:高张远瞩(HiLoveS)
博客:http://www.cnblogs.com/hiloves/
转载请保留该信息
本文将描述如何在Linux上一步一步安装运行Drupal 7所需的软件、模块及数据库,如果嫌麻烦你也可以直接安装XAMPP,但你也错过了安装过程的一些要点。
注:为方便初学者,以下安装方式没有特别说明均采用图形化的安装方式且直接安装二进制软件包,运行“系统”-“管理”-“添加删除软件”(gpk-application),如果你的水平比较高完全可以参照安装步骤使用命令安装或编译安装。各软件的配置涉及过广,本人水平有限只涉及能正确运行Drupal的最基本配置,高水平用户可以根据自身需求更改配置。
1、安装Linux
这里选用CentOS 6,一款基于RHEL 6源代码重新编译的Linux,可以看作是RHEL的替代品。它的安装还算简单,安装时选中“桌面”包以便以下步骤以图形化安装,如是要展开讲的话又涉及服务器领域,篇幅过长,初学者请自行搜索。
2、安装Apache 2、PHP 5、postgreSQL 9
①、安装Apache 2
查找“httpd”,安装自动选中的项。
②、安装PHP 5
查找“php”,安装自动选中的项。
③、安装PostgreSQL 9
这里采用PostgreSQL数据库,而没有采用常见的MySQL数据库。PostgreSQL相对MySQL更适合企业,具有MySQL不具有的企业特性。我的网站主要是面向内部企业用户,如果建立面向互联网的网站,使用MySQL足矣。
CentOS中的默认的软件源包含的PostgreSQL版本是8.4,安装最新的9.0必须先从PostgreSQL官网下载一个Yum Repository(http://yum.pgrpms.org/reporpms/repoview/letter_p.group.html),选择适合CentOS的pgdg_centos(http://yum.pgrpms.org/reporpms/repoview/pgdg-centos.html),下载最新的PostgreSQL 9.0稳定版的Yum Repository(pgdg-centos-9.0-2.noarch,http://yum.pgrpms.org/reporpms/9.0/pgdg-centos-9.0-2.noarch.rpm),直接安装后就可以在“添加删除软件”中找到最新的9.0,本文编写时最新的稳定版本是9.0.4,找到“postgresql90-server-9.0.4-1PGDG.rhel6”安装,会提示同时安装以下软件,确定。
3、配置httpd.conf
现在的图形化安装方式相当傻瓜,配置文件均采用模块化配置,/etc/httpd/conf.d/目录下面的*.conf文件都会被httpd.conf文件include,PHP安装完成后会自动在该目录下新建php.conf配置文件以便Apache支持,所以如果drupal源代码放在默认站点目录下,都不需要更改httpd.conf文件。这里直接采用默认的/var/www/html/目录做为站点。
php.conf的内容也就是网上流传的修改httpd.conf文件以支持PHP的内容,无非就是
LoadModule php5_module
AddType text/html .php
等等内容。
4、安装PHP扩展模块
上面安装的PHP只具有基本模块,Drupal还需要一些额外模块。
①、安装PHP dom扩展
查找“php-xml”安装。
②、安装PHP gd扩展
查找“php-gd”安装。
③、安装PHP pdo扩展
查找“php-pdo”安装。
④、安装PHP mbstring扩展
该扩展并非强制性的,可以加强Unicode支持,Drupal建议安装,查找“php-mbstring”安装。
⑤、安装PHP postgreSQL数据库支持扩展
本文采用PostgreSQL数据库,必须安装本扩展,否则Drupal仅支持SQLite3数据库,查找“php-pgsql”安装。MySQL数据库查找“php-mysql”。
⑥、安装PECL uploadprogress扩展
该扩展并非强制性的,本扩展是上传进度条扩展,能显示文件上传速度、完成情况。APC也支持上传进度条,但Drupal推荐安装uploadprogress。
软件源中没有提供二进制包,需要编译。首先在“添加删除软件”中查找安装“php-devel”软件包,该软件包包含编译PHP扩展的phpize软件。第二步,下载傻瓜化的PHP扩展安装编译软件:go-pear。
# wget http://pear.php.net/go-pear.phar (原来的go-pear不支持PHP 5.3)
# php go-pear.phar (确认,进行安装)
# pecl install uploadprogress
uploadprogress.so会自动安装到/usr/lib(64)/php/modules/下。
最后在/etc/php.d/下新建uploadprogress.ini文件,内容为:
extension=uploadprogress.so
同3,/etc/php.d/下的配置文件会自动被php.ini包含,不需直接修改/etc/php.ini文件。
5、安装PGAdmin3管理工具
本步骤可选,PGAdmin3是PostgreSQL的图形化管理工具,可以轻松管理数据库和pg_hba.conf、postgresql.conf等文件。
①、安装wxGTK库
PGAdmin3采用wxWidgets作GUI,wxWidgets在Linux下必须依赖GTK+库,需要安装wxGTK库。软件源中没有提供二进制包,可以从官网下载源代码自行编译,这里采用第二种方法:在http://rpm.pbone.net/上搜索“wxgtk”下载编译好的rpm包安装。没有找到适合CentOS 6或RHEL 6的wxGTK,只找到适合RHEL 5的wxGTK,而且版本比官网源代码要旧一点,安装后发现CentOS 6上也能用。http://rpm.pbone.net/index.php3/stat/4/idpl/16385013/dir/redhat_el_5/com/wxGTK-2.8.9-1.el5.rf.x86_64.rpm.html(64位版)
②、安装PGAdmin3
查找“pgadmin3”安装第一项。只有安装PostgreSQL官网提供的Yum Repository后才能找到PGAdmin3。
6、初始化、配置数据库
①、初始化数据库
# service postgresql-9.0 initdb
②、新建数据库用户和数据库
# service postgresql-9.0 start
# su postgres (postgres操作系统用户是PostgreSQL在安装时自动创建的用户,仅用于管理数据库)
$ createuser --pwprompt --encrypted --no-adduser --no-createdb drupal (新建名为drupal的数据库用户,本用户给Drupal使用)
$ (提示输入drupal用户口令)
$ createdb --encoding=UNICODE --owner=drupal drupaldb (新建名为drupaldb的库,作为Drupal的数据库,拥有者为drupal)
③、修改客户端认证配置文件
pg_hba.conf是PostgreSQL的客户端认证配置文件,阻止或认证客户端由其内容决定。pg_hba.conf的用法详见《PostgreSQL pg_hba.conf 文件简析》。
添加内容:
host drupaldb drupal 127.0.0.1/32 md5
让Drupal在本地可以使用drupal用户连接到drupaldb数据库,这里只希望本地连接数据库,不希望其他用户通过网络连接数据库,所以注释掉其他以host开头的行。
修改完后让数据库重新读取该配置,不需重启:
$ /usr/pgsql-9.0/bin/pg_ctl reload -D /var/lib/pgsql/9.0/data/
7、启动服务
按照CentOS 6桌面包默认安装,Apache应该没有启动,要设置Apache和PostgreSQL开机时能自行启动。
# chkconfig httpd on
# chkconfig postgresql-9.0 on
# chkconfig --list (看看上述两个服务在level 2、3、4、5是否是启动)
# service httpd start
# service postgresql-9.0 start (PostgreSQL在第6步时已经启动,如果没有要启动)
# service httpd restart (如果Apache在PHP和扩展安装前启动了,在PHP和扩展安装后需要重启动)
8、配置SELinux
SELinux是Linux上的强制访问控制安全模块,因为配置复杂、学习难度大,许多网友建议关闭它,我认为它是系统被攻破后的最后一道防线,建议大家迎难而上学会它,不建议关闭。
在后面Drupal安装数据库时会出现“数据库连接失败,SQLSTATE[08006][7]”错误,这不是因为数据库没有启动,而是SELinux会阻止httpd进程连接PostgreSQL的监听端口,也就是TCP 5432端口(PostgreSQL默认端口),我们不需要关闭SELinux,只需要打开一个小选项即可,允许httpd进程连接数据库端口。
# setsebool httpd_can_network_connect_db on
SELinux也可能会阻止httpd进程读取修改Drupal文件,这种问题发生在Drupal文件不在Apache的默认站点目录的情况下,常发生在自己定制Apache的情况下,另一种发生在用mv而不是用cp移动Drupal目录的情况下,mv移动文件将会保持文件目录的原权限和原SELinux类型不变,而cp复制文件会使复制后的文件目录继承目标目录的权限和SELinux类型。必须设置Drupal目录的SELinux类型为httpd_sys_content_t以便httpd进程能正常读取和修改:
# chcon -R -t httpd_sys_content_t drupal
9、下载Drupal和中文语言包
①、下载Drupal
以上全是准备工作,下面才真正进入安装Drupal的过程。
在http://drupal.org/download下载Drupal Core和Translations Chinese,Simplified,本文是7.7版本。
②、拷贝语言包
将Drupal 7.7解压到本地,重命名目录为drupal。
拷贝中文语言包到drupal目录中
# cp drupal-7.7.zh-hans.po drupal/profiles/standard/translations/
③、将Drupal拷贝到站点目录下
# cp -r drupal /var/www/html/
这里采用默认站点目录。
10、更改Drupal文件权限
安装时Drupal需要新建和修改文件,需要相应写权限。
# cd /var/www/html/drupal/sites
# chmod o+w default
# cd default
# cp default.settings.php settings.php (复制配置模板文件)
# chmod o+w settings.php
11、安装Drupal
在本地打开浏览器,输入http://localhost/drupal,进行安装。
①、选择“standard”
②、选择中文
③、选择PostgreSQL,数据库名称drupaldb,用户名drupal,密码输入上面创建drupal用户时的密码
④、安装过程
⑤、设置网站,输入你想要的内容
⑥、安装完成,点击“访问你的新网站”进入网站
⑦、上述扩展和准备工作做完后看不到“确认安装条件”的网页,这一页会自动通过,如果出现本页请看一下提示哪项disabled。
12、最后一步,去掉写权限,完成
# chmod o-w settings.php
# chmod o-w ../default