千家信息网

LAMP纯源码编译安装日志

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,一.LAMP构架的安装与经验技巧(源码安装好处。是便于管理,可以选定参数,可以使用新版本)相关软件列表:# ls /soft/ | grep -E "*.gz|*.zip|*.xz|*.bz2"apr
千家信息网最后更新 2026年11月02日LAMP纯源码编译安装日志


一.LAMP构架的安装与经验技巧(源码安装好处。是便于管理,可以选定参数,可以使用新版本)

相关软件列表:

# ls /soft/ | grep -E "*.gz|*.zip|*.xz|*.bz2"
apr-1.4.5.tar.gz
apr-util-1.3.12.tar.gz
autoconf-2.61.tar.gz
freetype-2.3.12.tar.gz
httpd-2.4.18.tar.bz2
jpegsrc.v6b.tar.gz
libgd-2.1.1.tar.xz
libmcrypt-2.5.8.tar.gz
libpng-1.4.1.tar.gz
libxml2-2.7.6.tar.gz
mysql-5.6.17.tar.gz
pcre-8.10.zip
php-5.6.18.tar.gz
zlib-1.2.5.tar.gz

参考解压方式: for n in *.tar.gz; do tar zxf $n;done;

其余用: tar xf filename

  1. apache 的安装与使用经验
    动态编译与静态编译(每次启动服务的时候都加载)
    (apache的扩展插件是通过模块机制扩展的。apache支持PHP是通过编译模块然后加载模块实现的。)
    (1) apache 需要的相关库文件 apr apr-util pcre(支持rewrite功能)
    cd apr-1.4.5
    ./configure --prefix=/usr/local/apr
    make && make instal
    cd apr-util-1.3.12
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
    make && make install
    cd pcre-8.10
    ./configure --prefix=/usr/local/pcre
    make&&make install
    下面是功能模块(使apache支持功能起到壮大apache的作用)
    (2) 安装libxml2
    cd libxml2-2.7.6
    ./configure --prefix=/usr/local/libxml2
    make && make install
    (3)安装libmcrypt
    cd libmcrypt-2.5.8
    ./configure --prefix=/usr/local/libmcrypt
    make && make install
    (4)安装zlib
    cd zlib-1.2.5
    ./configure
    make && make install
    (5)安装 libpng
    cd libpng-1.4.1
    ./configure --prefix=/usr/local/libpng
    make && make install
    (6)安装jpeg6
    此安装包无法自动创建目录需要手动添加
    mkdir /usr/local/jpeg6
    mkdir -p /usr/local/jpeg6/{lib,bin,include}
    mkdir -p /usr/local/jpeg6/man/man1
    cd jpeg-6b
    ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
    make && make install
    错误checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
    或者出现make: ./libtool: Command not found
    一般原因是 所以来的libtool 库文件版本低或缺失。
    解决方法:安装高版本的libtool 然后拷贝2个文件
    cp /usr/share/libtool/config/config.sub .
    cp /usr/share/libtool/config/config.guess .
    继续 make && make install
    (7)安装freetype
    cd freetype-2.3.12
    ./configure --prefix=/usr/local/freetype
    make && make install
    (8)安装autoconf
    cd autoconf-2.61
    ./configure
    make && make install
    (9)安装GD库
    cd libgd-2.1.1
    ./configure \
    --prefix=/usr/local/gd2/ \
    --enable-m4_pattern_allow \
    --with-zlib=/usr/local/zlib/ \
    --with-jpeg=/usr/local/jpeg6/ \
    --with-png=/usr/local/libpng/ \
    --with-freetype=/usr/local/freetype/
    make && make install
    主题(一)apache源码编译安装
    cd httpd-2.4.18
    ./configure --prefix=/usr/local/apache2 \
    --enable-mods-shared=all \
    --enable-so \
    --enable-proxy-ajp \
    --enable-rewrite \
    --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util \
    --with-pcre=/usr/local/pcre
    make && make install
    # /usr/local/apache2/bin/apachectl start
    # curl 127.0.0.1

    It works!


    apache下的的主要目录;
    bin build cgi-bin conf error htdocs icons include logs man manual modules
    (1)bin 是一些命令的存放位置。如httpd 提供apache服务管理如启动关闭。
    使用:./bin/httpd -k {start |restart|stop}
    apxs是编译模块相关的命令(PHP模块)
    apachectl是调用httpd服务的脚本。
    例如查看静态编译的模块
    # ./bin/apachectl -l
    Compiled in modules:
    core.c
    mod_so.c
    http_core.c
    worker.c
    # ./bin/httpd -l (进一步证实http和apachectl关系)
    Compiled in modules:
    core.c
    mod_so.c
    http_core.c
    worker.c)
    (2) htdocs 这个目录是存放程序员编写的程序的目录
    (3) modules 放置apache编译模块的目录。 .so(模块的后缀名)
    (4) logs 日志文件目录 包含 pid 文件(包含apache父进程)
    *****ps -ef | grep httpd****
    查看子进程如果出现不连续可能是apache出现问题。出现重新启动。
    (5)conf 包含apache的所有配置文件
    (6)cgi-bin 提供一些在线表格的功能。如果不需要需要把这个目录下文件清空(减小安全隐患)

    apache 解析PHP语句http.conf里面的主要参数
    DirectoryIndex index.html index.php
    LoadModule php5_module modules/libphp5.so
    AddType application/x-httpd-php .php

  2. 主题(二)mysql源码编译安装
    cd mysql-5.6.17
    cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DSYSCONFDIR=/etc \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci

    Mysql编译安装属性值解析
    #cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    #指定安装路径
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    #指定mysql数据(库)文件的存放路径
    -DSYSCONFDIR=/etc \
    #配置文件
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    #引擎支持myisam
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    #引擎支持 innodb
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    #引擎支持 memory-storage
    -DWITH_READLINE=1 \

    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
    #指定mysql的sock文件路径
    -DMYSQL_TCP_PORT=3306 \
    #指定mysql端口号
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci
    #指定字符集
    错误:
    CMake Error at cmake/readline.cmake:85 (MESSAGE):
    Curses library not found. Please install appropriate package,
    remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev,
    on Redhat and derivates it is ncurses-devel.
    解决办法: yum install ncurses-devel -y
    \mv \mv CMakeCache.txt /tmp
    然后重新 cmake(上面的指令如果没有错误提示)
    make && make install
    查看是否有mysql用户和组没有创建。
    useradd mysql -s /sbin/nologin -M
    修改mysql权限:
    chown -R mysql.mysql /usr/local/mysql
    进入mysql安装目录下,执行初始化配置脚本,创建系统自带的数据库和表
    # ./scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
    启动mysql服务:# ./support-files/mysql.server start
    错误提示:
    Starting MySQL.... ERROR! The server quit without updating PID file (/usr/local/mysql/data/swallow.pid)
    可能出现的原因和解决方法:
    (1).如果是初次安装。可能是初始化没有成功。在执行初始化命令的时候。提示里面包含2个OK (代表成功。这种情况重新初始化
    (2)可能原来系统安装过mysql 。可以用ps -ef | grep msyql 查看。然后结束进程:pkill mysql
    (3)data 目录权限可能不对。 chmod 755 data
    (4)查看属主或属组 一般 在 创建mysql用户 的后面就会 chown -R mysql:mysql /usr/local/mysql (这个可能性不大)
    启动mysql程序:
    ./bin/mysql
    可以产看mysql状态:
    mysql> status
    --------------
    ./bin/mysql Ver 14.14 Distrib 5.6.17, for Linux (x86_64) using EditLine wrapper

    Connection id: 1
    Current database:
    Current user: root@localhost
    SSL: Not in use
    Current pager: stdout
    Using outfile: ''
    Using delimiter: ;
    Server version: 5.6.17 Source distribution
    Protocol version: 10
    Connection: Localhost via UNIX socket
    Server characterset: utf8
    Db characterset: utf8
    Client characterset: utf8
    Conn. characterset: utf8
    UNIX socket: /var/lib/mysql/mysql.sock
    Uptime: 7 min 7 sec
    Threads: 1 Questions: 5 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.011
    --------------
    主题(三) PHP源码编译安装
    cd php-5.6.18
    ./configure \
    --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --with-mysql=/usr/local/mysql/ \
    --with-libxml-dir=/usr/local/libxml2/ \
    --with-png-dir=/usr/local/libpng/ \
    --with-jpeg-dir=/usr/local/jpeg6/ \
    --with-freetype-dir=/usr/local/freetype/ \
    --with-gd=/usr/local/gd2/ \
    --with-zlib-dir=/usr/local/zlib/ \
    --with-mcrypt=/usr/local/libmcrypt/ \
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    --with-xpm-dir=/usr/lib64/ \
    --enable-soap \
    --enable-mbstring=all \
    --enable-sockets
    参数详解;
    ./configure \
    --prefix=/usr/local/php \
    #安装路径
    --with-config-file-path=/usr/local/php/etc \
    #PHP的配置文件路径
    --with-apxs2=/usr/local/apache2/bin/apxs \
    #与apache连接需要的支持模块(工具)
    --with-mysql=/usr/local/mysql/ \
    --with-libxml-dir=/usr/local/libxml2/ \
    --with-png-dir=/usr/local/libpng/ \
    --with-jpeg-dir=/usr/local/jpeg6/ \
    --with-freetype-dir=/usr/local/freetype/ \
    --with-gd=/usr/local/gd2/ \
    --with-zlib-dir=/usr/local/zlib/ \
    --with-mcrypt=/usr/local/libmcrypt/ \
    # PHP需要的所有前面安装的连接模块
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    #指定PHP程序去连接mysql的方式
    #PHP5.3。3以后开发了mysqlnd。是PHP新的连接mysql的驱动配置方式:
    --with-mysql=mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    如果想把这3种都加载可以把
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    这句换成上面3句。
    #这里需要注意的是;mysql的连接mysql方式有3种。分别是:mysql,mysqli和pdo
    #这里需要关注2个;mysqli 和pdo。(他们是主流的支持高版本的)
    --with-xpm-dir=/usr/lib64/ \
    --enable-soap \
    --enable-mbstring=all \
    --enable-sockets
    错误:configure: error: xpm.h not found.
    解决方法:yum install libXpm-devel -y
    make && make install
    PHP动态加载模块的方法:如果在静态编译的时候那个模块没有编译进去可以动态加载。
    举例:查看源码下的模块目录;
    cd /soft/php-5.6.18/ext/
    下面的模块都可以通过动态加载,编译进去。以ftp 为例;
    cd ftp
    /usr/local/php/bin/phpize (借助这个命令生成所需的configure 等一系列的安装文件)
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    至此,就把ftp这个模块编译安装完成了。然后,需要去加载文件(修改php.ini)
    cd /usr/local/php/etc/
    vim php.ini (初次安装没有这个文件可以去/soft/php-5.6.18/源码目录去拷贝
    php.ini-development php.ini-production 一般这两个文件运维常用第二个)
    查找到 extension 相关的注释地方
    添加一下两句:(模块在PHP程序下的位置{一般编译动态模块后会提示的}和模块的名称)
    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226/"
    extension = ftp.so
    如果要加载模块需要重新启动apache服务器。
    /usr/local/apache2/bin/httpd -k restart
    查看PHP模块加载成功与否;可以用php 命令显示看是否有添加
    /usr/local/php/bin/php -m
    测试lamp是否搭建成功:
    在apach3的htdocs目录下新建.php文件
    vim ./htdocs/info.php
    phpinfo();
    ?>
    浏览器测试:http://192.168.1.140/info.php
    结果显示空白。
    解决思路:查看 /usr/local/apache2/modules/ 是否含有 libphp5.so这个模块。
    (这个模块是apache负责PHP解析的)
    修改配置文件:http.conf
    ServerName loacalhost:80
    (仿照这行添加AddType application/x-gzip .gz .tgz)
    AddType application/x-httpd-php .php
    加载pdo-mysql 的错误:make 错误
    /soft/php-5.6.18/ext/pdo_mysql/php_pdo_mysql_int.h:27:34: error: ext/mysqlnd/mysqlnd.h: No such file or directory
    解决方法:cp -a /soft/php-5.6.18/ext/pdo_mysql /usr/local/php/include/php/ext/
    这里的思路是 :make 是在安装目录下操作。不是在源码目录操作。需要把依赖的文件放置到安装路径下。方便应用。
    但是:遗憾的是安装完成后,不可以加载。用常规方法:
    extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226/"
    extension = pdo_mysql.so
    重新启动了好多httpd 也没加载成功。用 bin/php -m 一直没有查看到。我可以确定修改php.ini文件生效,把那个ftp模块注释掉后
    就看不到那个模块出现。所以,只好重新编译的。
    将编译的--with-mysqli=/usr/local/mysql/bin/mysql_config \ 语句换成了:
    --with-mysql=mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    这几句。支持3种方式连接mysql。这里mysqlnd是PHP5.3以上的默认连接mysql的引擎
    PHP不在支持扩展mysql(mysqli) 编译的时候可以是:--with-pdo-mysql=mysqlnd \
    附上PHP连接的3个脚本
    cat mysqli.php mysql-pdo.php mysql.php
    $conn = mysqli_connect('localhost', 'root', '', 'mysql');
    if(!$conn){
    die("数据库连接错误" . mysqli_connect_error());
    }else{
    echo"数据库连接成功";
    }
    ?>
    try{
    $pdo=new pdo("mysql:host=127.0.0.1;dbname=mysql","root","");
    }catch(PDDException $e){
    echo "数据库连接错误";
    }
    echo "恭喜!数据库连接成功";
    ?>
    $conn = @ mysql_connect("localhost", "root", "") or die("数据库连接错误");
    mysql_select_db("bbs", $conn);
    mysql_query("set names 'utf8'");
    echo "数据库连接成功";
    ?>
    查看 phpinfo() 信息来查看PHP 详细情况。
    上传文件关注如下几个参数:
    post_max_size = 128M
    upload_max_filesize = 128M
    #这两个设置一样即可,可以更大但要注意超时
    max_execution_time = 30
    max_input_time = 600
    memory_limit = 32M


my.cnf 的执行顺序:
1. /etc
2."$basedir/my.cnf" (需要把/etc/my.cnf 更改)
php.ini生效路径问题
PHP将按照如下顺序依次查找该文件:
1.当前工作目录;
2.环境变量PHPRC指明的路径;
3.编译时指定的路径。

模块 编译 文件 目录 错误 支持 路径 成功 数据 源码 数据库 方法 配置 动态 命令 方式 程序 服务 功能 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技靠谱吗 互联网科技公司的优势 互联网与科技发展 互联网中国科技 互联网科技小贷 互联网科技视频 世界互联网领先科技成果 汇久创客互联网科技 深圳互联网科技怎么样 中国最先进互联网科技公司 中盈科技互联网信息有限公司 温州喔噻互联网科技有限公司 新兴科技互联网创新大赛颁奖典礼 四川慕妮娅互联网科技有限公司 滨湖区互联网智能科技产品有哪些 富国互联网金融科技混合基金 互联网高科技行业有哪些企业 同城互联网络科技 互联网科技职业技能培训学校 青岛互联网科技园 互联网金融监管科技数据 互联网 科技 华宇互联网科技 湖南诚度互联网科技有限公司 乌苏新华互联网科技做什么的 半导体行业属于互联网高科技类吗 九思连强互联网电子科技有限公司 昆明中奇联合互联网科技 科技互联网经济论坛 科技互联网公司两年变化
0