LAMP纯源码编译安装日志-创新互联

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

企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联面向各种领域:PE包装袋成都网站设计全网营销推广解决方案、网站设计等建站排名服务。

相关软件列表:

# 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.编译时指定的路径。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:LAMP纯源码编译安装日志-创新互联
网址分享:http://hbruida.cn/article/ejceg.html