linux运维之LAMP(apache+mariadb+php)搭建

linux运维之LAMP(apache+mariadb+php)搭建
         LAMP 是Linux Apache MySQL(mariadb) PHP的简写,其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行php的脚本语言,其中mariadb为mysql的一个分支。

搭建环境:

系统: CentOS6.6-x86_64
          httpd: httpd-2.4.9
          mariadb: mariadb-5.5.43
          php: php-5.4.26

注: 安装顺序为 httpd-->mairadb-->php,安装编译前先安装开发环境组件:
       "Develoment Tools"和 "Server Platform Development"

[[email protected] ~]# yum groupinstall "Development Tools" "Server Platform Development" -y

---------------------------------------------------------------------------------------------------------

1.apache(httpd)
 apache:Web服务器,主要提供网上信息浏览服务,使用应用层http协议

编译安装:
         依赖包:
                   httpd-2.4.12.tar.bz2
                   pcre-deve
                   apr-1.5.0.tar.bz2:apr(Apache Portable Runtime)
                   apr-util-1.5.3.tar.bz2

注: CentOS6.6系统默认安装httpd2.2版本,如果以防和2.4冲突,可以自行移除2.2版本后再编译安装2.4,这里不做移除。
 
 移除命令为:

[[email protected] ~]# yum remove httpd

首先安装pcre-deve包:

[[email protected] ~]# yum install pcre-devel -y

编译安装apr包:

[[email protected] ~]# ls #下载源码包到服务器
anaconda-ks.cfg         httpd-2.4.10.tar.bz2                   Public
apr-1.5.0.tar.bz2       install.log                            Templates
apr-util-1.5.3.tar.bz2  install.log.syslog                     Videos
Desktop                 Music                                  wordpress-4.3.1-zh_CN.zip
Documents               phpMyAdmin-4.4.14.1-all-languages.zip
Downloads               Pictures
[[email protected] ~]# tar xf apr-1.5.0.tar.bz2 #解压
[[email protected] ~]# cd apr-1.5.0
[[email protected] apr-1.5.0]# ls #查看源码包内容
apr-config.in  buildconf         dso         libapr.rc     NOTICE         support
apr.dep        build.conf        emacs-mode  LICENSE       NWGNUmakefile  tables
apr.dsp        build-outputs.mk  encoding    locks         passwd         test
apr.dsw        CHANGES           file_io     Makefile.in   poll           threadproc
apr.mak        CMakeLists.txt    helpers     Makefile.win  random         time
apr.pc.in      config.layout     include     memory        README         tools
apr.spec       configure         libapr.dep  misc          README.cmake   user
atomic         configure.in      libapr.dsp  mmap          shmem
build          docs              libapr.mak  network_io    strings
[[email protected] apr-1.5.0]# ./configure --prefix=/usr/local/apr #编译并指定一个安装路径
[[email protected] apr-1.5.0]# make && make install #编译安装

完成后编译安装apr-util

[[email protected] ~]# tar -xf apr-util-1.5.3.tar.bz2 #解压
[[email protected] ~]# cd apr-util-1.5.3
[[email protected] apr-util-1.5.3]# ls #查看源码包内容
aprutil.dep     buildconf         dbd                libaprutil.dsp  NWGNUmakefile
aprutil.dsp     build.conf        dbm                libaprutil.mak  README
aprutil.dsw     build-outputs.mk  docs               libaprutil.rc   README.cmake
aprutil.mak     CHANGES           encoding           LICENSE         renames_pending
apr-util.pc.in  CMakeLists.txt    export_vars.sh.in  Makefile.in     strmatch
apr-util.spec   config.layout     hooks              Makefile.win    test
apu-config.in   configure         include            memcache        uri
buckets         configure.in      ldap               misc            xlate
build           crypto            libaprutil.dep     NOTICE          xml
[[email protected] apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr #编译指定路径并针对apr的路径
[[email protected] apr-1.5.0]# make && make install #编译安装

完成后编译安装httpd包:

[[email protected] ~]# tar -xf httpd-2.4.10.tar.bz2 
[[email protected] ~]# cd httpd-2.4.10
[[email protected] httpd-2.4.10]# ls
ABOUT_APACHE     BuildBin.dsp    emacs-style     LICENSE        README.cmake
acinclude.m4     buildconf       httpd.dsp       Makefile.in    README.platforms
Apache-apr2.dsw  CHANGES         httpd.spec      Makefile.win   ROADMAP
Apache.dsw       CMakeLists.txt  include         modules        server
apache_probes.d  config.layout   INSTALL         NOTICE         srclib
ap.d             configure       InstallBin.dsp  NWGNUmakefile  support
build            configure.in    LAYOUT          os             test
BuildAll.dsp     docs            libhttpd.dsp    README         VERSIONING
[[email protected] ~]#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --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=event #指定安装目录,配置文件目录,模块等等
[[email protected] httpd-2.4.10]# make && make install#编译安装

注: 指定配置文件目录为/etc/httpd24,其中24是为了不与自带httpd2.2冲突而设置。

安装完成后看一下安装目录内容:

[[email protected] ~]# tree -d /usr/local/apache/
/usr/local/apache/
├── bin    #启动和关闭脚本
├── build   
├── cgi-bin  #cgi程序文件存放目录
├── error   #服务器端错误时返回给客户端的错误页面
│   └── include
├── htdocs   #web页面所在的目录
├── icons   #httpd图标文件
│   └── small
├── include     #头文件
├── logs    #日志文件
├── man   #man手册
│   ├── man1
│   └── man8
├── manual     #配置手册
│   ├── developer
│   ├── faq
│   ├── howto
│   ├── images
│   ├── misc
│   ├── mod
│   ├── platform
│   ├── programs
│   ├── rewrite
│   ├── ssl
│   ├── style
│   │   ├── css
│   │   ├── lang
│   │   ├── latex
│   │   ├── scripts
│   │   └── xsl
│   │       └── util
│   └── vhosts  #虚拟主机
└── modules     #httpd模块
[[email protected] ~]# tree /etc/httpd24/
/etc/httpd24/
├── extra                         #以下为扩展的配置文件
│?? ├── httpd-autoindex.conf      
│?? ├── httpd-dav.conf
│?? ├── httpd-default.conf     
│?? ├── httpd-info.conf
│?? ├── httpd-languages.conf
│?? ├── httpd-manual.conf
│?? ├── httpd-mpm.conf
│?? ├── httpd-multilang-errordoc.conf
│?? ├── httpd-ssl.conf
│?? ├── httpd-userdir.conf
│?? ├── httpd-vhosts.conf
│?? └── proxy-html.conf
├── httpd.conf        #主配置文件,包括添加模
├── magic
├── mime.types
└── original
    ├── extra
    │?? ├── httpd-autoindex.conf
    │?? ├── httpd-dav.conf
    │?? ├── httpd-default.conf
    │?? ├── httpd-info.conf
    │?? ├── httpd-languages.conf
    │?? ├── httpd-manual.conf
    │?? ├── httpd-mpm.conf
    │?? ├── httpd-multilang-errordoc.conf
    │?? ├── httpd-ssl.conf
    │?? ├── httpd-userdir.conf
    │?? ├── httpd-vhosts.conf
    │?? └── proxy-html.conf
    └── httpd.conf

编写服务脚本,由于编译安装不会自动生成服务脚本,这里我们拷贝httpd目录到httpd24编辑:

[[email protected] httpd-2.4.10]# cd /etc/rc.d/init.d/
[[email protected] init.d]# cp httpd httpd24
[[email protected] init.d]# vim httpd24

添加到开机启动表并开机自启动:

[[email protected] init.d]# chkconfig --add httpd24 #
[[email protected] init.d]# chkconfig httpd24 on  
[[email protected] init.d]# chkconfig --list httpd24 
httpd24         0:off 1:off 2:on 3:on 4:on 5:on 6:off

接下来添加PATH变量脚本,不然启动时为httpd2.2版本

[[email protected] ~]# vim /etc/profile.d/httpd.sh #添加脚本

#内容为:
 export PATH=/usr/local/apache/bin:$PATH  #添加apache执行变量

[[email protected] ~]# . /etc/profile.d/httpd.sh #重新载入

重启服务,80端口处于监听状态

[[email protected] ~]# ss -tnl
State      Recv-Q Send-Q             Local Address:Port               Peer Address:Port 
LISTEN     0      128                           :::22                           :::*     
LISTEN     0      128                            *:22                            *:*     
LISTEN     0      128                    127.0.0.1:631                           *:*     
LISTEN     0      128                          ::1:631                          :::*     
LISTEN     0      100                          ::1:25                           :::*     
LISTEN     0      100                    127.0.0.1:25                            *:*     
LISTEN     0      128                           :::40538                        :::*     
LISTEN     0      128                            *:57219                         *:*     
LISTEN     0      128                           :::111                          :::*     
LISTEN     0      128                            *:111                           *:*     
LISTEN     0      128                           :::80  #已经监听                      :::
[[email protected] ~]# httpd -M #查看是否为event模式,event是否已经启动

大家看到这里默认启动的模块不是很多,可以根据自己需要自行添加模块位于:

[ro[email protected] ~]# cd /etc/httpd24/
[[email protected] httpd24]# ls
extra  httpd.conf  magic  mime.types  original
[[email protected] httpd24]# vim httpd.conf  #里边模块基本保持默认即可

 这样httpd2.4就搭建完成

2.编译安装maraidb-5.5.43

(1)首先解压缩到指定目录并创建数据目录,设定权限
         (2)设置配置文件
         (3)设置服务脚本文件

[[email protected] ~]# tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
  #解压到/usr/local/目录
[[email protected] ~]# mkdir -pv /mydata/data  #创建一个数据存放目录
mkdir: created directory `/mydata‘
mkdir: created directory `/mydata/data‘
[[email protected] ~]# useradd -r mysql       #添加一个管理用户mysql
[[email protected] ~]# chown -R mysql.mysql /mydata/data/  #指定目录权限
[[email protected] local]# ln -sv mariadb-5.5.43-linux-x86_64 mysql #创建软连接指向mariadb数据目录
`mysql‘ -> `mariadb-5.5.43-linux-x86_64‘
[[email protected] local]# cd mysql/   #通过软链接mysql可以看到mariadb的数据文件
[[email protected] mysql]# ls
bin      COPYING.LESSER  EXCEPTIONS-CLIENT  INSTALL-BINARY  man         README   share      support-files
COPYING  data            include            lib             mysql-test  scripts  sql-bench
[[email protected] mysql]# chown -R root.mysql ./*   #修改目录mysql里所有文件权限
[[email protected] mysql]# ll
total 220
drwxr-xr-x.  2 root mysql   4096 Sep 22 08:03 bin
-rw-r--r--.  1 root mysql  17987 Apr 29 14:55 COPYING
-rw-r--r--.  1 root mysql  26545 Apr 29 14:55 COPYING.LESSER
drwxr-xr-x.  3 root mysql   4096 Sep 22 08:03 data
-rw-r--r--.  1 root mysql   8245 Apr 29 14:55 EXCEPTIONS-CLIENT
drwxr-xr-x.  3 root mysql   4096 Sep 22 08:03 include
-rw-r--r--.  1 root mysql   8694 Apr 29 14:55 INSTALL-BINARY
drwxr-xr-x.  3 root mysql   4096 Sep 22 08:03 lib
drwxr-xr-x.  4 root mysql   4096 Sep 22 08:03 man
drwxr-xr-x. 11 root mysql   4096 Sep 22 08:03 mysql-test
-rw-r--r--.  1 root mysql 108813 Apr 29 14:55 README
drwxr-xr-x.  2 root mysql   4096 Sep 22 08:03 scripts
drwxr-xr-x. 27 root mysql   4096 Sep 22 08:03 share
drwxr-xr-x.  4 root mysql   4096 Sep 22 08:03 sql-bench
drwxr-xr-x.  3 root mysql   4096 Sep 22 08:03 support-files

接着初始化数据库:

[[email protected] mysql]# scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql

接下来把mysql里的配置文件拷贝到/etc/mysql/my.cnf(创建)里并编辑:

[[email protected] mysql]# mkdir /etc/mysql
[[email protected] mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
[[email protected] mysql]# vim /etc/mysql/my.cnf

配置文件设置完成

接下来设置服务脚本:

[[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld #拷贝服务脚本到init.d目录下名为mysqld

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

输出mysql的man手册至man命令的查找路径:编辑/etc/man.config,添加下行:
            MANPATH /usr/local/mysql/man

输出msyql的头文件至系统头文件路径/usr/include,通过软链接实现:

[[email protected] ~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
`/usr/include/mysql‘ -> `/usr/local/mysql/include/‘

输出mysql的库文件给系统查找路径:

[[email protected] ~]# echo ‘/usr/local/mysql/lib/‘ > /etc/ld.so.conf.d/mysql.conf

配置好后让系统重新载入系统库

[[email protected] ~]# ldconfig
[[email protected] mysql]# chkconfig --add mysqld  #加入开机启动表中
[[email protected] mysql]# service mysqld start    #启动服务
Starting MySQL..                                           [  OK  ]
[[email protected] mysql]# ss -tnl  #查看到3306端口以及监听
State       Recv-Q Send-Q                           Local Address:Port                             Peer Address:Port 
LISTEN      0      128                                         :::22                                         :::*     
LISTEN      0      128                                          *:22                                          *:*     
LISTEN      0      128                                  127.0.0.1:631                                         *:*     
LISTEN      0      128                                        ::1:631                                        :::*     
LISTEN      0      100                                        ::1:25                                         :::*     
LISTEN      0      100                                  127.0.0.1:25                                          *:*     
LISTEN      0      128                                         :::40538                                      :::*     
LISTEN      0      128                                          *:57219                                       *:*     
LISTEN      0      50                                           *:3306  #端口以及监听                                      *:*     
LISTEN      0      128                                         :::111                                        :::*     
LISTEN      0      128                                          *:111                                         *:*     
LISTEN      0      128                                         :::80                                         :::*

接着我们连接数据库:

能连接到数据库说明数据库正常

3.编译安装php-5.4.26

依赖安装包:

bzip2-devel   libmcrypt-devel(epel源,本地光盘没有)   libxml2-devel

首先下载源码包到本地目录:

[[email protected] ~]# ls  #下载好源码包
anaconda-ks.cfg         Downloads                           php-5.4.26.tar.bz2 #php包
apr-1.5.0               httpd-2.4.10                        phpMyAdmin-4.4.14.1-all-languages.zip
apr-1.5.0.tar.bz2       httpd-2.4.10.tar.bz2                Pictures
apr-util-1.5.3          install.log                         Public
apr-util-1.5.3.tar.bz2  install.log.syslog                  Templates
Desktop                 mariadb-5.5.43-linux-x86_64.tar.gz  Videos
Documents               Music                               wordpress-4.3.1-zh_CN.zip

解压并编译:

[[email protected] ~]# tar xf php-5.4.26.tar.bz2 
[[email protected] ~]# cd php-5.4.26
[[email protected] ~]#./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 --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts
#with-openssl: 自动寻找本机安装的openssl
#mysql_config: 对mysql数据库进行交互的另外一个接口
#enable-mbstring: 多字节字符串支持
#freetype-dir: 支持的多字体类型
#jpeg-dir: 支持jpeg格式图片
#png-dir: png图片
#zlib: 压缩库
#libxml-dir: 处理xml格式文档
#enable-xml: 支持启用xml
#enable-sockets: 基于套接字通信
#apxs2: 用来把php编译成模块
#mcrypt: 支持加解密库
#config-file: php配置文件路径
#config-file-scan: 详细配置目录,到php.d查看
#bz2:支持bz2格式加密
#maintainer-zts: 编译成zts模块,worker和event模块必须加,prefork则不需要

说明:
      (1)这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
      (2)如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

编译完成后,默认httpd是不支持php的,这里需要为php提供配置文件

 [[email protected] php-5.4.26]# cp php.ini-production /etc/php.ini

编辑apache配置文件httpd.conf以让apache支持php:

[[email protected] php-5.4.26]# cd /etc/httpd24/
[[email protected] httpd24]# ls
extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
[[email protected] httpd24]# vim httpd.conf

找到AddType选项,添加这两项:

#AddType application/x-httpd-php  .php           #Add前边没有#号。
#AddType application/x-httpd-php-source  .phps

接着定位至DrectoryIndex index.html,修改为DirectoryIndex  index.php  index.html

而后重启httpd,或让其重新载入配置文件即可,使用httpd -M 可以查看php模块已加载

[[email protected] ~]# httpd -M | tail -5
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
 php5_module (shared)      #可以看到php模块已经加载

编译安装后默认首页文件保存于/usr/local/apache/htdocs里:

[[email protected] ~]# cd /usr/local/apache/
[[email protected] apache]# ls
bin  build  cgi-bin  error  htdocs  icons  include  logs  man  manual  modules
[[email protected] apache]# cd htdocs/
[[email protected] htdocs]# ls         #默认为html,改为php
index.html
[[email protected] htdocs]# mv index.html index.php
[[email protected] htdocs]# vim index.php   #编辑一下内容,看测试效果

接下来在windows浏览器里输入本机IP地址就可以看到测试页:

php首页测试没有问题,这样php就安装完成

关闭数据库测试一下:

[[email protected] htdocs]# service mysqld stop
Shutting down MySQL..                                      [  OK  ]

测试没有问题

[[email protected] htdocs]# service mysqld start #重新开启mysql服务

到此,LAMP正式搭建完成。。。。

时间: 2025-01-16 04:18:20

linux运维之LAMP(apache+mariadb+php)搭建的相关文章

Linux运维实战之Apache的基本配置(全局配置、主服务器配置):

上次博文我们具体讨论了http协议(参见:http://sweetpotato.blog.51cto.com/533893/1656137),本次博文我们来具体配置一台Apache(httpd)服务器. 本次博文的主要内容: httpd相关包信息 httpd的安装及主页面 httpd的配置文件 httpd的全局配置 httpd的主服务器配置 一.httpd的RPM包介绍及其相关信息: RHEL5和RHEL6略有不同: 下图是RHEL5上httpd相关包的信息: 下图是RHEL6上httpd相关包

Linux运维实战之Apache服务器的高级配置(虚拟主机、status)

HTTP协议基础知识参考博文:http://sweetpotato.blog.51cto.com/533893/1656137 Apache2.2的基本配置参考博文:http://sweetpotato.blog.51cto.com/533893/1657668 Apache服务的配置分为三段: 1.全局配置(the 'global environment'):对主服务器或虚拟机都有效,且有些功能是服务器自身工作属性: 2.主服务器(main server):主站属性: 3.虚拟主机(Virtu

Linux运维 第三阶段 (六) 搭建LAMP环境

Linux运维 第三阶段(六) 搭建LAMP环境 环境:RHEL6 X386或X86_64,其中64位在此文中已用()标明注意事项. 一.准备工作 1.安装编译工具gcc.gcc-c++ 注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源-- # yum -y install gcc # yum -y install gcc-c++ 2.关闭系统RPM安装包的Apache.MySQL的服务 关闭启动的服务httpd.mysqld #service httpd stop #

如何迅速掌握并提高linux运维技能

之前曾经写过一篇如何学习Linux的文章,得到了很多反馈,大家都在分享自己的学习经验和体会,并且也提出了不少意见和建议.学习这个事情其实是说起来容易,做起来就很难,虽然给大家提高了很多学习linux的思路和方法,但是很多时候,学习的过程是个锻炼和总结的过程,需要自己去体会和领悟,而这个领悟跟钻研的深度有关,所以,对linux技术点钻研较深的朋友,可能收获的知识就多一些,提高也就快一些,而相反,不太喜欢钻研的朋友们,技能提高就稍微慢一点,因此,我们说虽然有了统一的学习方法,但是由于每个人的领悟力不

Linux运维工程师必学必备的8项IT技能

成长一名Linux工程师之后,才知道一路走来,背后的心酸.非常感谢支持我的同伴与老师,是你们鼓励我,坚持到底,才在这个行业立足.如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版本,免费使用,二个发行版没有任何区别.成长为一名Linux工程师,只需要掌握以下方面的技能,那日常工作一点问题都没有. 1.扎实的基础 试想如果没有最扎实的基础,如何去查看

Linux运维入门到高级全套常用要点

目 录 1. Linux 入门篇..................................................................... 4 1. 1 Linux 操作系统简介........................................................... 4 1. 2 Linux 发展趋势...................................................................

如何掌握并提高linux运维技能

初中级Linux运维人员们系统学习并迅速掌握Linux的运维实战技能.学习路线大纲如下: 入门基础篇 系统运维篇 Web运维篇 数据库运维篇 集群实战篇 运维监控篇 第一篇:Linux入门(安装.配置.shell命令)基础篇 一. 学习Linux的经验与技巧 1.1 Linux在各领域发展的现状和趋势 1.1.1 Linux与开源软件(Linux成就了开源) 1.1.2 Linux在服务器领域的发展(市场占有率95%,2015年数据) 1.1.3 Linux在桌面领域的发展 1.1.4 Linu

linux运维升级路线

运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火--(相对表示就是 Python 比较火) 之前写过运维基础篇,发现对很多人收益挺大,接下来也写下关于这4年多的运维实践经验,从事了2年多游戏运维,1年多安全运维,1年大数据运维,相关行业信息不能算非常精通,但是熟悉和熟练还是相对可以的. 初级篇 linux运维人员常用工具拓扑详见: 1.rsync工具 很多地方经常会用到rsync工具,实施几台服务器的

Linux运维 第二阶段 (五)权限管理

Linux运维第二阶段(五)权限管理 一.权限管理(解决用户和身份不足的问题) >#dumpe2fs  -h /dev/sda2             (查询指定分区详细文件系统信息的命令,-h仅显示超级块中的详细信息) #mount  -o remount,acl  /             (重新挂载根分区,加入acl权限) >acl基本命令: #getfacl  文件名                      (查询文件的acl权限) #setfacl  -m  u:用户名:权限