? 公司一个做产品的同事最近给了我一个东东,说是让我把它放到Linux上跑起来...最初以为仅仅是个简单的静态页面直接用nginx就完事了,结果没想到打开一看里面全是.php文件,心想这哥们真真是完全不懂技术啊,感觉要比我预想的复杂些,更何况php我以前也只是听闻完全没有接触过啊...但是没办法为了给公司省钱同时自个也想挑战下新鲜玩意就试着搭建一下玩玩。查阅过很多资料基本明白要怎么弄之后用了一下午加俩小时完美的搞定,其间遇到了不少坑,一个个的解决之后那种成就感对一个程序员来说那滋味我想作为同行大家都应该能体会吧。昨晚回家已经不早了,正好睡一觉捋捋思路,把最正确最简洁的步骤记录并分享出来,希望有需要的朋友能够因此受益...好啦,废话不多说,下面开始一步步介绍搭建及运行步骤(关键步骤及需要注意的地方我会标红)。
?
此次搭建我用到的环境及软件版本为:CentOS release 6.3 (Final) + httpd-2.2.31 + PHP 5.4.45 + mysql 5.5.53
?
1.通过ftp从本地上传httpd-2.2.31.tar.gz至Linux服务器,并通过下面的步骤进行apache的安装
??
class="Linux" name="code">1) 解压httpd-2.2.31.tar.gz tar -zxf httpd-2.2.31.tar.gz 2) 切换至httpd-2.2.31目录 cd httpd-2.2.31 3) 编译(将apache安装至/usr/local/apache2目录下) ./configure --prefix=/usr/local/apache2 4) 安装 make make install 5) 进入到apache的安装目录并用vi编辑配置文件httpd.conf cd /usr/local/apache2/conf vi httpd.conf 搜索ServerName,将其注释打开并编辑www.example.com为localhost 6) 保存并退出切换至bin目录,启动http服务 cd ../bin/ ./apachectl start 7) 打开浏览器输入ip地址访问,出现It works!,至此apache安装完成;
??
2.通过以下命令安装PHP服务(因为我们的服务器是花钱买的,因此自带了yum,建议可以的话还是用yum装,如此它会自动将所需的依赖给安装上)
?
yum -y install php php-fpm --enablerepo=remi?
?
安装完成后可以通过php -v命令来查看所安装的php版本
?
注意:
1) --enablerepo=remi这个很关键,我的理解它会自动匹配依赖包所需的版本并对已有的版本进行更新而不是直接报冲突错误,这个屡试不爽);
2) php-fpm 这个的安装也是必须的,如果修改了php.ini配置文件,需要重启php-fpm方可生效;
?
3.安装mysql服务,需要注意的是安装前需要先将mysql相关的东东都清除干净,具体步骤可参考我的另一篇博客“Linux下Mysql 5.7的安装及远程连接配置”
??
yum -y install mysql-server mysql mysql-devel --enablerepo=remi (这里msyql-server容易被落下)
以下是yum命令常见的一些操作(仅供参考充电): yum list installed | grep mysql(查看已经安装的mysql) yum -y remove mysql-libs.x86_64(根据查看的结果卸载某个已有的软件) yum list | grep mysql 或 yum -y list mysql*(查看yum库中某些指定的软件列表)
?
4.现在需要的软件均已安装完毕,但是目前apache,php,mysql三者之间是相互独立的,首先apache作为应用服务器要运行php项目,必须开启php支持。那么接下来就需要编辑apache的配置文件httpd.conf,具体需要修改的地方如下:
?
1) 添加php模块(这个是最关键的)
? ? LoadModule php5_module ? ? ? ?/usr/lib64/httpd/modules/libphp5.so
?
2) 在dir_module中添加index.php,
? ? <IfModule dir_module>
? ? ? ? DirectoryIndex index.html index.php
? ? </IfModule>
?
3) 在mime_module中添加php类型
? ? AddType application/x-httpd-php .php
? ? AddType application/x-httpd-php-source .phps
?
4) 写一个测试用php文件验证是否开启php支持成功,根据DocumentRoot配置项的指示,在"/usr/local/apache2/htdocs"下用vi新建一个info.php文件并编辑内容如下:
<?php phpinfo(); ?>
?
5) 重启httpd服务,在浏览器输入http://ip/info.php,如果出现如下图所示,说明php支持开启成功,apache跟php的关联ok
??
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?5.由于接下来要部署运行的项目不仅仅只有php,还有对数据库的操作,因此需要安装PHP的mysql扩展模块支持,具体步骤如下
?
1) yum -y install php-mysql --enablerepo=remi 安装php-mysql模块
?
2) php如果想连接mysql,在编译时就需要用到mysql的头文件以及库文件(注意:正常情况下如果上一步php-mysql通过yum安装成功了,那么就会有mysql.so生成)
? find / -name mysql.h
? find / -name mysql.so?
??
3) 根据查找到的mysql.so库文件所在路径找到并cp至extension_dir目录下,extension_dir在php.ini中有设置
?
4) 修改php.ini,添加extensions = "mysql.so"(注意:这里是extensions复数,如果少了一个s,打死都不知道咋回事,我就被坑啦)
?
5) 重启php-fpm,具体命令(针对php 5.4版本)如下
? ? php-fpm 启动:
? ? /usr/sbin/php-fpm?
? ? php-fpm 关闭:
? ? kill -INT `cat /var/run/php-fpm/php-fpm.pid`(注意:这里php-fpm.pid只有启动过之后才有,第一次未启动之前是没有该文件的)
? ? php-fpm 重启:
? ? kill -USR2 `cat /var/run/php-fpm/php-fpm.pid`
?
? ? 查看php-fpm进程数:
? ? ps aux | grep -c php-fpm
?
6) 重启httpd服务,在浏览器中重新访问info.php,此时全文检索如果能够搜索到mysql关键字,说明php与mysql的关联ok
??
6.至此,基本已经大工告成啦。接下来通过ftp上传ECShop_V2.7.3_UTF8_release1106.zip至Linux服务器,具体操作如下
??
1) unzip ECShop_V2.7.3_UTF8_release1106.zip 2) mkdir -p /usr/local/apache2/htdocs/ecshop/ 3) mv ECShop_V2.7.3_UTF8_release1106/upload/* /usr/local/apache2/htdocs/ecshop/ 4) cd /usr/local/apache2/htdocs/ecshop/ 5) chmod -R 777 data/ temp/ cert/ includes/ images/ themes/
??
?7.重启httpd服务,在浏览器中输入http://ip/ecshop/回车就会出现ecshop的安装配置界面
?
?
8.在安装配置的过程中可能会出现时间相关的报错,此时需要编辑修改php.ini配置,打开注释并设置date.timezone = UTC,重启httpd服务刷新即可。
?
?
9.安装完成后首页会出现令人懵逼的现象"Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\includes\cls_template.php on line 422",据说这个是php版本高的原因所致,解决办法如下:
?
?
找到提示错误的文件 cls_template.php 及行号
?
把 $tag_sel = array_shift(explode(' ', $tag));
?
改成:
$tag_arr = explode(' ', $tag);?
$tag_sel = array_shift($tag_arr);
?
10.完事后登录到管理员后台将所有缓存全部清除,重新刷新前台页面,完美搞定。
?
前台首页:
?
后台首页:
?
以上就是整个搭建部署运行的全过程,虽然总结下来不是很复杂, 但是刚开始涉足的话需要一步步的摸索和研究,对于专注于做开发的我们也许会浪费些许时间,这里我花周六一上午的时间总结记录并分享出来,希望能够帮助到大家。
?