阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 6.7编译安装LAMP 详解

167次阅读
没有评论

共计 19271 个字符,预计需要花费 49 分钟才能阅读完成。

一、所需软件下载

测试机环境为:

CentOS 6.7 编译安装 LAMP 详解

Httpd2.4 下载:http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.25.tar.bz2

Apr 下载:http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.bz2

Apr-util 下载:

http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2

Mariadb 10.1.21 下载:https://downloads.mariadb.org/ 官网下载目前不知道什么原因下载不了,需要通过特殊渠道(你懂得)来获取最新的软件。

php5.6.30 下载:http://php.net/get/php-5.6.30.tar.bz2/from/a/mirror

目前最新版已到 7.1.2 还是保守一点选择了 5.6 的版本。编译 php 时会依赖到其他的包,所以提前通过 yum 安装

1 yum install libxml2-devel bzip2-devellibmcrypt -y

Xcache php 加速工具 下载:http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz

编译 xcache 需要依赖的包有 m4 和 autoconf 两个包

1 yum install m4 autoconf -y

phpmyadmin 下载:

https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.zip

二、httpd 安装

CentOS 6.7 中安装的 apr 版本较低,编译 httpd2.4 所需较新的版本,而直接通过 yum 升级系统现有版本 apr 包时可能会将其他依赖此程序包的软件,因为 apr 的升级造成无法启动,所以保险起见自己手动编译新版本。

1、apr 安装

~]# tar –jxf apr-1.5.2.tar.bz2 –C /usr/local/src
~]# tar –jxf apr-util-1.5.4.tar.bz2 –C /usr/local/src
~]# cd /usr/local/src/apr-1.5.2
~]# ./confirure –prefix=/usr/local/apr
~]# make && make install    #apr 安装完成
~]# cd /usr/local/src/apr-util-1.5.4
~]# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr  #with-apr 参数指定编译 apr-util 时所依赖的程序包,如不指定则编译时会查找系统默认的安装路径去查找。
~]# make && make install

很多人都会有疑问 apr 到底有什么作用,为什么每次编译都要用到这个包?

APR(Apache portable Run-time libraries,Apache 可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。

APR 最大的作用就是 socket 调度。

2、httpd 安装

将下载的 httpd-2.4.25 解压至 /usr/local/src 目录中

~]# tar –jxf httpd-2.4.25.tar.bz2 –C /usr/local/src
~]# cd /usr/local/src/httpd-2.4.25
~]# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/apache–enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/local/apr–with-apr-util=/usr/local/apr-util –enable-modules=most –enable-mpms-shared=all–with-mpm=prefork
~]# make –j 4 && make install
# 安装完成之后进行启动前配置,添加启动用户和组
~]# groupadd –r –g 80 apache
~]# useradd –r –g apache –u 80 apache
# 为 apache 提供服务脚本
~]# vim /etc/rc.d/init.d/apache
#!/bin/bash
#
#httpd        Startup script for theApache HTTP Server
#
#chkconfig: – 85 15
#description: Apache is a World Wide Web server. It is used to serve \
#        HTML files and CGI.
#processname: httpd
# config:/etc/httpd/conf/httpd.conf
# config:/etc/sysconfig/httpd
#pidfile: /var/run/httpd.pid
 
# Sourcefunction library.
./etc/rc.d/init.d/functions
 
if [-f/etc/sysconfig/httpd]; then
        . /etc/sysconfig/httpd
fi
 
# Starthttpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-“C”}
 
# Thiswill prevent initlog from swallowing up a pass-phrase prompt if
# mod_sslneeds a pass-phrase from the user.
INITLOG_ARGS=””
 
# SetHTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# withthe thread-based “worker” MPM; BE WARNED that some modules may not
# workcorrectly with a thread-based MPM; notably PHP will refuse to start.
 
# Path tothe apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
 
start() {
  echo -n $”Starting $prog: “
  LANG=$HTTPD_LANG daemon –pidfile=${pidfile}$httpd $OPTIONS
  RETVAL=$?
  echo
  [$RETVAL = 0] && touch${lockfile}
  return $RETVAL
}
 
stop() {
  echo -n $”Stopping $prog: “
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [$RETVAL = 0] && rm -f ${lockfile}${pidfile}
}
reload(){
    echo -n $”Reloading $prog: “
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t>&/dev/null; then
        RETVAL=$?
        echo $”not reloading due toconfiguration syntax error”
        failure $”not reloading $httpd dueto configuration syntax error”
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}
 
# See howwe were called.
case”$1″ in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [-f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
  *)
  echo $”Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}”
  exit 1
esac
 
exit $RETVAL
~]# chmod +x /etc/rc.d/init.d/apache
~]# chkconfig –add apache
~]# service apache start        #测试启动是否成功

默认情况下系统防火墙会将 80 端口禁止通信,网上好多编译安装时,为了方便都会将防火墙关闭,我觉得生产环境中关闭防火墙毕竟不太安全,估计也没人这么干,现在就将用到的 80 端口以及 mariadb 和 php 用到的 3306、9000 端口都开放。

~]# iptables –I INPUT –p ctp –m multiport –dports80,8080,3306,9000 –m state –state NEW,ESTABLISHED –j ACCEPT
# 注:防火墙策略一般是自上而下审核,所以为了避免与其他策略冲突,直接将此条策略加入到最上方。
~]# setenforce 0    #设置 selinux 为 Permissive 模式,后续可能会将 htdocs 目录指向其他路径,如果不设为 Permissive 会无法访问。

最后在浏览器中填入测试机的 IP 地址,配置成功会有以下显示。

CentOS 6.7 编译安装 LAMP 详解

下面关于 LAMP 相关 的内容你可能也喜欢

LAMP 平台安装 Xcache 和 Memcached 加速网站运行  http://www.linuxidc.com/Linux/2015-06/118835.htm

CentOS 7 下搭建 LAMP 平台环境  http://www.linuxidc.com/Linux/2015-06/118818.htm

CentOS 6.5 系统安装配置 LAMP(Apache+PHP5+MySQL)服务器环境 http://www.linuxidc.com/Linux/2014-12/111030.htm

CentOS 7.2 yum 安装 LAMP 环境  http://www.linuxidc.com/Linux/2016-11/136766.htm

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

LAMP 结合 NFS 构建小型博客站点  http://www.linuxidc.com/Linux/2015-08/121029.htm

CentOS7 下安装部署 LAMP 环境  http://www.linuxidc.com/Linux/2016-04/130653.htm

Ubuntu Server 14.04 LTS 下搭建 LAMP 环境图文详解  http://www.linuxidc.com/Linux/2016-12/138758.htm

Ubuntu Server 16.04 下配置 LAMP 环境 http://www.linuxidc.com/Linux/2016-12/138757.htm

Ubuntu 16.04 搭建 LAMP 开发环境 http://www.linuxidc.com/Linux/2016-10/136327.htm

三、mariadb 安装

首先将 mysql 用户 mysql 组。

~]# groupadd –r –g 36 mysql
~]# useradd –r –g mysql –u 36 mysql

此处使用的是二进制格式的程序包,解压至特定路径后简单配置后即可使用。

在生产环境当中数据库文件会单独存放在一个较大的空间当中,在此测试机中模拟有两块硬盘,在两块硬盘当中各划分出 50G 的空间来组成逻辑卷来存放数据文件,下边就来进行具体操作。

~]# yum install lvm2                #此步如果系统中已安装 lvm 管理工具可跳过
~]# pvcreate /dev/sd{a,b}3    #将硬盘 a,b 中的分区添加到物理卷
~]# vgcreate –s 16M datavg /dev/sd{a,b}3    #将物理卷中的两块物理卷加入到 datavg 物理卷组中
~]# lvcreate –L 50G –n marialv datavg          #将物理卷组中分出 50G 空间来创建 marialv 逻辑卷
~]# mkfs –t ext4 –m 1 –L“mariadata”–b 2048/dev/datavg/marialv  #格式化 marialv 逻辑卷
~]# mount /dev/datavg/marialv /data/
~]# mkdir /data/mariadb –p            #创建数据存放路径
~]# chown mysq:mysql /data/mariadb #更改 mariadb 目录的属组属主为 mysql
# 至此数据存放位置准备完毕,如果需要开机挂载此目录则需要修改 /etc/fstab 文件
~]# tar –zxf mariadb-10.1.21-linux-x86_64.tar.gz –C/usr/local
~]# cd /usr/local
~]# ln –s mariadb-10.1.21 mysql            #默认安装配置都要 mysql 目录中,所以需要将解压后的数据库做一个链接,也方便日后数据库升级,直接将链接更新即可。
~]# cd mysql
~]# chown –R root:mysql ./*                    #将程序包中的所有文件属主属组修改为 root 用户 mysql 组
~]# scripts/mysql_install_db  –datadir=/data/mariadb –user=mysql  #此步骤需要注意,mysql_install_db 只能在 scripts 目录中执行,执行完毕之后如果不出意外安装完成了 o(╯□╰)o

先不要急着运行,后续还要有点小调整,因为 mariadb 还木有配置文件和启动脚本呢!下边就来将这两项做好。

还是在 mysql 目录中操作,这点需要注意

mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld  #添加启动脚本
mysql]# chkconfig –add mysqld
mysql]# mkdir /etc/mariadb
mysql]# cp support-files/my-larg.cnf  /etc/mariadb/my.cnf
# 在 support-files 目录中提供了三个针对不同硬件的配置文件,可以根据自己系统硬件的不同来自行选配,这里选择的是 my-larg.cnf
# 编辑 my.cnf 并添加以下三个选项
mysql]# vim /etc/mariadb/my.cnf
 
[client]
#password  = your_password
port        = 3306
#socket    = /tmp/mysql.sock
socket      = /data/mariadb /mysql.sock
 
# Herefollows entries for some specific programs
# TheMariaDB server
[mysqld]
port        = 3306
socket = /data/mariadb /mysql.sock
#…省略其他不变的选项
thread_concurrency= 8                  #这个参数可以根据自己服务器硬件配置来更改,一般为 CPU 个数乘以 2
datadir=/data/mariadb                      #数据库存放路径
innodb_file_per_table= on              #每个数据表存储类型都是独立的
skip_name_resolve = on                    #跳过数据库反向解析主机名
 
mysql]#bin/mysql_secure_installation        #可以为 root 设置密码,删除匿名用户等一些操作
配置完成可以运行 service mysqld start 启动服务
 ~]#ss –nat|grep 3306    #可以看到端口已经启动

CentOS 6.7 编译安装 LAMP 详解

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-03/141244p2.htm

四、PHP 安装

PHP 的编译安装方式可以根据 httpd 编译的方式不同也会有不同的编译方式,之前的 httpd mpm 采用了 event 模式编译,此处的 php 也采用 modules 模式编译。

安装之前先解决依赖关系,安装 bzip2-devel、libmcrypt-devel、libxml2-devel 程序开发包。

~]# yum install bzip-devel libmcrypt-devel libxml2-devel –y
~]# tar -Jxf php-5.6.30.tar.xz -C /usr/local/src    #解压到 src 目录中
~]# cd /usr/local/src/php-5.6.30
~]# ./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql–with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir–with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –enable-sockets–with-apxs2=/usr/local/apache/bin/apxs –with-mcrypt –with-config-file-path=/etc/php–with-config-file-scan-dir=/etc/php/php.d –with-bz2 –enable-maintainer-zts  #这堆参数太特么的烧脑了,背了两天 o(╯□╰)o

下边来介绍下这些参数都有什么作用。

prefix:指定安装路径

with-mysql:指明依赖 mysql 位置

with-openssl:在依赖 openssl 模块时,是系统默认的安装位置时不用指定,可以自己找到。

with-mysqli:对于 Mysql 数据库交互的另一种接口。

enable-mbstring:启动多字节字符的支持,对于中文务必开启。

with-freetype-dir:指明字体格式,让 php 页面支持更多字体显示。

with-jpeg-dir:可以使用 php 处理 jpeg 格式的图片。

with-png-dir:可以使用 php 处理 png 格式的图片。

with-zlib:启动 zlib 压缩传输功能。

with-libxml-dir:支持处理 XML 格式文档。

enable-xml:启用 xml 功能。

enable-sockets:启用 php 支持基于 socket 方式进行通信。

with-apxs2:指定 httpd 第三方模块编译工具。

with-mcrypt:支持加解密库。

with-config-file-scan-dir:指定 PHP 所有配置文件存放路径。

with-bz2:支持 bz2 加密。

enable-maintainer-zts:如果 httpd 编译是使用 prefork 模式,此项即可省略,若是使用 event 或 worker 模式编译,此参数务必添加。

php]# make –j 4&& make install

# 编译完成之后使用 httpd–M 即可看到 php5 模块已经加入到 httpd 中。
php]# cp php.ini-production/etc/php/php.ini  #为 php 添加配置文件
~]# vim/etc/apache/httpd.conf  #修改 httpd 配置文件以让其支持 php 格式的文件
# 查找 AddType 并在下边添加两条配置信息
AddTypeapplication/x-httpd-php .php
AddTypeapplication/x-httpd-php-source .phps
# 查找 DirectoryIndex 在 index.html 前添加 index.php
~]# serviceapache reload    #httpd 重读配置文件
~]# mv/usr/local/apache/htdocs/index.html /usr/local/apache/htdocs/index.php
<?php
  $link = mysql_connect(‘127.0.0.1’,’testuser’,’testuser’);
  If($link)
    echo“Mysql connect success !”;
  else
    echo“Mysql connect error !”;
  mysql_close();
  phpinfo();
?>

在浏览器中键入测试机的 IP 地址,正常情况下出现此测试页面,证明安装成功!

CentOS 6.7 编译安装 LAMP 详解

五、安装 Xcache 为 PHP 提速

~]# tar -zxf xcache-3.2.0.tar.gz -C /usr/local/src/
~]# cd /usr/local/src/xcache-3.2.0/
xcache-3.2.0]# /usr/local/php/bin/phpize              #使用 php 的 phpize 工具生成 configure 编译脚本
xcache-3.2.0]# ./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config
xcache-3.2.0]# make && make install
# 注:安装结束时会有以下信息:
#Installing sharedxtensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226
# 将路径复制下来

接下来将 php 于 xcache 整合

xcache-3.2.0]#cp xcache.ini /etc/php/php.d/

xcache-3.2.0]#vim /etc/php/php.d/xcache.ini
# 找到 zend_extension 开头的行,修改为如下行:
zend_extension =/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xcache.so

注意:如果 php.ini 文件中有多条 zend_extension 指令行,要确保此新增的行排在第一位。

CentOS 6.7 编译安装 LAMP 详解

至此以 modules 模式安装 php 完成!!你以为万事大吉了???骚年你还是太年轻了,下边再来试试 fcgi 模式重新编译安装 php!!(你以为这半个月我闲着没事干呢,哼!)

六、开始

歇会!就这么任性!还得新开一段,嘿嘿!

七、fpm 模式编译安装 PHP

http 为了避免冲突可以重新编译一次,方法与之前相同此处不做说明,但要注意一点的是,如果要更改之前的安装路径什么的,最好要 make clean 一下。

下边来重新编译 php:

php]# ./configure –prefix=/usr/local/php5.6 –with-mysql=/usr/local/mysql–with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-mbstring –with-freetype-dir–with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –enable-sockets–enable-fpm –with-mcrypt –with-config-file-path=/etc/php5.6 –with-config-file-scan-dir=/etc/php5.6/php.d–with-bz2

可以看出来 fpm 模式编译则不需要 apxs 和 maintainer 两个参数

php]# make –j 4 && make install
php]# cp php.ini-production /etc/php5.6/php.ini

该方式安装的 php 是以独立服务的方式向外提供服务的,所以需要为其提供启动脚本和配置文件。

配置文件在编译包的 sapi/fpm 目录中已经存在,直接复制到 /etc/rc.d/init.d 目录中即可

php]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
php]# chmod +x /etc/rc.d/init.d/php-fpm                #为脚本设置执行权限
php]# chkconfig –add php-fpm
php]# cp /usr/local/php5.6/etc/php-fpm.conf.default/usr/local/php5.6/etc/php-fpm.conf
# 为启动脚本添加配置文件,并添加和修改配置信息
php5.6]# vim /usr/local/php5.6/etc/php-fpm.conf
pm.max_children= 50
pm.start_servers= 5
pm.min_spare_servers= 2
pm.max_spare_servers= 8
[global]
; Pid file
; Note: thedefault prefix is /usr/local/php/var
; Default Value:none
;pid =run/php-fpm.pid
pid = /usr/local/php5.6/var/run/php-fpm.pid
php 配置完成启动试试
~]# service php-fpm start    #不出意外的话启动成功

下边配置 httpd 的配置选项来让其支持 php 格式文件

1 ~]# vim /etc/apache/httpd.conf

# 查找到 mod_proxy 和 mod_proxy_fcgi 两个模块将其注释去掉,启动该功能,
LoadModule proxy_modulemodules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
 
AddTypeapplication/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
# 保存退出,重新载入 httpd 配置
~]# service apache reload

哦对了,还有一项特别重要的事项:fpm 模式编译的 Php 向 httpd 提供服务时,此时的 httpd 则相当于服务器中的前端,当接收到 php 动态请求时则通过反向代理配置将请求送到后端 Php 服务器当中处理,下面来启用 httpd 中的虚拟机配置,并将虚拟机配置反向代理

1. httpd2.4 配置虚拟主机的操作与 2.2 有所不同,2.4 当中将虚拟主机设置为单独的模块来加载,需要启用而且要将 DocumentRoot 中心主机禁用,下边贴出配置:

~]# vim /etc/apache/httpd.conf
#DocumentRoot “/usr/local/apache/htdocs”  #该项注释
# Virtual hosts
Include /etc/apache/extra/httpd-vhosts.conf  #将该项启用
# 保存退出

2. 编辑 /etc/apache/extra/httpd-vhosts.conf 虚拟主机配置文件,httpd2.4 的虚拟主机都在此文件中配置

<VirtualHost*:80>
DocumentRoot “/usr/local/apache/htdocs/”
ServerName www.testphp.com
ErrorLog “logs/testphp.com-error_log”
CustomLog “logs/testphp.com-access_log” combined
<Directory“/usr/local/apache/htdocs”>
      Options None
      AllowOverride None
      <RequireAll>
      Require allgranted
      <RequireAll>
ProxyRequests Off                #关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1
</Directory>
</VirtualHost>

保存退出后,重新加载 httpd 配置

至此所有配置以全部完成,这半个多月的煎熬总算是整理完成了,后续看看将 https 加入到中间来,进一步扩充其中的功能,先到这吧,歇了!

CentOS 6.7 编译安装 LAMP 详解

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141244.htm

一、所需软件下载

测试机环境为:

CentOS 6.7 编译安装 LAMP 详解

Httpd2.4 下载:http://mirrors.cnnic.cn/apache//httpd/httpd-2.4.25.tar.bz2

Apr 下载:http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.bz2

Apr-util 下载:

http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2

Mariadb 10.1.21 下载:https://downloads.mariadb.org/ 官网下载目前不知道什么原因下载不了,需要通过特殊渠道(你懂得)来获取最新的软件。

php5.6.30 下载:http://php.net/get/php-5.6.30.tar.bz2/from/a/mirror

目前最新版已到 7.1.2 还是保守一点选择了 5.6 的版本。编译 php 时会依赖到其他的包,所以提前通过 yum 安装

1 yum install libxml2-devel bzip2-devellibmcrypt -y

Xcache php 加速工具 下载:http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz

编译 xcache 需要依赖的包有 m4 和 autoconf 两个包

1 yum install m4 autoconf -y

phpmyadmin 下载:

https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.zip

二、httpd 安装

CentOS 6.7 中安装的 apr 版本较低,编译 httpd2.4 所需较新的版本,而直接通过 yum 升级系统现有版本 apr 包时可能会将其他依赖此程序包的软件,因为 apr 的升级造成无法启动,所以保险起见自己手动编译新版本。

1、apr 安装

~]# tar –jxf apr-1.5.2.tar.bz2 –C /usr/local/src
~]# tar –jxf apr-util-1.5.4.tar.bz2 –C /usr/local/src
~]# cd /usr/local/src/apr-1.5.2
~]# ./confirure –prefix=/usr/local/apr
~]# make && make install    #apr 安装完成
~]# cd /usr/local/src/apr-util-1.5.4
~]# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr  #with-apr 参数指定编译 apr-util 时所依赖的程序包,如不指定则编译时会查找系统默认的安装路径去查找。
~]# make && make install

很多人都会有疑问 apr 到底有什么作用,为什么每次编译都要用到这个包?

APR(Apache portable Run-time libraries,Apache 可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。

APR 最大的作用就是 socket 调度。

2、httpd 安装

将下载的 httpd-2.4.25 解压至 /usr/local/src 目录中

~]# tar –jxf httpd-2.4.25.tar.bz2 –C /usr/local/src
~]# cd /usr/local/src/httpd-2.4.25
~]# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/apache–enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/local/apr–with-apr-util=/usr/local/apr-util –enable-modules=most –enable-mpms-shared=all–with-mpm=prefork
~]# make –j 4 && make install
# 安装完成之后进行启动前配置,添加启动用户和组
~]# groupadd –r –g 80 apache
~]# useradd –r –g apache –u 80 apache
# 为 apache 提供服务脚本
~]# vim /etc/rc.d/init.d/apache
#!/bin/bash
#
#httpd        Startup script for theApache HTTP Server
#
#chkconfig: – 85 15
#description: Apache is a World Wide Web server. It is used to serve \
#        HTML files and CGI.
#processname: httpd
# config:/etc/httpd/conf/httpd.conf
# config:/etc/sysconfig/httpd
#pidfile: /var/run/httpd.pid
 
# Sourcefunction library.
./etc/rc.d/init.d/functions
 
if [-f/etc/sysconfig/httpd]; then
        . /etc/sysconfig/httpd
fi
 
# Starthttpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-“C”}
 
# Thiswill prevent initlog from swallowing up a pass-phrase prompt if
# mod_sslneeds a pass-phrase from the user.
INITLOG_ARGS=””
 
# SetHTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# withthe thread-based “worker” MPM; BE WARNED that some modules may not
# workcorrectly with a thread-based MPM; notably PHP will refuse to start.
 
# Path tothe apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
 
start() {
  echo -n $”Starting $prog: “
  LANG=$HTTPD_LANG daemon –pidfile=${pidfile}$httpd $OPTIONS
  RETVAL=$?
  echo
  [$RETVAL = 0] && touch${lockfile}
  return $RETVAL
}
 
stop() {
  echo -n $”Stopping $prog: “
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [$RETVAL = 0] && rm -f ${lockfile}${pidfile}
}
reload(){
    echo -n $”Reloading $prog: “
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t>&/dev/null; then
        RETVAL=$?
        echo $”not reloading due toconfiguration syntax error”
        failure $”not reloading $httpd dueto configuration syntax error”
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}
 
# See howwe were called.
case”$1″ in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [-f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
  *)
  echo $”Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}”
  exit 1
esac
 
exit $RETVAL
~]# chmod +x /etc/rc.d/init.d/apache
~]# chkconfig –add apache
~]# service apache start        #测试启动是否成功

默认情况下系统防火墙会将 80 端口禁止通信,网上好多编译安装时,为了方便都会将防火墙关闭,我觉得生产环境中关闭防火墙毕竟不太安全,估计也没人这么干,现在就将用到的 80 端口以及 mariadb 和 php 用到的 3306、9000 端口都开放。

~]# iptables –I INPUT –p ctp –m multiport –dports80,8080,3306,9000 –m state –state NEW,ESTABLISHED –j ACCEPT
# 注:防火墙策略一般是自上而下审核,所以为了避免与其他策略冲突,直接将此条策略加入到最上方。
~]# setenforce 0    #设置 selinux 为 Permissive 模式,后续可能会将 htdocs 目录指向其他路径,如果不设为 Permissive 会无法访问。

最后在浏览器中填入测试机的 IP 地址,配置成功会有以下显示。

CentOS 6.7 编译安装 LAMP 详解

下面关于 LAMP 相关 的内容你可能也喜欢

LAMP 平台安装 Xcache 和 Memcached 加速网站运行  http://www.linuxidc.com/Linux/2015-06/118835.htm

CentOS 7 下搭建 LAMP 平台环境  http://www.linuxidc.com/Linux/2015-06/118818.htm

CentOS 6.5 系统安装配置 LAMP(Apache+PHP5+MySQL)服务器环境 http://www.linuxidc.com/Linux/2014-12/111030.htm

CentOS 7.2 yum 安装 LAMP 环境  http://www.linuxidc.com/Linux/2016-11/136766.htm

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

LAMP 结合 NFS 构建小型博客站点  http://www.linuxidc.com/Linux/2015-08/121029.htm

CentOS7 下安装部署 LAMP 环境  http://www.linuxidc.com/Linux/2016-04/130653.htm

Ubuntu Server 14.04 LTS 下搭建 LAMP 环境图文详解  http://www.linuxidc.com/Linux/2016-12/138758.htm

Ubuntu Server 16.04 下配置 LAMP 环境 http://www.linuxidc.com/Linux/2016-12/138757.htm

Ubuntu 16.04 搭建 LAMP 开发环境 http://www.linuxidc.com/Linux/2016-10/136327.htm

三、mariadb 安装

首先将 mysql 用户 mysql 组。

~]# groupadd –r –g 36 mysql
~]# useradd –r –g mysql –u 36 mysql

此处使用的是二进制格式的程序包,解压至特定路径后简单配置后即可使用。

在生产环境当中数据库文件会单独存放在一个较大的空间当中,在此测试机中模拟有两块硬盘,在两块硬盘当中各划分出 50G 的空间来组成逻辑卷来存放数据文件,下边就来进行具体操作。

~]# yum install lvm2                #此步如果系统中已安装 lvm 管理工具可跳过
~]# pvcreate /dev/sd{a,b}3    #将硬盘 a,b 中的分区添加到物理卷
~]# vgcreate –s 16M datavg /dev/sd{a,b}3    #将物理卷中的两块物理卷加入到 datavg 物理卷组中
~]# lvcreate –L 50G –n marialv datavg          #将物理卷组中分出 50G 空间来创建 marialv 逻辑卷
~]# mkfs –t ext4 –m 1 –L“mariadata”–b 2048/dev/datavg/marialv  #格式化 marialv 逻辑卷
~]# mount /dev/datavg/marialv /data/
~]# mkdir /data/mariadb –p            #创建数据存放路径
~]# chown mysq:mysql /data/mariadb #更改 mariadb 目录的属组属主为 mysql
# 至此数据存放位置准备完毕,如果需要开机挂载此目录则需要修改 /etc/fstab 文件
~]# tar –zxf mariadb-10.1.21-linux-x86_64.tar.gz –C/usr/local
~]# cd /usr/local
~]# ln –s mariadb-10.1.21 mysql            #默认安装配置都要 mysql 目录中,所以需要将解压后的数据库做一个链接,也方便日后数据库升级,直接将链接更新即可。
~]# cd mysql
~]# chown –R root:mysql ./*                    #将程序包中的所有文件属主属组修改为 root 用户 mysql 组
~]# scripts/mysql_install_db  –datadir=/data/mariadb –user=mysql  #此步骤需要注意,mysql_install_db 只能在 scripts 目录中执行,执行完毕之后如果不出意外安装完成了 o(╯□╰)o

先不要急着运行,后续还要有点小调整,因为 mariadb 还木有配置文件和启动脚本呢!下边就来将这两项做好。

还是在 mysql 目录中操作,这点需要注意

mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld  #添加启动脚本
mysql]# chkconfig –add mysqld
mysql]# mkdir /etc/mariadb
mysql]# cp support-files/my-larg.cnf  /etc/mariadb/my.cnf
# 在 support-files 目录中提供了三个针对不同硬件的配置文件,可以根据自己系统硬件的不同来自行选配,这里选择的是 my-larg.cnf
# 编辑 my.cnf 并添加以下三个选项
mysql]# vim /etc/mariadb/my.cnf
 
[client]
#password  = your_password
port        = 3306
#socket    = /tmp/mysql.sock
socket      = /data/mariadb /mysql.sock
 
# Herefollows entries for some specific programs
# TheMariaDB server
[mysqld]
port        = 3306
socket = /data/mariadb /mysql.sock
#…省略其他不变的选项
thread_concurrency= 8                  #这个参数可以根据自己服务器硬件配置来更改,一般为 CPU 个数乘以 2
datadir=/data/mariadb                      #数据库存放路径
innodb_file_per_table= on              #每个数据表存储类型都是独立的
skip_name_resolve = on                    #跳过数据库反向解析主机名
 
mysql]#bin/mysql_secure_installation        #可以为 root 设置密码,删除匿名用户等一些操作
配置完成可以运行 service mysqld start 启动服务
 ~]#ss –nat|grep 3306    #可以看到端口已经启动

CentOS 6.7 编译安装 LAMP 详解

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-03/141244p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计19271字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中