您的位置:首页 > 其它

magento -- 建立符合magento运行的LAMP服务器环境

2009-08-13 13:31 239 查看
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,创建目录来保存源代码

cd /usr/local/
mkdir src
cd src


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命令输出类似下面

ls -al
-rw-r--r--  1 root        root   6678149 Aug  5 06:03 httpd-2.2.12.tar.gz
-rw-r--r--  1 root        root  11597944 Aug  5 20:32 php-5.2.10.tar.gz
tar -xvzf httpd-2.2.12.tar.gz
ls -al
drwxr-xr-x 11  root        root  4096 Jul 20 16:24 httpd-2.2.12
-rw-r--r--  1 root        root   6678149 Aug  5 06:03 httpd-2.2.12.tar.gz
-rw-r--r--  1 root        root  11597944 Aug  5 20:32 php-5.2.10.tar.gz
cd  httpd-2.2.12
../httpd-2.2.12/configure /
--enable-rewrite /
--enable-cache /
--enable-mem-cache /
--enable-so /
--enable-mods-shared=all


这个命令将编译apache,并将所有的模块以动态链接的方式编译,这样是为了有最大的灵活性,事后若需要哪个模块,只需要修改下配置文件就可以,而无需再重新编译。当然静态编译可能性能会好一点,如果你对此比较在意可以,修改成静态的。

另外,我直接启用了cache,mem-cache模块,是想获得好一点的性能,你可以在安装后调整相关的的配置指令。

还有,最好是新建一个目录,然后在这个空目录中编译,如:

cd /usr/local/
mkdir apache2
cd apache2


然后执行

"../httpd-2.2.12/configure" /
"--enable-rewrite" /
"--enable-cache" /
"--enable-mem-cache" /
"--enable-so" /
"--enable-mods-shared=all"


你也可以把上面的这个命令保存在一个文本中以备以后重新编译,事实上当你编译后,编译会在当前目录下生成一个config.nice文件 ,其中就包含了最后一次成功编译的命令。

接着在当前目录继续执行

make
make install
或
make && make install


这样安装完apache2.你可以通过

/usr/local/apache2/bin/httpd -k start

来启动apache服务器,可以通过elinks,lynx来测试是否正常:

elinks http://localhost 或
lynx http://localhost[/code] 
这样就安装完了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的支持。

在这个编译过程中,根据不同的安装环境有可能会碰到下面这些问题:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: