前段时间在公司实习,web系统产品化的过程踩了很多坑,在这边总结一下,由于对linux不是很懂,全是自己一步步一个一个问题解决的

1,查看系统中是否安装apache,php,mysql环境

Apache-2.2.15

Php-5.2.17

Mysql-5.0.67

2,PHP的安装编译

由于thinkPHP5.0要求php版本>=5.4

可以不必卸载平台中的PHP-5.2.17,只需将路径覆盖

安装php5.6.30

将下载好的压缩包通过winSCP移动到/home目录下

# tar zxvf php-5.6.30.tar.gz

# cd php-5.6.30

# ./configure --prefix=/usr/local/php5.6 --with-libxml-dir=/usr/include/libxml2 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql

产生错误

Error:libxml2库查询不到

查看平台安装的libxml2的安装路径

# find  -name ‘*libxml2*’

查找到的文件没有编译文件

下载libxml2-2.7.8.tar.gz的安装包

移动到/home目录下

# tar zxvf libxml2-2.7.8.tar.gz

# cd libxml2-2.7.8

# ./configure

# make

# make install

Libxml2默认安装到.usr/local/include/libxml2目录下

# cd

# cd php-5.6.30

# ./configure --prefix=/usr/local/php5.6  --with-libxml-dir=/usr/include/libxml2  --with-zlib  --with-jpeg-dir  --with-png-dir --with-iconv  --enable-sockets  --without-pdo-sqlite  --with-gmp  --with-openssl  --enable-ftp  --with-pdo-mysql  --enable-wddx --enable-sysvsem  --enable-sysvshm  --enable-sysvmsg  --disable-xmlreader    --disable-xmlwriter  --disable-dom  --with-gd   --without-pear   --with-bz2   --with-curl  --disable-dba   --enable-exif   --with-gettext   --with-kerberos  --with-apxs2=/usr/local/apache2/bin/apxs  --with-pic  --with-mysql=/usr/local/mysql  --with-freetype-dir=/usr/local/lib

# make

# make install

有错误提示:

# /usr/bin/ld: cannot find -lz

# collect2: ld returned 1 exit status

# make: *** [sapi/cli/php] 错误 1

Centos6.7.iso挂载

首先要在虚拟机的编辑设置中CD/DVD驱动器选项中勾选设备状态(已连接)

# mkdir media

# mount -t iso9660 /dev/cdrom / media/

# cd media/Package

里面有需要安装的依赖包

安装所需要的依赖包

# rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm

# rpm -ivh libjpeg-turbo-devel-1.2.1-3.el6_5.x86_6.rpm

# rpm -ivh libpng-devel-1.2.49-1.el6_2.x86_64

# rpm -ivh sqlite-devel-3.6.20-1.el6.x86_64.rpm

# rpm -ivh gmp-devel-4.3.1-7.el6_2.2.x86_64.rpm

# rpm -ivh ftp-0.17-54.el6.x86_64.rpm

# rpm -ivh openssl-devel-1.0.1e-42.el6.x86_64.rpm

# rpm -ivh krb5-devel-1.10.3-42.el6.x86_64.rpm

# rpm -ivh keyutils-libs-devel-1.4-5.el6.x86_64.rpm

# rpm -ivh libcom_err-devel-1.41.12-22.el6.x86_64.rpm

# rpm -ivh libselinux-devel-2.0.94-5.8.el6.x86_64.rpm

# rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm

# rpm -ivh bzip2-devel-1.0.5-7.el6_0.x86_64.rpm

# rpm -ivh libcurl-devel-7.19.7-46.el6.x86_64.rpm

# rpm -ivh libidn-devel-1.18-2.el6.x86_64.rpm

# rpm -ivh freetype-devel-2.3.11-15.el6_6.1.x86_64.rpm

3,检测环境安装

我们先在这个var/web/cu 目录下新建一个文件

test.php

<?php

 $link = mysql_connect('localhost','root','123456');

 if($link){

  echo 'connect success';

 }else{

  echo 'connect error';

 } 

 mysql_close();

 Echo ‘Hello World’;

 phpInfo();

?>

然后访问 192.168.228.29/test.php

页面上输出connect success  Hello World

php mysql环境安装成功

4安装php_screw 加密库

# tar zvxf php_screw-1.5_modify.tar.gz

# cd php_screw-1.5

# phpize

出错:bash:phpize:command not found

ln -s /找到你的phpize所在路径     /usr/bin/phpize
ln -s /找到你的php-config所在路径     /usr/bin/php-config
ln -s /找到你的php所在路径   /usr/bin/php

# phpize

出错,bash:/usr/bin/phpize:权限不够

# cd usr/bin

# chmod a+x phpize

# cd  php_screw-1.5

# phpize

#./configure --with-php-config=/usr/local/php5.6/bin/php-config

# make

出错

/root/php_screw-1.5/php_screw.c: In function                                       ‘zm_startup_php_screw’:/root/php_screw-1.5/php_screw.c:124: error: ‘struct            _zend_compiler_globals’ has no member named ‘extended_info’                      

/root/php_screw-1.5/php_screw.c: In function ‘zm_shutdown_php_screw’:              

/root/php_screw-1.5/php_screw.c:133: error: ‘struct _zend_compiler_globals’ has no     member named ‘extended_info’                                                   

make: *** [php_screw.lo] Error 1   

将  124行,133行 的

CG(extended_info) = 1;

修改为:

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

# make

(在modules中生成.so文件)

# make clean

# cd tools

# make

加密工具生成,但是phpInfo()输出时,没有提示php_screw()--》enable,

编译出错!

5,将web部署到服务器上

查看 httpd.conf的文档

<VirtualHost *:80>

DocumentRoot /var/web/cu

ServerName  *:80

</VirtualHost>

<VirtualHost *:81>

DocumentRoot /var/web/nmu

ServerName  *:81

</VirtualHost>

Web文档都放在var/web目录下

Cu的端口是80

Num的端口是81

所以我们可以把E-NVS的端口设置为82

1,在http.conf文档中添加82端口号

Listen 80

Listen 81

Listen 82

ServerName 127.0.0.1

NameVirtualHost *:80

<VirtualHost *:80>

DocumentRoot /var/web/cu

ServerName  *:80

</VirtualHost>

<VirtualHost *:81>

DocumentRoot /var/web/nmu

ServerName  *:81

</VirtualHost>

<VirtualHost *:82>

DocumentRoot /var/web/e-nvs/trunk/src

ServerName  *:82

</VirtualHost>

<Directory "/var/web/cu">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

2,在var/web下新建目录e-nvs

将项目的代码拷贝进来

3,访问82端口时提示

You don't have permission to access / on this server

修改httpd.conf文件

修改:

<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

</Directory>

为:(允许指向外部的目录进行访问)

<Directory />

Options Indexes FollowSymLinks

AllowOverride None

</Directory>

<Directory />  
    Options Indexes FollowSymLinks ExecCGI 
    AllowOverride None 
</Directory>

重新访问82端口,192.168.228.29:82/public。页面显示正常,点击登录,路径不对,显示404.

查看httpd.conf,发现没有rewrite_module模块,所以需要重新安装编译该模块

重新下载一个对应版本的apache(即httpd-2.2.19)

# tar zvxf httpd-2.2.19.tar.gz

# cd httpd-2.2.19

# ./configure --prefix=/usr/local/apache --enable-deflate=shared --enable-headers=shared --enable-info=shared --enable-rewrite=shared --enable-ssl=shared --enable-so

# make

# find -name mod_rewrite.c  (httpd-2.2.19/modules/mappers)

# /usr/local/apache2/bin/apxs -c mod_rewrite.c

# /usr/local/apache2/bin/apxs -i -a -n mod_rewrite mod_rewrite.la

此时,在apache2/modules/mod_rewrite.so文件存在

在httpd.conf中LoadModule rewrite_module modules/mod_rewrite.so 该条语句也已经出现

重启apache,出错

httpd: Syntax error on line 72 of /usr/local/apache2/conf/httpd.conf: Can't locate API

module structure `mod_rewrite_module' in file

/usr/local/apache2/modules/mod_rewrite.so: /usr/local/apache2/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module

Httpd.conf中找到那行

需要自己手工修改mod_rewrite_module 为 rewrite_module

再重启apache

点击登录按钮时出错

提示:could not find driver

是php.ini的配置问题

重新编译php,在./configure 中添加 --with-pdo-mysql

同时,在php.ini中找到

extension=php_pdo.dll

extension=php_pdo_firebird.dll

extension=php_pdo_mssql.dll

extension=php_pdo_mysql.dll

将这四行前面的;去掉,在phpInfo中看到pdo-mysql已经被编译进去,在php.ini中添加一行

extension=pdo_mysql.so

重新启动apache,又有新的错误

提示: SQLSTATE[HY000] [2002] Connection timed out

将数据库连接修改成 localhost,登录成功

linux中centros6.7安装php5.6,httpd-2.2.19(web产品化)遇到的问题总结的更多相关文章

  1. Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因

    原文:Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因 今天试了下在虚拟机上利用CentOS系统的yum命令安装好了httpd(apache2.4.6), ...

  2. linux中mariadb的安装

    在Linux中mariaDB的安装 MariaDB其实就是MySQL的分支,是为了应对MySQL的即将的闭源风险所产生的. Linux系统中软件包的格式为mysql.rpm格式. 通过yum去安装 L ...

  3. Linux中源码安装编译Vim

    Linux中源码安装编译Vim Linux下学习工作少不了编辑器,Vim能使你的工作效率成倍的提高.在Ubuntu上安装vim使用命令直接安装很简单.但有时还是需要自己手动编译安装.例如: vim中的 ...

  4. 在linux中使用phpize安装php扩展模块

    介绍:linux系统中,php安装成功后,在bin目录下会生成一个名叫phpize的可执行脚本,这个脚本的用途是动态安装php扩展模块.使用phpize脚本安装php扩展模块的好处:在安装php时没有 ...

  5. CentOS 6.4 中yum命令安装php5.2.17

    最近给公司部署服务器的时候发现他们提供的服务器是centos6.4系统的,装好系统和相关服务httpd,mysql,php,一跑代码,发现php5.3中的zend加密不能用,安装Zend Guard ...

  6. linux中nginx的安装,linux的版本是ubutu

    linux环境下,安装nginx,报错如下: the HTTP rewrite module requires the PCRE library. 1.需要安装pcre,报一下错误: you need ...

  7. Linux中yum手动安装、手动建立仓库文件夹关联实现关联包自动安装、yum相关命令使用

               yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指 ...

  8. Linux中Samba详细安装

    为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互 ...

  9. Linux中Samba详细安装【转】

    转自:http://www.cnblogs.com/whiteyun/archive/2011/05/27/2059670.html 为了实现Windows主机与Linux服务器之间的资源共享,Lin ...

随机推荐

  1. 2019春第十周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 在这里 我在这个课程的目标是 能够对C语言的编写更加得心应手 这个作业在那个具体方面帮助我实现目标 结构体更进一步 参考文献与网址 C语言 ...

  2. @CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy

    在spring jpa audit 中,在字段或者方法上使用注解@CreatedDate.@CreatedBy.@LastModifiedDate.@LastModifiedBy,当进行实体插入或者更 ...

  3. ESP8266 RTOS SDK烧写环境构建

    简介 esptool是一个Python软件程序,适用于ESP8266等一系列芯片的烧写,灵活高效. 环境构建 在官网下载安装最新2.7版python (linux和os x一般会自带python2.7 ...

  4. Oracle SQL Loader

    C:/Documents and Settings/WWJD>sqlldr SQL :: Copyright (c) , , Oracle. All rights reserved. 用法: S ...

  5. Redis和mysql数据怎么保持数据一致的?

    需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节.所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库.   这个业务场景, ...

  6. SWIT2019无线通信和信息技术国际研讨会(上海)

    无线通信和信息技术国际研讨会(SWIT 2019)将于2019年6月29日至30日在中国上海皇冠晶品酒店举行.本次会议将讨论无线通信和信息技术问题.它致力于创造一个交流最新研究成果和分享先进研究方法的 ...

  7. 在C#中,Newtonsoft.Json + dynamic动态解析jsonString,jsonString转实体

    记录一下 引用 using Newtonsoft.Json; using Newtonsoft.Json.Linq; var jsonString = "{\"ApiResourc ...

  8. 配置成功java11后安装eclipse失败

    前提是 1.java是成功配置的, 2.看清楚32bit,还是64bit,需要一致 THEN 方法一:去安装java11之前的版本,正确配置环境 方法二:java11中没有jre(不打紧).所以需要直 ...

  9. OpenStack-Neutron-VPNaaS-代码

    目前juno只支持ipsec的vpn  但是其实稍微修改代码pptp/openvpn/gre也都是可以支持的,下面看看vpn服务的代码流程: 默认我们创建好了ide策略.ipsec策略和vpn服务,因 ...

  10. mySQL简单操作(一)

    推荐学习网站(https://sqlzoo.net/wiki/SQL_Tutorial) 1.创建mSQL数据表(表名,表字段名,定义表字段) create table tbl_name [if no ...