• Linux下PHP开发环境搭建


    平时写程序时都是在服务器已经搭建好的PHP环境进行的。出于对未知知识的好奇,这几天在自己的机器上搭建起了PHP开发环境。本想轻松顺利的看到phpinfo显示在我的页面上,没想到安装环境时一路的error,不停的 google折腾了半天终于看到了phpinfo。在此把遇到的问题总结一下,给大家提供一个参考。
    我的OS是ubuntu 9.10,得益于apt-get强大的功能参考了一下这篇文章http://wiki.ubuntu.org.cn/index.php?title=Apache&variant=zh-cn#.E5.AE.89.E8.A3.85LAMP,轻松的完成了LAMP的搭建。
    后来手痒痒的不行,把环境全删了重新用源码包搭建了一遍。步骤如下:

    (由于用非root账户登录,在需要root权限时用sudo执行)

    一、build-essential的安装
    # bulid-essential是编译源码包(C/C++程序)所需的编译工具
    # ubuntu 下默认没有安装,ubuntu下可以执行sudo apt-get install build-essential

    安装包 build-essential_11.4.tar.gz
    # 安装命令
    tar -zxvf build-essential_11.4.tar.gz
    cd build-essential-11.4 
    ./configure
    make
    sudo make install
    make clean

    二、MySql的安装

    step.1
    ncurses的安装
    # 如果缺少ncurses包mysql编译会报No curses/termcap library found的错误
    安装包 ncurses-5.6.tar.gz
    tar -zxvf ncurses-5.6.tar.gz
    cd ncurses-5.6 
    ./configure --prefix=/usr/local/ncurses --with-shared --without-debug --enable-widec
    make
    sudo make install
    make clean

    step.2
    mysql的安装
    安装包 mysql-5.1.42.tar.gz

    step.a
    # 安装命令
    tar -zxvf mysql-5.1.42.tar.gz
    cd mysql-5.1.42
    ./configure --prefix=/usr/local/mysql--with-named-curses-libs=/usr/local/ncurses/lib/libncursesw.so.5.6--with-charset=gbk
    # --prefix=/usr/local/mysql mysql的安装路径 
    # 关于mysql配置文件路径的说明:mysql按照下列顺序搜索my.cnf
    # /etc,mysql安装目录如 /usr/local/mysql/etc,安装目录下的data目录如 /usr/local/mysql/data,以最先找到的为准。/etc下my.cnf的配置是全局设置
    # --with-named-curses-libs=/usr/local/ncurses/lib/libncursesw.so.5.6 ncurses库文件安装路径
    # --localstatedir=/usr/local/mysql/var 数据库默认存放路径(可以设置其它路径如,/var/lib/mysql)
    # --with-charset=gbk 设置数据库支持中文字符集
    make
    sudo make install

    step.b
    # 拷贝mysql配置文件到目标目录/usr/local/mysql/etc
    # 新建/usr/local/mysql/etc目录(该目录没有自动创建)
    sudo mkdir/usr/local/mysql/etc
    sudo cp support-files/my-medium.cnf /usr/local/mysql/etc/my.cnf
    # 删除安装产生的临时文件(一定要在拷贝完配置文件后在执行,不然my-medium.cnf会被删除)
    make clean

    step.c
    # 添加一个名为mysql的linux系统群组(可以参考mysql手册2.8.1. 源码安装概述)
    sudo groupadd mysql

    # 新建一个名为mysql的linux系统用户,并将其添加到mysql系统群组中
    # 如果Linux只启动命令行界面,可以用下面的操作添加需要的账户
    # sudo useradd -M -s /bin/false -g mysql mysql
    # -M 该选项不会建立用户目录
    # -s 指定新建用户使用的shell,/bin/false表示该用户不能登录系统 
    # -g mysql 将用户mysql添加到组mysql中

    # 我现在用的时桌面系统,用如上命令添加账户。系统启动时在登录界面会显示mysql用户虽然它不登录
    # 改用下面命令,mysql账户就不会显示在登录界面了
    sudo useradd -r -s /bin/false-g mysqlmysql
    # -r 建立系统账户,不创建用户目录,用户分配的uid小于1000

    step.d
    # 创建mysql授权表
    # 如果用root运行命令,应当使用--user选项。选项的值应与你在stpe.czz中创建的登录账户相同。如果用该用户登录来运行命令,可以省略--user选项

    #在此步如果报FATAL: Could not find mysqld错误,将命令改为
    #sudo /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql
    step.e
    # 进入mysql的安装目录(/usr/local/mysql) 
    cd /usr/local/mysql
    # 将文件的所有属性改为root用户
    sudo chown-R root .
    # 将数据目录的所有属性改为mysql用户(即在step.c中创建的用户)
    sudo chown-R mysqlvar
    # 将组属性改为mysql组
    sudo chgrp-R mysql.

    step.f
    # 启动mysql服务
    sudo /usr/local/mysql/bin/mysqld_safe --user=mysql&
    # 登录数据库
    /usr/local/mysql/bin/mysql-uroot

    mysql安装完成了

    三、Apache的安装
    # 使用DSO动态编译,关于动态编译与静态编译的区别可以参考http://www.ha97.com/2612.html
    安装包 httpd-2.2.14.tar.gz
    tar -zvxf httpd-2.2.14.tar.gz
    cd httpd-2.2.14
    ./configure --prefix=/usr/local/apache --enable-mods-shared=most --enable-so
    # --prefix=/usr/local/apache 将apache安装到/usr/local/apache路径
    # --enable-mods-shared=most 将所有标准模块都动态编译为DSO模块
    # --enable-so apache核心装载DSO,但是不实际编译任何动态模块
    make
    make install
    make clean

    # 启动apache 
    sudo /usr/local/apache/bin/apachectl start
    # 打开浏览器输入浏览器会看到It works!

    apache安装完成了

    四、PHP的安装
    step.1
    freetype的安装
    安装包 freetype-2.3.11.tar.gz
    # 安装命令 
    tar -zxvf freetype-2.3.11.tar.gz
    cd freetype-2.3.11
    ./configure --prefix=/usr/local/freetype
    make
    sudo make install
    make clean

    step.2
    zlib的安装
    安装包 zlib-1.2.3.tar.gz
    # 安装命令
    tar -zxvf zlib-1.2.3.tar.gz
    cd zlib-1.2.3
    ./configure --prefix=/usr/local/zlib --shared
    #--prefix=/usr/local/zlib zlib的安装目录 --shared安装共享库
    make
    sudo make install
    make clean

    step.3
    libpng的安装
    安装包 libpng-1.4.0.tar.gz
    # 安装命令
    tar -zxvf libpng-1.4.0.tar.gz
    cd libpng-1.4.0
    # 将scripts目录下的makefile.std文件拷贝到当前目录,并重命名为makefile
    cp scripts/makefile.std makefile
    # 编辑makefile文件找到27行左右如下内容
    # ZLIBLIB=../zlib
    # ZLIBINC=../zlib
    # 修改为
    # ZLIBLIB=/usr/local/zlib/lib (zlib的库文件路径)
    # ZLIBINC=/usr/local/zlib/include (zlib的包含文件路径)
    # 保存退出
    # 如果安装zlib时配置命令为 ./configure ,则不用修改makefile文件
    make
    sudo make install
    make clean

    step.4
    jpeg的安装
    安装包 jpegsrc.v7.tar.gz
    # 安装命令
    tar -zxvf jpegsrc.v7.tar.gz
    cd jpeg-7
    ./configure --prefix=/usr/local/jpeg7
    make
    sudo make install
    make clean
    # 很多人手动建立 jpeg的目录结构不知道是因为不同还是有其它原因(有待查证)

    # 以上包都是gd库所需要的组成库,下面安装gd库

    step.5
    gd库的安装
    安装包 gd-2.0.35.tar.gz
    # 安装命令

    step.a
    tar -zxvf gd-2.0.35.tar.gz
    cd gd-2.0.35
    # 执行gd配置命令
    LDFLAGS="-L/usr/local/lamp/contrib/lib" ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg7
    # LDFLAGS="-L/usr/local/zlib/lib" zlib的库文件路径
    # 如果安装zlib时配置命令为./configure ,则将gd2库的配置命令改为 ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg7
    step.b
    # 编辑 Makefile 文件, 找到 232 行左右
    # 看到类似内容 CPPFLAGS = -I/usr/local/freetype/include/freetype2 -I/usr/local/freetype/include -I/usr/local/freetype/include -I/usr/local/jpeg7/include
    # 修改为 CPPFLAGS = -I/usr/local/freetype/include/freetype2 -I/usr/local/freetype/include -I/usr/local/freetype/include -I/usr/local/jpeg7/include -I/usr/local/libpng/include 
    # 保存退出

    step.c
    # 编辑 gd_png.c 文件 找到 if (!png_check_sig (sig, 8)) { 
    # 修改为 if (png_sig_cmp (sig, 0, 8)) {
    # 保存退出

    step.d
    # 执行命令
    make
    sudo make install
    make clean
    # gd库安装完成 

    step.6
    libxml2的安装
    安装包 libxml2-2.6.20.tar.gz
    # libxml2用来解析xml
    # 安装命令
    tar -zxvf libxml2-2.6.20.tar.gz
    cd libxml2-2.6.20
    ./configure --prefix=/usr/local/libxml
    # 编辑 nanohttp.c 文件,找到fd = open(filename, O_CREAT | O_WRONLY);(可以通过查找O_WRONLY定位)
    # 修改为 fd = open(filename, O_CREAT | O_WRONLY,0777);
    # 保存退出
    make
    make install
    make clean

    step.7
    php的安装
    安装包 php-5.3.1.tar.gz
    # 安装命令
    step.a
    tar -zxvf php-5.3.1.tar.gz
    cd php-5.3.1.tar
    ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql--with-libxml-dir=/usr/local/libxml2 --with-zlib-dir=/usr/local/zlib --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg7 --with-freetyp-e-dir=/usr/local/freetype --with-gd=/usr/local/gd2
     # --with-zlib-dir=/usr/local/zlib 的安装目录,如果安装zlib的配置命令为 ./configure ,则安装目录为/usr/local

    make
    sudo make install
    make clean

    step.b
    拷贝PHP配置文件
    sudo cp php.ini-development /usr/local/php/lib/php.ini
    # php配置文件名称不同本版名称会有差异,当前版本中有两个文件 php.ini-development(开发环境中用的) php.ini-production(生产环境中用的)

    step.d
    修改apache配置文件/usr/local/apache/conf/httpd.conf

    # 添加对php的支持
    LoadModule php5_module modules/libphp5.so
    AddType application/x-httpd-php .php

    step.e
    # 如果用root账户登录跳过这一步
    # 更目录web目录权限 
    sudo chown-R 登录用户:登录用户 /usr/local/apache/htdocs

    step.f
    #重启apache 
    sudo /usr/local/apache/bin/apachectl restart

    好了到此linux配置环境配置完了,由于各种问题这篇文章拖了好几天才写完。这中间还发生了未保存而丢失文档的杯俱泪奔啊!其中各个包的安装./configure涉及到的参数只是一些基本的参数,LAMP之旅刚刚开始。走过了会发现没有想象的那么困难了,GOOD LUCK!

  • 相关阅读:
    python re正则表达式
    python logging模块
    python configparse模块&xml模块
    013 内置函数68个
    day011 迭代器闭包
    09 函数初识
    08 文件操作
    07 list和dict for循环遍历索引问题以及深浅拷贝
    05 字典
    04 基本数据类型(list, tuple)
  • 原文地址:https://www.cnblogs.com/edwardsun/p/4173962.html
Copyright © 2020-2023  润新知