• 221源码编译安装LAMP


     

    编译安装LAMP所需要及其所使用的源码版本:

    httpd version:httpd-2.4.16

    apr version:apr-1.5.2

    pcre version:pcre-8.37

    apr-util version:apr-util-1.5.4

    mysql version:mysql-5.6.26

    php version:php-5.6.13

    1 安装之前注意事项

    1.1 LAMP源码编译的基础环境

    [root@xuegod1 ~]# cat /proc/version

    Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016

    [root@xuegod1 ~]# uname -a

    Linux xuegod1.cn 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

    6系列64位系统

    1.2 确保系统的干净的系统,不要和现在源码编译安装的软件冲突

    不要在一个系统上同时存在 RPM-Apache+源码-Apache

    建议在编译之前,把开发包组安装:

    "Development Tools"和 "Development Libraries"

    [root@xuegod1 ~]# yum groupinstall "Development Tools" "Development Libraries"  [root@xuegod1 ~]# yum install gcc gcc-c++ openssl-devel -y

    所有软件

    [root@xuegod1 ~]# ls

    apr-1.5.2.tar.gz        httpd-2.4.16.tar.bz2  pcre-8.37.tar.bz2

    apr-util-1.5.4.tar.bz2  mysql-5.6.26.tar.gz   php-5.6.13.tar.bz2

    1.3 apr和apr-util依赖

    apr和apr-util独立编译

    [root@xuegod1 ~]# tar xf apr-1.5.2.tar.gz -C /usr/local/src/ && tar xf apr-util-1.5.4.tar.bz2 -C /usr/local/src/

    [root@xuegod1 ~]# cd /usr/local/src/apr-1.5.2/ && ./configure --prefix=/usr/local/apr && make -j 4 && make install

    [root@xuegod1 apr-util-1.5.4]# cd ../apr-util-1.5.4/ && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make -j 4 && make install

    [root@xuegod1 ~]# cd && tar xf pcre-8.37.tar.bz2 -C /usr/local/src/

    [root@xuegod1 ~]# cd /usr/local/src/pcre-8.37/ && ./configure --prefix=/usr/local/pcre && make -j 4 && make install && cd

    2 Apache源码编译

    2.1 依赖环境安装完成,开始编译安装apache

    [root@xuegod1 ~]# tar xvf httpd-2.4.16.tar.bz2 -C /usr/local/src/ && cd /usr/local/src/http-2.4.16

    [root@xuegod1 httpd-2.4.16]# ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-rewrite --enable-ssl --with-pcre=/usr/local/pcre/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event && make -j 4 && make install

    --prefix=/usr/local/apache2.4 #安装路径

    --enable-so #支持动态加载模块

    --enable-rewrite #支持网站地址重写

    --enable-ssl #支持SSL加密

    --with-pcre=/usr/local/pcre #pcre路径

    --with-apr=/usr/local/apr #apr路径

    --with-apr-util=/usr/local/apr-util #apr-util路径

    一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式。它们分别是prefork,worker和event,它们同时也代表这Apache的演变和发展。

    2.2 配置Apache的启动脚本

    [root@xuegod1 ~]# cp /usr/local/apache2.4/bin/apachectl  /etc/init.d/apache2.4

    若是你按照我们实验环境安装了桌面,那么需要停掉httpd服务,若不是,则不需要

    [root@xuegod1 ~]# /etc/init.d/httpd stop

    [root@xuegod1 ~]# chkconfig httpd off

    编辑启动脚本文件

    [root@xuegod1 ~]# vim /etc/init.d/apache2.4

    #!/bin/sh

    # chkconfig: 2345 64 36

    #这个是启动级别的服务,2345是指那些级别启动,64是开启顺序,应该在network服务的后面,36是关闭顺序,应该在network的前

    面,这里并不是注释

    #默认network的是:2345 10 90

    # description: Apache2.4.16 start script #描述字段,有了这两个字段,就可以用chkconfig命令控制

    [root@xuegod1 ~]# service apache2.4 start

    [root@xuegod1 ~]# chkconfig apache2.4 on

    2.3 Apache安装完成需要注意的地方

    [root@xuegod1 ~]# ps -aux|grep apache  //源码编译apache,运行用户为deamon

    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

    root      56746  0.0  0.0  72236  2220 ?        Ss   20:10   0:00 /usr/local/apache2.4/bin/httpd -k start

    daemon    56747  0.0  0.0 416496  4108 ?        Sl   20:10   0:00 /usr/local/apache2.4/bin/httpd -k start

    daemon    56748  0.0  0.0 416496  4112 ?        Sl   20:10   0:00 /usr/local/apache2.4/bin/httpd -k start

    daemon    56749  0.0  0.0 416496  4116 ?        Sl   20:10   0:00 /usr/local/apache2.4/bin/httpd -k start

    root      56836  2.0  0.0 103316   840 pts/0    S+   20:11   0:00 grep apache

    [root@xuegod1 ~]# id daemon   //编译安装运行用户身份是daemon

    uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)

    [root@xuegod1 ~]# useradd -M -s /sbin/nologin apache  //创建一个用户用来运行apache

    [root@xuegod1 ~]# vim /usr/local/apache2.4/conf/httpd.conf  //修改配置文件改变apache运行身份

    User apache #运行用户

    Group apache #运行组,创建apache的时候已经即时创建了apache这个组

    [root@xuegod1 ~]# id apache

    uid=500(apache) gid=500(apache) groups=500(apache)

    更改目录权限

    [root@xuegod1 ~]# chown -R apache:apache /usr/local/apache2.4/  //默认是root,改为apache

    3 MYSQL源码编译

    Mysql 5.5.15 以后,使用了新的 cmake 编译方式,所以先安装 cmake。 以前的版本直接 configure然后make ,make install ,对于5.5.16的后续版

    本,将需要先使用cmake之后再make,然后make install

    CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的 makefile 或者 project 文件,能

    测试编译器所支持的 C++特性,类似 UNIX 下的automake。 只是 CMake 的建构档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标

    准的建构档(如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境

    (IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    3.1 解决依赖

    [root@xuegod1 ~]# yum install -y cmake ncurses-devel  //gcc等相关在编译apache已安装

    3.2 编译安装mysql

    安装之前使用 yum remove mysql 确保没有安装MySQL

    [root@xuegod1 ~]# yum remove mysql* -y

    [root@xuegod1 ~]# yum remove -y mysql

    [root@xuegod1 ~]# rpm -qa|grep mysql

    mysql-libs-5.1.73-7.el6.x86_64

    [root@xuegod1 ~]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

    [root@xuegod1 ~]#

    [root@xuegod1 ~]# tar xf mysql-5.6.26.tar.gz -C /usr/local/src/ ; cd /usr/local/src/mysql-5.6.26

    [root@xuegod1 mysql-5.6.26]# useradd -M -s /sbin/nologin mysql    //创建mysql运行用户

    [root@XueGod63 mysql-5.6.26]# cmake \

     -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

     -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

     -DDEFAULT_CHARSET=utf8 \

     -DDEFAULT_COLLATION=utf8_general_ci \

     -DWITH_EXTRA_CHARSETS=all \

     -DWITH_MYISAM_STORAGE_ENGINE=1\

     -DWITH_INNOBASE_STORAGE_ENGINE=1\

     -DWITH_MEMORY_STORAGE_ENGINE=1\

     -DWITH_READLINE=1\

     -DENABLED_LOCAL_INFILE=1\

     -DMYSQL_DATADIR=/usr/local/mysql/data \

     -DMYSQL-USER=mysql

    ***********************************参数解释******************************************************************************

    DCMAKE_INSTALL_PREFIX #制定mysql的安装根目录,目录在安装的时候会自动创建,这个值也可以在服务器

    启动时,用--basedir来设置

    DMYSQL_UNIX_ADDR #服务器与本地客户端进行通信的Unix套接字文件,必须是绝对路径,默认位

    置/tmp/mysql.sock,可以在服务器启动时,用--socket改变

    DDEFAULT_CHARSET #mysql默认使用的字符集,不指定将默认使用Latin1西欧字符集

    DDEFAULT_COLLATION #默认字符校对

    DWITH_EXTRA_CHARSETS #制定mysql拓展字符集,默认值也是all支持所有的字符集

    DWITH_MYISAM_STORAGE_ENGINE

    DWITH_INNOBASE_STORAGE_ENGINE

    DWITH_MEMORY_STORAGE_ENGINE

    #静态编译MYISAM,INNOBASE,MEMORY存储引擎到MYSQL服务 器,这样MYSQL就支持这三种存储引擎

    DWITH_READLINE #支持readline库

    DENABLED_LOCAL_INFILE #允许本地倒入数据,启用加载本地数据

    DMYSQL_DATADIR #mysql数据库存放路径

    DMYSQL-USER #运行mysql的用户

     

    [root@xuegod1 mysql-5.6.26]# make -j 4 && make install

    这些编译参数的帮助寻找方法:
    http://www.mysql.com→→Documentation→→选择对应的版本(5.6)→→HTML Online→→View→→Installation & Upgrades→→Installing MySQL from Source →→MySQL Source-Configuration Options→→http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

    3.3 配置mysql

    [root@xuegod1 mysql-5.6.26]# cd && chown -R mysql:mysql /usr/local/mysql/  //属主属组更改

    [root@xuegod1 ~]# cp /usr/local/mysql/support-files/my-default.cnf  /etc/my.cnf  //覆盖原配置文件

    [root@xuegod1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //启动脚本

    [root@xuegod1 ~]# vim /etc/init.d/mysqld  //更改启动脚本中指定mysql位置

    basedir=

    datadir=

    #修改为

    basedir=/usr/local/mysql

    datadir=/usr/local/mysql/data

    [root@xuegod1 ~]# chkconfig mysqld on //开机启动

    3.4 初始化数据库

    [root@XueGod63 ~]# /usr/local/mysql/scripts/mysql_install_db \

    --defaults-file=/etc/my.cnf \

    --basedir=/usr/local/mysql/\

    --datadir=/usr/local/mysql/data/\

    --user=mysql

    #类似于在rpm安装的时候启动数据库弹出的初始化消息

    等同于这样:

    [root@xuegod1 ~]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf  --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql

    出现两个OK表示安装成功

    [root@xuegod1 ~]# ls /usr/local/mysql/data/    //初始化看这个下面有无mysql和test等数据库

    ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test

    [root@xuegod1 ~]# ln -s /usr/local/mysql/bin/* /bin/ //这个里面是部分命令,让系统直接调用

    [root@xuegod1 ~]# service mysqld start     //启动数据库

    Starting MySQL..... SUCCESS!

    [root@xuegod1 ~]# mysql_secure_installation   //初始安全设置(设置root密码,123456)

    [root@xuegod1 ~]# mysql -uroot -p123456  //测试登录(OK)

    4 编译安装配置PHP

    PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。

    Apache对于php的解析,就是通过众多Module中的php Module来完成的,把php最终集成到Apache系统中,还需要对Apache进行一些必要的设置!

    4.1 解决依赖

    [root@xuegod1 ~]# yum install -y libxml2-devel

    [root@xuegod1 ~]# tar xf php-5.6.13.tar.bz2 -C /usr/local/src/ ; cd /usr/local/src/php-5.6.13

    4.2 正式安装

    [root@xuegod1 php-5.6.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php

    --prefix #指定安装路径

    --with-apxs2 #用apache的apxs工具将php编译成apache的一个模块

    --with-mysql #与mysql结合,如果不跟路径,编译出来的版本将是低版本

    --with-config-file-path #php的主配置文件php.ini路径

    看到下面一段内容,表示configure成功

    Thank you for using PHP.

    config.status: creating php5.spec

    config.status: creating main/build-defs.h

    config.status: creating scripts/phpize

    config.status: creating scripts/man1/phpize.1

    config.status: creating scripts/php-config

    config.status: creating scripts/man1/php-config.1

    config.status: creating sapi/cli/php.1

    config.status: creating sapi/cgi/php-cgi.1

    config.status: creating ext/phar/phar.1

    config.status: creating ext/phar/phar.phar.1

    config.status: creating main/php_config.h

    config.status: executing default commands

    [root@xuegod1 php-5.6.13]# make -j 4 ; make install ; cd /usr/local/src/php-5.6.13

    [root@xuegod1 php-5.6.13]# cp php.ini-production /usr/local/php/php.ini ; cd  //php配置文件

    4.3 检测编译安装结果

    只有有下面这两个文件(模块),代表我们的apache就可以支持php了

    [root@xuegod1 ~]# ll /usr/local/apache2.4/modules/httpd.exp

    -rw-r--r-- 1 apache apache 14212 Jun  7 20:04 /usr/local/apache2.4/modules/httpd.exp

    [root@xuegod1 ~]# ll /usr/local/apache2.4/modules/libphp5.so

    -rwxr-xr-x 1 root root 26411241 Jun  7 22:36 /usr/local/apache2.4/modules/libphp5.so

    4.4 配置Apache支持PHP

    [root@xuegod1 ~]# vim /usr/local/apache2.4/conf/httpd.conf

    ……

    248 <IfModule dir_module>

    249 DirectoryIndex index.html index.php #添加index.php

    250 </IfModule>

    ……

    376 AddType application/x-compress .Z

    377 AddType application/x-gzip .gz .tgz #上面两行是以前有的

    378 AddType application/x-httpd-php  .php #下面两行是添加的,需要添加以支持PHP

    379 AddType application/x-httpd-php-source  .phps

    修改完后重启一下apache服务

    [root@xuegod1 ~]# service apache2.4 restart

    测试:

    [root@xuegod1 ~]# vim /usr/local/apache2.4/htdocs/index.php

    <?php

        phpinfo();

    ?>

    然后用客户端浏览器打开此页面

  • 相关阅读:
    git修改远程仓库地址
    Result Maps collection already contains value for com.miniprogram.meirong.user.dao.UserMapper.BaseResultMap
    查看微信小程序的appID和secret
    Springboot配置fastjson开发
    本地仓库上传码云
    总结分析Java常见的四种引用
    equals和hashcode 和 ==方法说明
    关于Class.forName(className).newInstance()介绍
    Java枚举
    抽象工厂模式-与-工厂方法模式区别
  • 原文地址:https://www.cnblogs.com/hailun1987/p/6958151.html
Copyright © 2020-2023  润新知