magento去年被sourceforge 评为最优秀的新开源项目(Best New Open Source Project ),尽管Varien因为种种原因,口碑不是很好,但是他们确实不是吹,magento无论从哪个方面来讲都是比较优秀出色的,只要客户能想到的功能基本上都具备了,没有的功能也可以通常开发新的模块无缝集成到magento中,灵活开放是其一大特点。但是magento为了给用户,给开发人员以最大的灵活性,垂牺牲了性能,这是一大瓶颈。然而其企业级的功能和界面让越来越多的人加入了使用它的队伍中,要想获得较好的使用效果,我们要从服务器环境配置就开始专门对magento做优化。不过相对于大多数的人来说,首先是如何才能建立起一个能够运行magento的环境。
在开如服务器架设之前,要了解magento安装运行的系统需求,这个在magento官方网站上有一篇文章 -- magento系统需求 ,这里面已经说的很清楚,只是有几点需要特别指出:
第一,magento要求php5.2以上版本,但是即使是magento最新版的1.3.2.3也不能在php5.3上运行。
第二,mysql要支付innodb存储引擎,否则可能magento不能安装,或即使可以运行也会有问题,这和magento版本有关
第三,magento可以运行在window平台上,如果你使用wamp,xamp那应该是没问题的。不过个人认为最好不想让它跑在iis加php的环境下
第四,官方还提供了一个脚本以帮助你测试你的服务回是否满足magento的要求,不过不能依赖于些脚本的判断
第五,官方的"magento系统需求“并末说明所有细节要求,也有可能你用脚本测试服务回符合安装magento的条件,却还会有问题,这个在后面我会提到
我选择centos linux操作系统来架设,并自己编译apache和php,mysql的安装使用yum安装预编译好的软件包:
1,创建目录来保存源代码
2,使用wget或elinks直接在服务器上下载apache,php的源代码
从www.apache.org网站下载apache httpd-2.2.12.tar.gz
从www.php.net网站下载php的 php-5.2.10.tar.gz
从www.phpmyadmin.net网站下载phpmyadmin phpMyAdmin-3.2.0.1-all-languages.tar.bz2
3,安装顺序,先安装apache,mysql再安装php
在当前目录,假设你已经在/usr/local/src目录下,并且已经下载了apache和php,ls -al命令输出类似下面
这个命令将编译apache,并将所有的模块以动态链接的方式编译,这样是为了有最大的灵活性,事后若需要哪个模块,只需要修改下配置文件就可以,而无需再重新编译。当然静态编译可能性能会好一点,如果你对此比较在意可以,修改成静态的。
另外,我直接启用了cache,mem-cache模块,是想获得好一点的性能,你可以在安装后调整相关的的配置指令。
还有,最好是新建一个目录,然后在这个空目录中编译,如:
然后执行
你也可以把上面的这个命令保存在一个文本中以备以后重新编译,事实上当你编译后,编译会在当前目录下生成一个config.nice文件 ,其中就包含了最后一次成功编译的命令。
接着在当前目录继续执行
这样安装完apache2.你可以通过
/usr/local/apache2/bin/httpd -k start
来启动apache服务器,可以通过elinks,lynx来测试是否正常:
这样就安装完了apache,你迈出了使用magento的第一步。
安装mysql
这边不是编译安装,而是直接使用yum安装预编译好的软件包。之所以这样,是因为编译mysql所花的时间比较长,而实际意义却并不是太大,个人观点,因为预编译好的已经符合我们的需求,而且magento对mysql的要求不是太严格,只要支持innodb存储引擎就可以了。
yum install mysql mysql-devel
这样mysql就被安装为一个service,你可以通过
chkconfig --list
查看,可以通过下列命令来设置mysql服务在系统启动时自动执行
chkconfig --levels 345 mysqld on
现在你可以重启系统或才通过下列命令来启动mysql:
/etc/init.d/mysqld start
或
service mysqld start
之后可以通过mysql客户端测试,刚安装完mysql管理员root账户没设置密码
mysql -u root
centos 下编译安装php
编译安装php,首先要了解magento对php的要求,版本的选择不要认为最新版的最好,因为到目前为止magento都还不支持php5.3版本,另外就是要编译magento所需要的各个php扩展模块。
tar -xvzf php-5.2.10.tar.gz
同样,创建一个新的目录,而不要直接在源码目录中编译
cd /usr/local/src/
mkdir php5
cd php5
../php-5.2.10/configure /
--prefix=/usr/local/php /
--with-apxs2=/usr/local/apache2/bin/apxs /
--with-mysql=/usr/bin/mysql /
--with-curl /
--with-gd /
--with-jpeg-dir=/usr/local/jpeg6/ /
--with-png-dir=/usr/local/lib/ /
--with-zlib-dir=/usr/local/lib/ /
--with-iconv /
--with-mhash=shared /
--with-mcrypt /
--with-zlib=shared /
--enable-pdo /
--with-pdo-mysql /
--with-sqlite=shared /
--with-pdo-sqlite=shared /
--enable-ftp /
--enable-bcmath /
--enable-sockets /
--enable-soap /
其中,
--with-gd /
--with-jpeg-dir=/usr/local/jpeg6/ /
--with-png-dir=/usr/local/lib/ /
--with-zlib-dir=/usr/local/lib/ /
这几个选项我认为是必须的,而在magento官方网站上的说明去只是提到gd的安装,事实上,如果没有了--with-jpeg-dir,--with-png-dir这两个选项,magento的安装程序是能够正常的进行的,用magento测试脚本进行测试,它也会显示服务器环境满足magento需求,然而,在安装完后正常使用的时候问题来了,magento前台不能够显示产品图片。所以,在碰到magento网站无法显示产品图片时,这个要作为一个可能的原因来考虑。
--enable-soap /
这个选项只在你需要使用magento web service api时启用。
--with-mhash=shared /
这个选项是我添加的,不是必须的。它并不是magento系统要求中提到的hash,php现在的版本已经默认包含了对hash的支持。
在这个编译过程中,根据不同的安装环境有可能会碰到下面这些问题: