美文网首页
Ubuntu下的LAMP环境编译安装

Ubuntu下的LAMP环境编译安装

作者: 王宝花 | 来源:发表于2016-06-03 23:00 被阅读349次

    虚拟机安装

    • 使用镜像安装ISO
    • 启动虚拟机转换网络桥接模式
    • ifconfig 查看IP
    • 使用mac终端 或者 window ssh连接Linux
    • MAC连接如下:
    ssh username@ip
    

    Ubuntu 下的 apt-get 更新

    • 在使用之前,需要使用apt-get update进行资源目录的更新,注意这里是网络资源目录更新。
    • apt-get upgrade是进行所安装软件的更新

    下载LAMP环境安装包

    下载依赖包

    公共依赖包

    cmake   // 用来预编译MySQL
    make    // 源码预编译
    gcc // GNU c编译器
    g++ // GNU c++编译器 
    libxml2-dev // 编译安装libxml2会用此依赖包
    libxml2
    build-essential // 编译程序的依赖包 作用:提供编译程序必须软件包的列表信息
    bison   // 安装Mysql会用到
    build-depgcc    // Ubuntu下的gcc安装
    libncurses5-dev // 安装libncurses5的依赖包
    re2c    // PHP语法分析器
    libmcrypt   // 算法加密库
    autoconf    // 自动配置,phpize会用到
    

    Apache依赖包

    apr // Apache可移植运行库
    apr-until   // 
    pcre    // 一个Perl库
    

    编译安装

    Apache

    • 安装apr

    解压后进入目录,执行如下命令

    ./configure --prefix=/usr/local/apr
    make && make install
    
    • 安装apr-until

    解压后进入目录,执行如下命令

    ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr 
    make && make install
    
    • 安装pcre

    解压后进入目录,执行如下命令

    ./configure --prefix=/usr/local/pcre
    make && make install
    
    • 安装Apache

    解压后进入目录,执行如下命令

    ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
    make && make install
    

    有时用tar解压.错误如下:

    gzip: stdin: unexpected end of file 
    tar: Unexpected EOF in archive 
    tar: Unexpected EOF in archive 
    tar: Error is not recoverable: exiting now 
    

    原因:该源码包在下载过程中被破坏或者未使用想对应后缀的解压命令。
    解决方法:重新下载。

    • 配置Apache

    进入 /usr/local/apache/conf 目录 备份http.conf 为 http.conf.bak

    vi  http.conf
    

    将187行 ServerName 前#去掉,更改为 ServerName 127.0.0.1:80 保存退出;
    进入 apache/bin 目录 apachectl 为服务启动脚本,将此文件 cp 到 /etc/init.d/httpd;
    执行命令:sudo service httpd start 通过浏览器访问 localhost 即可看见 it Work 即可;
    如果出现未启动情况请查看80端口是否被其他程序占用。

    MySQL 安装编译

    创建用户和用户组

    groupadd mysql
    useradd -g mysql- s "/sbin/nologin" // 防止以mysql用户登录系统
    

    进入mysql目录,执行cmake

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1
    -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
    

    -DCMAKE_INSTALL_PREFIX=安装根目录
    -DCMAKE_INSTALL_PREFIX=unix套接字目录
    -DDEFAULT_CHARSET=默认字符集
    -DDEFAULT_COLLATION=默认编码
    -DWITH_EXTRA_CHARSETS=额外的编码,请使用ALL来编译。
    -DWITH_MYISAM_STORAGE_ENGINE=1 编译myisam存储引擎,默认的存储引擎,不加也可以
    -DWITH_INNOBASE_STORAGE_ENGINE=1 支持InnoDB存储引擎,这个也是默认安装的
    -DWITH_READLINE=1 使用readline功能
    -DENABLED_LOCAL_INFILE=1 可以使用load data infile命令从本地导入文件
    -DMYSQL_DATADIR=数据库 数据目录
    -DDOWNLOAD_BOOST=1 // 下载boost,这个用来编译高版本的Mysql,没有会报错,也可以进行apt-get
    -DWITH_BOOST=/usr/local/boost // 使用boost

    这个问题我重新安装一次就没有了

    debian 系统下安装,需要把系统 Swap 设到最大的 512M(linode 默认的 Swap 是 256M,最大是 512M),不然编译时会报 “g++: internal compiler error: Killed (program cc1plus)” 的错误:(

    编译安装

    ./configure  --prefix=/usr/local/php  --with-apxs2=/usr/local/apache/bin/apxs    --with-mysql=/usr/local/mysql --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/libjpeg  --with-png-dir=/usr/local/libpng --with-zlib-dir=/usr/local/zlib --enable-mbstring  --enable-xml  --enable-sockets 
    
    make && make install
    

    配置mysql

    安装默认数据库

    cd /usr/local/mysql/scripts
    

    初始化数据库

    ./mysql_install_db --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data   --user=mysql
    

    复制配置文件

    cd /usr/local/mysql/support-files
    cp my-medium.cnf /etc/my.cnf cpmysql.server /etc/init.d/mysqld
    

    修改配置配置文件

    vi /etc/init.d/mysqld /*编辑basedir=和datadir=*/
    basedir=/usr/local/mysql datadir=/home/mysql servicemysqld start
    

    提示:出国一次pid的错误,解决方式是重新安装。

    PHP安装编译

    可以查看一下INSTALL文件,里面有安装说明。

    说明:此次安装未在编译PHP安装模块,主要是可以通过phpize来实现编译后PHP的扩展安装;如果有需要,也可以实现在前期编译前安装相应的扩展模块,只需要按正常顺序进行解压,配置,编译即可,在编译PHP时加入相应的OPtions参数即可,但需要注意的是依赖包问题。

    开始编译

    进入PHP解压目录
    ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with--mysql=/usr/local/mysql
    

    --with-apxs2=/usr/local/apache/bin/apxs // 挂在apache上,并且开启PHP模块
    --with-mysql=/usr/mysql/mysql // PHP的扩展模块mysql

    make && make install
    

    复制配置文件

    cp php.ini-development/usr/local/php/lib/php.ini
    

    修改php.ini 文件 中搜索 date 将默认时区修改为 Asia/Shanhai

    修改http.conf文件

    向 http.conf 文件中加入

    <FilesMatch \.php$>  
    SetHandler application/x-httpd-php 
    </FilesMatch>
    

    搜索DirectoryIndex 修改为

    index.html index.php index.htm
    

    在Apache的htdoc目录中建立文件

    mv index.html index.php
    vim index.php
    <?php
    echo phpinfo();
    ?>
    

    安装完成进行测试

    浏览器打开对应IP即可

    编译PHP扩展

    GD库的安装

    GD依赖包有很多,需要在安装之前全部安装
    注意:安装过程中可能还会需要相应的依赖包,选择安装

    libfreetype6-dev
    libfontconfig1-dev
    libgpm-dev
    libjpeg62
    libjpeg62-dev
    libpng12-0
    libpng-12-0-dev
    libfeetype6
    libfreetype6-dev
    libxml2
    libxml2-dev
    zlib1g
    zlib1g-dev
    libcurl3
    libcur3-dev
    libncurses5-dev
    libperl-dev bison
    

    libpng

    tar -xf libpng-1.6.16.tar.gz
    cd libpng-1.6.16
    ./configure
    make
    make install
    

    jpegsrc

    mkdir /usr/local/jpeg9
    mkdir /usr/local/jpeg9/bin
    mkdir /usr/local/jpeg9/lib
    mkdir /usr/local/jpeg9/include
    mkdir -p /usr/local/jpeg9/man/man1
    cd /usr/local/src/
    tar -zxvf jpegsrc.v9a.tar.gz
    cd jpeg-9a/
    ./configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
    make && make install
    

    freetype

    tar -xf freetype-2.5.5.tar.gz
    cd freetype-2.5.5
    ./configure
    make && make install
    

    这是提示找不到libpng的安装位置,所以需要将libpng的bin目录配置到环境变量中

    vi /etc/profile
    LIB_PNG=/usr/local/libpng/bin
    PATH=$LIB_PNG:$PATH  
    export PATH 
    生效:./etc/profile
    

    GD库

    进入安装的源码包中,找到ext扩展包目录,进如相应扩展包目录 或者 自己下载扩展包,进入相应扩展包目录
    我的目录如下:

    cd /usr/local/src/php-5.6.19/ext/gd
    

    使用phpize生成configure

    /usr/local/php/bin/phpize
    

    使用 configure 安装配置

    ./configure --with-php-config=/usr/local/php/bin/php-config
    make && make install
    

    修改php.ini,在该文件的 Dynamic Extensions 模块下添加一行

    extension=gd.so
    

    检测gd库安装情况

    /usr/local/bin/php -m
    /usr/local/bin/php -m |grep gd
    

    安装memcache

    安装memcache之前需要安装libevent支持

    wget http://down1.chinaunix.net/distfiles/libevent-2.0.21-stable.tar.gz
    tar -zxvf libevent-2.0.21-stable.tar.gz
    cd libevent-2.0.21-stable
    ./configure --prefix=/usr/local/libevent
    make && make install
    

    接下来安装扩展包

    下载memcache
    解压
    进入目录
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
    make
    

    做到这一步应该会报错,未报错直接跳过。错误内容大致如下:

    /usr/local/src/memcache-2.2.3/memcache.c: 在函数‘php_mmc_connect'中:
    /usr/local/src/memcache-2.2.3/memcache.c:1902: 错误:提供给函数‘zend_list_insert'的实参太少
    /usr/local/src/memcache-2.2.3/memcache.c:1919: 错误:提供给函数‘zend_list_insert'的实参太少
    /usr/local/src/memcache-2.2.3/memcache.c: 在函数‘zif_memcache_add_server'中:
    /usr/local/src/memcache-2.2.3/memcache.c:1975: 错误:提供给函数‘zend_is_callable'的实参太少
    /usr/local/src/memcache-2.2.3/memcache.c:2003: 错误:提供给函数‘zend_list_insert'的实参太少
    /usr/local/src/memcache-2.2.3/memcache.c: 在函数‘zif_memcache_set_server_params'中:
    /usr/local/src/memcache-2.2.3/memcache.c:2059: 错误:提供给函数‘zend_is_callable'的实参太少
    /usr/local/src/memcache-2.2.3/memcache.c: 在函数‘mmc_find_persistent'中:
    /usr/local/src/memcache-2.2.3/memcache.c:2159: 错误:提供给函数‘zend_list_insert'的实参太少
    /usr/local/src/memcache-2.2.3/memcache.c:2177: 错误:提供给函数‘zend_list_insert'的实参太少
    make: *** [memcache.lo] 错误 1
    

    纠错方式:

    根据错误,进行修改:
    vi memcache.c
    将所有的:zend_list_insert(pool, le_memcache_pool); 
    改为:zend_list_insert(pool, le_memcache_pool TSRMLS_CC);
    将所有的:zend_list_insert(mmc, le_pmemcache);
    改为:zend_list_insert(mmc, le_pmemcache TSRMLS_CC);
    将所有的:if (!zend_is_callable(failure_callback, 0, NULL))
    改为:if (!zend_is_callable(failure_callback, 0, NULL, NULL))
    

    vim 修改方式

    全部替换
    %s/old/new/g
    

    修改完成后,重新make编译:

    make && make install
    

    成功则显示

    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
    

    接下来修改php.ini配置文件,增加extension=memcache.so即可,重启服务器

    注意:其他扩展库依据以上步骤即可

    虚拟机设置

    编辑apache服务器的配置文件,开启扩展模块vhost,即去除#号即可

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    

    http.conf 同级目录下,extra目录,vim httpd-vhosts.conf

    <Directory "/usr/local/apache/docs/wbl">
         Options Indexes
         AllowOverride None
         Require all granted
    </Directory>
     
    <VirtualHost 172.2.2.33:80>
         ServerAdmin webmaster@dummy-host2.example.com
         DocumentRoot "/usr/local/apache/docs/wbl"
         ServerName wbl.wbl.com
         ErrorLog "logs/wbl.wbl.com-error_log"
         CustomLog "logs/wbl.wbl.com-access_log" common
    </VirtualHost>
    

    主机电脑设置。我的是OSX系统

    vim /etc/hosts
    加入
    172.2.2.33  wbl.wbl.com
    

    重启Apache即可,直接在网页上查看即可

    相关文章

      网友评论

          本文标题:Ubuntu下的LAMP环境编译安装

          本文链接:https://www.haomeiwen.com/subject/yarldttx.html