Linux+Apache+Mysql+PHP典型配置

 更新时间:2016年11月25日 16:09  点击:1317



关键字:apache+mysql+php apache mysql php 配置 lamp 服务器 web


Linux+Apache+Mysql+PHP典型配置

调试环境:Redhat9.0 Apache1.3.29 Mysql3.23.58 PHP4.3.4

Linux系统的安装我就不讲了,这是基本功,其实这篇文章在类似Redhat的其他linux也应该通用,大家只要掌握我提供的方法就行。记得安装Redhat9。0的时候不要安装系统默认的apache,mysql和php以及相关的软件。已经安装的请用rpm -e * 删除已经安装的包。

1.安装Mysql3.23.58

其实老实说直接安装Mysql官方网站提供的rpm包也是一个比较可行的办法,他的官方网站的rpm包的提供基本跟tar包发行是同步的,这点我比较喜欢,至少安装rpm包的在后面的调试中不会出现mysql库文件找不到的情况。但这里还是有必要讲一下自定义安装的步骤,毕竟网友自定义安装的还说挺多的。

软件获取:http://www.mysql.com/downloads/index.html

安装步骤:

tar zxvf mysql-3.23.58.tar.gz
cd mysql-3.23.58

./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql

make

make install

#prefix=/usr/local/mysql mysql安装的目标目录

#sysconfdir=/etc my.ini配置文件的路径

#localstatedir=/var/lib/mysql 数据库存放的路径

安装完以后要初始化数据库,当然你是升级的话不用做这步;

/usr/local/mysql/bin/mysql_install_db


如果系统没有mysql这个用户的话,最好做以下这步:

useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql

然后我启动mysql

/usr/local/mysql/bin/safe_mysqld &

ok,先看看mysql能否正常工作

mysql -uroot mysql

一般情况下都是不能正常链接数据库,错误提示一般为:

ERROR 2002: Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock'' (2)

其实网上大家问的最多的都是整个问题,说什么链接不到mysqld.sock,其实大家不妨看看mysql的错误日志就明白怎么回事,我这里的错误日志是在

/var/lib/mysql/*.err 你会发现mysql只所以不能启动,是因为/var/lib/mysql的权限不允许mysql服务访问,英文mysql默认是调用mysql用户来启动服务的,好了,既然知道是什么原因找到不能启动,那就简单了。我们只要

chown -R mysql:mysql /var/lib/mysql 就行,如果还是启动不了,再慢慢调试权限,反正一般启动不了都是权限的问题。

如果大家还是不能启动不了的话,那就用我的比较繁琐的权限的设置,反正我每次都是这么做的,一般不会有问题,见下:

chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a


做完上面的步骤,然后把你编译目录的一个脚本COPY过去

 

互联网的今天,AJAX已经不是什么陌生的词汇了。说起AJAX,可能会立即想起因RSS而兴起的XML。XML的解析,恐怕已经不是什么难题了,特别是PHP5,大量的XML解析器的涌现,如最轻量级的SimpleXML。不过对于AJAX来说,XML的解析更倾向于前台Javascrīpt的支持度。我想所有解析过XML的人,都会因树和节点而头大。不可否认,XML是很不错的数据存储方式,但是其灵活恰恰造成了其解析的困难。当然,这里所指的困难,是相对于本文的主角--JSON而言。
  JSON为何物?我就不重复概念了。通俗的说,它是一种数据的存储格式,就像PHP序列化后的字符串一样。它是一种数据描述。比如我们将一个数组序列化后存放,就可以很容易的反序列化后应用。JSON也是如此,只不过他搭建的是客户端Javascrīpt和服务端PHP的交互桥梁。我们用PHP生成JSON后的字符串,然后把这个字符串传给前台Javascrīpt,Javascirpt就可以很容易的将其反JSON然后应用。说通俗点,它真的很像数组。
  言归正传,如何使用JSON。PHP5.2开始内置了JSON的支持。当然,如果低于这个版本的话,那么市面上有很多PHP版本的实现,随便下一个用就OK啦。现在主要是说说PHP内置支持的JSON。很简单,两个函数:json_encode和json_decode(跟序列化很像啦)。一个编码,一个解码。先看看编码的使用:

<?php
$arr = array(
    ''name'' => ''陈毅鑫'',
    ''nick'' => ''深空'',
    ''contact'' => array(
        ''email'' => ''shenkong at qq dot com'',
        ''website'' => ''http://www.chenyixin.com'',
    )
);
$json_string = json_encode($arr);
echo $json_string;
?>
  很简单的将一个数组JSON了。需要指出的是,在非UTF-8编码下,中文字符将不可被encode,结果会出来空值,所以,如果你使用gb2312编写PHP代码,那么就需要将包含中文的内容使用iconv或者mb转为UTF-8再进行json_encode,上面输出结果如下:


{"name":"u9648u6bc5u946b","nick":"u6df1u7a7a","contact":{"email":"shenkong at qq dot com","website":"http://www.chenyixin.com"}}
  我都说了和序列化很像,你还不信。编码后就要解码,PHP提供了相应的函数json_decode,json_decode执行后,将会得到一个对象,操作如下:


<?php
$arr = array(
    ''name'' => ''陈毅鑫'',
    ''nick'' => ''深空'',
    ''contact'' => array(
        ''email'' => ''shenkong at qq dot com'',
        ''website'' => ''http://www.chenyixin.com'',
    )
);
$json_string = json_encode($arr);
$obj = json_decode($json_string);
print_r($obj);
?>
  访问对象内的属性会吧?$obj->name,这样子的,当然,也可以把它转位数组,方便调用啦:


$json_string = json_encode($arr);
$obj = json_decode($json_string);
$arr = (array) $obj;
print_r($arr);
  PHP转来转去的用途不是特别大,除了缓存生成,感觉还不如直接存数组呢,不过,

<
■PDO为何物?
POD(PHP Data Object)扩展在PHP5中加入,PHP6中将默认识用PDO连接数据库,所有非PDO扩展将会在PHP6被从扩展中移除。该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。
我是配置在windows下做开发用的。
■PDO的目标
  • 提供一种轻型、清晰、方便的 API
  • 统一各种不同 RDBMS 库的共有特性,但不排除更高级的特性。
  • 通过 PHP 脚本提供可选的较大程度的抽象/兼容性。
  • ■PDO的特点:
  • 性能。PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性。
  • 能力。PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS 独特功能的方便访问。
  • 简单。PDO 旨在使您能够轻松使用数据库。API 不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。
  • 运行时可扩展。PDO 扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个 PHP 程序。例如,PDO_OCI 扩展会替代 PDO 扩展实现 Oracle 数据库 API。还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird 的驱动程序,更多的驱动程序尚在开发。

    ■安装PDO
    我这里是WINDOWS下开发用的PDO扩展,要是你要在Linux下安装配置,请到别的地方寻找。
    版本要求:
    php5.1以及以后版本的程序包里已经带了;
    php5.0.x则要到pecl.php.net下载,放到你的扩展库,就是PHP所在的文件夹的ext文件夹下;
    手册上说5.0之前的版本不能运行PDO扩展。

    配置:
    修改你的php.ini配置文件,使它支持pdo.(php.ini这个东西没有弄懂的话,先弄清楚,要修改调用你的phpinfo()函数所显示的那个php.ini)

    extension=php_pdo.dll前面的分号去掉,分毫是php配置文件注释符号,这个扩展是必须的。
    往下还有
    ;extension=php_pdo.dll
    ;extension=php_pdo_firebird.dll
    ;extension=php_pdo_informix.dll
    ;extension=php_pdo_mssql.dll
    ;extension=php_pdo_mysql.dll
    ;extension=php_pdo_oci.dll
    ;extension=php_pdo_oci8.dll
    ;extension=php_pdo_odbc.dll
    ;extension=php_pdo_pgsql.dll
    ;extension=php_pdo_sqlite.dll

    各各扩展所对应的数据库是:

      Server+Client+WSDL

     

    声明:很简单!!!!!!

    参考了如下:

     

    先建Server,然后使用wsdl工具来生成wsdl,我用的是zend development environment,

    zde中的tools中的wsdl generator wizard

    第一页是名字,和输出地址(输出后直接挪过去就OK)

    第二页是类和地址,类挑上勾,URL那里添server那个文件的地址

    第三页 finish

    别忘了拷那个wsdl过去...

     

    记得server引用的那个类文件里不要有输出.

     

    一共有两个需要添地址的地方

    一个是wsdl中的描述http://127.0.0.1/test/CulculatorServer.php

    一个是client中的连接http://127.0.0.1/test/Culculator.wsd

     

    类文件

     

    <?php

    /**

     * @name Culculator.php

     * @date Fri Jan 25 12:43:40 CST 2008

     * @copyright 马永占(MyZ)

     * @author 马永占(MyZ)

     * @link http://blog.111cn.net/mayongzhan/

     */

     

    class Culculator

    {

           /**

            * 求和

            *

            * @param float $x

            * @param float $y

            * @return float

            */

           public function add($x, $y)

           {

                  return $x + $y;

           }

    }

    ?>

     

    Server

     

    <?php

    /**

     * @name CulculatorServer.php

     * @date Fri Jan 25 12:44:04 CST 2008

     * @copyright 马永占(MyZ)

     * @author 马永占(MyZ)

     * @link http://blog.111cn.net/mayongzhan/

     */

     

    include(''./Culculator.php'');

    $server = new SoapServer(''./Culculator.wsdl'');

    $server->setClass(''Culculator'');

    $server->handle();

    ?>

     

    Client

     

    <?php

    /**

     * @name CulculatorClient.php

     * @date Fri Jan 25 12:43:54 CST 2008

     * @copyright 马永占(MyZ)

     * @author 马永占(MyZ)

     * @link http://blog.111cn.net/mayongzhan/

     */

     

    $soap = new SoapClient(''http://127.0.0.1/test/Culculator.wsdl'');

    echo $soap->add(1, 2);

    ?>

     

    WSDL

     

    <?xml version=''1.0'' encoding=''UTF-8''?>

     

    <!-- WSDL file generated by Zend Studio. -->

     

    <definitions name="math" targetNamespace="urn:math" xmlns:typens="urn:math" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">

           <message name="add">

                  <part name="x" type="xsd:float"/>

                  <part name="y" type="xsd:float"/>

           </message>

           <message name="addResponse">

                  <part name="addReturn" type="xsd:float"/>

           </message>

           <portType name="CulculatorPortType">

                  <operation name="add">

                         <documentation>

                                求和

                         </documentation>

                         <input message="typens:add"/>

                         <output message="typens:addResponse"/>

                  </operation>

           </portType>

           <binding name="CulculatorBinding" type="typens:CulculatorPortType">

                  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

                  <operation name="add">

                         <soap:operation soapAction="urn:CulculatorAction"/>

                         <input>

                                <soap:body namespace="urn:math" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

                         </input>

                         <output>

                                <soap:body namespace="urn:math" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

                         </output>

                  </operation>

           </binding>

           <service name="mathService">

                  <port name="CulculatorPort" binding="typens:CulculatorBinding">

                         <soap:address location="http://127.0.0.1/test/CulculatorServer.php"/>

                  </port>

           </service>

    </definitions>

    Driver name Supported databases
    PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
    PDO_FIREBIRD Firebird/Interbase 6
    PDO_INFOR

    Server+Client

     

    上篇用了wsdl这个写不用wsdl.

     

    声明:很简单!!!!!!

    参考了如下:

    http://blog.111cn.net/phphot/archive/2007/07/15/1692109.aspx

     

    类文件

     

    <?php

    /**

    * 实现业务逻辑的类,此类是一个普通类

    *

    */

    class Basic {

           /**

            * 返回一个字符串:Hello World!

            *

            * @return string

            */

           public function returnString($test){

                   return "Hello World!".$test;

           }

    }

    ?>

    Server

     

    <?php

    /**

    * Web ServiceServer端,包含类文件。

    */

    require_once("basic.php");

    /**

    * 创建Server对象

    */

    $arrOptions = array(''uri''=>''checkAPI'');    //设置命名空间

    $objSoapServer = new SoapServer(null,$arrOptions);

    /**

    * 注册Basic类的所有方法

    */

    $objSoapServer->setClass("Basic");

    /**

    * 处理请求

    */

    $objSoapServer->handle();

    ?>

     

    Client

     

    <?php

    /**

    * Client端,首先创建Client对象

    */

    $arrOptions = array(''uri''=>''checkAPI'',                     //设置命名空间

                           ''location''=>''http://localhost/user/soaptest.php'',        //设置Server地址

                           ''trace''=>true);

    $objSoapClient = new SoapClient(null,$arrOptions);

    /**

    * 远程调用

    */

    $test=''ok123'';

    try{

       $strReturn = $objSoapClient->returnString($test);

    }catch(Exception $e){

    }

    /**

    * 打印结果

    */

    echo $strReturn;

    ?>

  • [!--infotagslink--]

    相关文章

    • IntelliJ IDEA2021.1 配置大全(超详细教程)

      这篇文章主要介绍了IntelliJ IDEA2021.1 配置大全(超详细教程),需要的朋友可以参考下...2021-04-18
    • Windows VPN服务器配置图文教程 超详细版

      VPN可以虚拟出一个专用网络,让远处的计算机和你相当于处在同一个局域网中,而中间的数据也可以实现加密传输,用处很大,特别是在一些大公司,分公司处在不同的区域。...2016-01-27
    • Tomcat配置及如何在Eclipse中启动

      这篇文章主要介绍了Tomcat配置及如何在Eclipse中启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-04
    • Laravel4安装配置的方法

      如果我们需要安培Laravel4的话最php最低要求要在php5.3.7版本并且我们需要把mcrypt与openss这两个扩展开启才可以,具体步骤我们参考下文。 前面我们介绍我了 com...2016-11-25
    • MySQL性能监控软件Nagios的安装及配置教程

      这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
    • 详解Mysql中的JSON系列操作函数

      新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
    • 深入研究mysql中的varchar和limit(容易被忽略的知识)

      为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
    • 详解Maven profile配置管理及激活profile的几种方式

      这篇文章主要介绍了详解Maven profile配置管理及激活profile的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26
    • MySQL 字符串拆分操作(含分隔符的字符串截取)

      这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
    • mysql的3种分表方案

      一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
    • IDEA如何添加配置文件到classpath中

      这篇文章主要介绍了IDEA如何添加配置文件到classpath中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
    • 查找php配置文件php.ini所在路径的二种方法

      通常php.ini的位置在:复制代码 代码如下:/etc目录下或/usr/local/lib目录下。如果你还是找不到php.ini或者找到了php.ini修改后不生效(其实是没找对),请使用如下办法:1.新建php文件,写入如下代码复制代码 代码如下:<?phpe...2014-05-31
    • 部署PHP时的4个配置修改说明

      以下就是部署PHP时的4个配置修改说明,大家一个一个进行学习研究。1、short_open_tag 是什么呢? 决定是否允许使用代码开始标志的缩写形式(<&#63; &#63;> )。如果要和 XML 结合使用PHP,可以禁用此选项以便于嵌入使用<&#63;x...2015-10-21
    • Windows服务器MySQL中文乱码的解决方法

      我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
    • Centos5.5中安装Mysql5.5过程分享

      这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
    • 用VirtualBox构建MySQL测试环境

      宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19
    • Vue-Router的routes配置详解

      在使用vue-router的项目中,实例化VueRouter是其配置选项routes该选项指定路由与视图的组件的关系或者路由与其他路由的关系,Router配置选项中是其中最重要的配置。本文就详细的介绍一下...2021-10-25
    • 华为畅享20Pro配置怎么样?华为畅享20Pro参数配置分析

      华为畅享20Pro配置怎么样?对于即将上市的华为畅享20 Pro手机,很多的网友们也是相当关注的,大家都想要知道这款华为畅享20 Pro手机的配置到底怎么样,赶紧看看吧...2020-06-29
    • 忘记MYSQL密码的6种常用解决方法总结

      首先要声明一点,大部分情况下,修改MySQL密码是需要有mysql里的root权限的...2013-09-11
    • MySQL数据库备份还原方法

      MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:/Program Files/MySQL/MySQL Server 4.1/bin (或者直接将windows的环境变量path中添加该目录) ...2013-09-26