lamp编译安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lamp编译安装相关的知识,希望对你有一定的参考价值。

lamp编译安装

================================================================================

编译安装amp

 1.编译前环境准备及相关介绍

系统环境:CentOS 6, 7

  • CentOS 6:apr, apr-util 的版本为1.3.9,不适用于httpd-2.4的编译安装;

  • CentOS 7:apr, apr-util的版本为1.4+,

(apr:简言之是为apache各程序包运行时提供的环境,可以当做是httpd的虚拟机,所以httpd是高度依赖于apr的)

  • 在生产环境中,一般不建议去编译安装,只有当默认提供的程序包不足以满足我们的需求时,即我们用到的模块没有时,才去编译安装。当然为了方便我们也可以自己制作成rpm包。

开发环境:

  任何编译安装依据的都是开发环境

  • Development Tools, 

  • Server Platform Development

各程序版本

  • httpd: 2.2, 2.4

  • php:5.3.x 5.4.x, 5.6.x

  • mysql5.1, 5.5, 5.6, 5.7, 5.8, 8.0

  • mariadb:5.x, 10.x

httpd+php结合方式

 php的编译选项:

  • Modules:--with-apxs

      httpd MPM:

         prefork:编译的是进程模型的模块

         worker, event:

             专用选项 --enable-maintainer-zts 编译的是线程模型的模块

  • ftm:--enable-fpm 


编译安装amp

编译的amp环境:

  • 在CentOS 7上编译 httpd-2.4, mariadb, php-5.4

安装次序:

  • httpd, mariadb, php 

   httpd和mariadb是无先后次序的,但是php是依赖于前面的所以要放到最后编译;


安装MariaDB:

  • 预制的包管理器格式的程序包:

      rpm包:

         os vendor:安装 mariadb-devel包,编译php时会基于此程序包 ;

         MariaDB官方

  • 通用二进制格式的程序包:展包即用,是别人已经编译好的;

  • 源码包编译:项目构建工具为cmake, 而非流行的make;



1.这里我们以CentOS 7采用通用二进制的格式编译安装mariadb,详细过程如下:


   1)首先获取mariadb的程序包,并下载到本地

[[email protected] ~]# lftp 10.1.0.1/pub
lftp 10.1.0.1:/pub/Sources/7.x86_64/mariadb> ls
-rwxr--r--    1 500      500      445617978 Nov 05  2015 mariadb-10.1.8-linux-glibc_214-x86_64.tar.gz
-rwxr--r--    1 500      500      222601284 Nov 05  2015 mariadb-5.5.46-linux-x86_64.tar.gz
lftp 10.1.0.1:/pub/Sources/7.x86_64/mariadb> pwd
ftp://10.1.0.1/pub/Sources/7.x86_64/mariadb
lftp 10.1.0.1:/pub/Sources/7.x86_64/mariadb> mget mariadb-5.5.46-linux-x86_64.tar.gz 
222601284 bytes transferred in 9 seconds (24.84M/s)                                        
lftp 10.1.0.1:/pub/Sources/7.x86_64/mariadb> bye
[[email protected] ~]# ls
anaconda-ks.cfg  mariadb-5.5.46-linux-x86_64.tar.gz # 下载的程序包 公共  模板  视频  图片  文档  下载  音乐  桌面
[[email protected] ~]# ll -h mariadb-5.5.46-linux-x86_64.tar.gz 
-rw-r--r-- 1 root root 213M 11月  5 2015 mariadb-5.5.46-linux-x86_64.tar.gz

   2)采用通用二进制的格式编译安装要求安装在/usr/local/mysql下

# 展开至/usr/local
[[email protected] ~]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
[[email protected] ~]# cd /usr/local
[[email protected] local]# ls
bin  games    lib    libexec                      sbin   src
etc  include  lib64  mariadb-5.5.46-linux-x86_64  share
# 为了方便以后的升级和管理我们这里创建一个软链接
[[email protected] local]# ln -sv mariadb-5.5.46-linux-x86_64/ mysql
"mysql" -> "mariadb-5.5.46-linux-x86_64/"
[[email protected] local]# ll
总用量 44
drwxr-xr-x.  2 root root 4096 8月  12 2015 bin
drwxr-xr-x.  2 root root 4096 8月  12 2015 etc
drwxr-xr-x.  2 root root 4096 8月  12 2015 games
drwxr-xr-x.  2 root root 4096 8月  12 2015 include
drwxr-xr-x.  2 root root 4096 8月  12 2015 lib
drwxr-xr-x.  2 root root 4096 8月  12 2015 lib64
drwxr-xr-x.  2 root root 4096 8月  12 2015 libexec
drwxr-xr-x  12 root root 4096 10月 15 15:21 mariadb-5.5.46-linux-x86_64
lrwxrwxrwx   1 root root   28 10月 15 15:26 mysql -> mariadb-5.5.46-linux-x86_64/
drwxr-xr-x.  2 root root 4096 8月  12 2015 sbin
drwxr-xr-x.  5 root root 4096 8月  22 09:16 share
drwxr-xr-x.  2 root root 4096 8月  12 2015 src

   3)因为我使用的这台CentOS 7已经安装过mariadb了,所以为了防止和系统中的起冲突,所以,我把原来系统中的移除

[[email protected] local]# rpm -q mariadb-server
mariadb-server-5.5.44-2.el7.centos.x86_64
[[email protected] local]# yum remove mariadb-server # 移除本机服务器端程序包
[[email protected] local]# rpm -q mariadb
mariadb-5.5.44-2.el7.centos.x86_64
[[email protected] local]# yum remove mariadb # 卸载客户端程序包

    4)通常我们运行mysql都需要一个普通用户,所以要创建一个叫mysql的系统用户,和系统组;并且我们要创建一个数据库目录,(实际生产环境中应该放在一个单独的存储设备并且有冗余的功能,如:RAID10),并且授权属主和属组为myaql

[[email protected] local]# id mysql # mysql 用户已经存在
uid=27(mysql) gid=27(mysql) 组=27(mysql)
[[email protected] local]# mkdir -pv /mydata/data # 创建数据库目录
mkdir: 已创建目录 "/mydata"
mkdir: 已创建目录 "/mydata/data"
[[email protected] local]# chown -R mysql.mysql /mydata/data # 授权属主属组为mysql
[[email protected] local]# ll -d /mydata/data
drwxr-xr-x 2 mysql mysql 4096 10月 15 15:54 /mydata/data

    5)接下来我们设定数据库服务器的相关文件,并且都应该以mysql的身份运行,但为了保证安全,不能让mysql有写权限,所以属主为root,属组为mysql仅有读权限。

[[email protected] local]# chown -R root.mysql ./*
[[email protected] local]# ll
总用量 44
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 bin
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 etc
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 games
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 include
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 lib
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 lib64
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 libexec
drwxr-xr-x  12 root mysql 4096 10月 15 15:21 mariadb-5.5.46-linux-x86_64
lrwxrwxrwx   1 root mysql   28 10月 15 15:26 mysql -> mariadb-5.5.46-linux-x86_64/
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 sbin
drwxr-xr-x.  5 root mysql 4096 8月  22 09:16 share
drwxr-xr-x.  2 root mysql 4096 8月  12 2015 src

  6)接下来我们要初始化mysql,即生成元数据数据库

[[email protected] local]# cd mysql/
[[email protected] mysql]# ls
bin  COPYING  COPYING.LESSER  data  EXCEPTIONS-CLIENT  include  INSTALL-BINARY  lib  man  mysql-test  README  scripts  share  sql-bench  support-files

# 使用scripts/mysql_install_db 生成元数据数据库
[[email protected] mysql]# ./scripts/mysql_install_db --help # 查看帮助
Usage: ./scripts/mysql_install_db [OPTIONS]
  --basedir=path       The path to the MariaDB installation directory.
  --builddir=path      If using --srcdir with out-of-directory builds, you
                       will need to set this to the location of the build
                       directory where built files reside.
  --cross-bootstrap    For internal use.  Used when building the MariaDB system
                       tables on a different host than the target.
  --datadir=path       The path to the MariaDB data directory.
  --defaults-extra-file=name
                       Read this file after the global files are read.
  --defaults-file=name Only read default options from the given file name.
  --force              Causes mysql_install_db to run even if DNS does not
                       work.  In that case, grant table entries that
                       normally use hostnames will use IP addresses.
  --help               Display this help and exit.                     
  --ldata=path         The path to the MariaDB data directory. Same as
                       --datadir.
  --no-defaults        Don‘t read default options from any option file.
  --defaults-file=path Read only this configuration file.
  --rpm                For internal use.  This option is used by RPM files
                       during the MariaDB installation process.
  --skip-name-resolve  Use IP addresses rather than hostnames when creating
                       grant table entries.  This option can be useful if
                       your DNS does not work.
  --srcdir=path        The path to the MariaDB source directory.  This option
                       uses the compiled binaries and support files within the
                       source tree, useful for if you don‘t want to install
                       MariaDB yet and just want to create the system tables.
  --user=user_name     The login username to use for running mysqld.  Files
                       and directories created by mysqld will be owned by this
                       user.  You must be root to use this option.  By default
                       mysqld runs using your current login name and files and
                       directories that it creates will be owned by you.

All other options are passed to the mysqld program

# 指明用户,位置,生成元数据库数据文件,
[[email protected] mysql]# ./scripts/mysql_install_db --datadir=/mydata/data --user=mysql --skip-name-resolve
[[email protected] mysql]# ls /mydata/data/  # 查看生成的文件如下
aria_log.00000001  aria_log_control  mysql  performance_schema  test

   7)如上mysql数据库就已经创建完成了,接下来我们要为数据库提供主配置文件,需要复制示例配置文件到/etc/my.cnf/目录下,修改即可;

[[email protected] mysql]# pwd
/usr/local/mysql
[[email protected] mysql]# ls
bin             EXCEPTIONS-CLIENT  man         share
COPYING         include            mysql-test  sql-bench
COPYING.LESSER  INSTALL-BINARY     README      support-files 
data            lib                scripts
[[email protected] mysql]# ls support-files/ # 配置文件示例
binary-configure        my-large.cnf         mysql-log-rotate
magic                   my-medium.cnf        mysql.server
my-huge.cnf             my-small.cnf         SELinux
my-innodb-heavy-4G.cnf  mysqld_multi.server

# 复制示例配置文件到/etc/my.cnf.d下并命名为server.cnf(只要以.cnf结尾即可)
[[email protected] mysql]# cp support-files/my-large.cnf /etc/my.cnf.d/server.cnf 
[[email protected] mysql]# vim /etc/my.cnf.d/server.cnf  # 编辑文件如下图

 技术分享


    8)为mysql提供sysv服务脚本

[[email protected] mysql]# pwd
/usr/local/mysql
[[email protected] mysql]# ls support-files/
binary-configure  my-innodb-heavy-4G.cnf  my-small.cnf         mysql.server # 脚本文件
magic             my-large.cnf            mysqld_multi.server  SELinux
my-huge.cnf       my-medium.cnf           mysql-log-rotate 

[[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld #复制脚本
[[email protected] mysql]# chmod +x /etc/rc.d/init.d/mysqld # 添加执行权限

#添加至服务列表
[[email protected] mysql]# chkconfig --add mysqld

    9)接下来我们就可以启动服务了

[[email protected] mysql]# service mysqld start
Starting MySQL... SUCCESS!  # 启动成功
[[email protected] mysql]# ss -tnl # 查看端口3306
State       Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
LISTEN      0      128             127.0.0.1:9000                                *:*                  
LISTEN      0      50                      *:3306                                *:*                  
LISTEN      0      5           192.168.122.1:53                                  *:*                  
LISTEN      0      128                     *:22                                  *:*                  
LISTEN      0      128             127.0.0.1:631                                 *:*                  
LISTEN      0      100             127.0.0.1:25                                  *:*                  
LISTEN      0      128             127.0.0.1:6010                                *:*                  
LISTEN      0      128                    :::80                                 :::*                  
LISTEN      0      128                    :::22                                 :::*                  
LISTEN      0      128                   ::1:631                                :::*                  
LISTEN      0      100                   ::1:25                                 :::*                  
LISTEN      0      128                   ::1:6010                               :::*
# 客户端程序文件在/usr/local/mysql/bin/mysql,可以连接上去
[[email protected] mysql]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.46-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]>

   10)为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下配置:


  输出mysql的man手册至man命令的查找路径:

      编辑/etc/man_db.conf添加如下图所示内容

技术分享

  • 出mysql的头文件至系统文件路径/usr/include

[[email protected] mysql]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
"/usr/include/mysql" -> "/usr/local/mysql/include/"
  • 输出mysql的库文件给系统库查找路径:

       # echo ‘/usr/local/mysql/lib‘ > /etc/ld.so.conf.d/mysql.conf

     而后让系统重新载入系统库

       # ldconfig

  • 修改PATH环境变量,让系统可以直接使用mysql的相关命令。 

[[email protected]~]# cat << eof > /etc/profile.d/mysql.sh
> PATH=$PATH:/usr/local/mysql/bin
> eof
[[email protected] profile.d]# cat mysql.sh 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

 如上整个编译过程就已经完成了,直接运行命令即可。。。

 总结过程如下:

技术分享


2.httpd-2.4编译安装

技术分享


3.php5编译安装

技术分享







以上是关于lamp编译安装的主要内容,如果未能解决你的问题,请参考以下文章

一键安装lamp环境 centos

LAMP环境编译安装

源码编译安装LAMP

Linux自学笔记——手动编译安装LAMP

yum 安装 lamp

详解LAMP源码编译安装