LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架。该框架能够满足大流量、大并发量的网站需求;当然、也可以直接使用高性能的服务器、高性能的负载均衡硬件以及CDN加速等。若想真正的设计一个非常好的支撑高并发、高吞吐量的架构,除了必要的高性能的硬件之外,还必须要慎重的选择高性能的操作系统、高性能的网页服务器、高性能的数据库、高性能的编程语言等。

LAMP框架包括:

1. Linux操作系统

2. Apache网络服务器

3. MySQL数据库

4. Perl、PHP或者Python编程语言

LAMP具有Web资源丰富、轻量、快速开发、通用、跨平台、高性能、低价格等优势,正是由于LAMP在性能、价格、质量等上的绝对优势,因此很多企业搭建网站均首选LAMP网站架构。

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

下面开始搭建LAMP之旅!

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

安装前提

本文的实验是基于CentOS6.5 X64版本操作系统,并且安装的时候,选择软件包的时候,已经将开发工具包组选择并安装上。

安装依赖包

1. 将系统配置好网络(以保证能够联通外网)

[root@localhost ~]ping www.baidu.com

2. 实验如下命令进行安装
        [root@localhost ~]yum install wget gcc gcc-c++ make re2c curl curl-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel libmcrypt libmcrypt-devel zlib zlib-devel openssl openssl-devel freetype freetype-devel gd gd-devel perl perl-devel ncurses ncurses-devel bison bison-devel libtool gettext gettext-devel cmake bzip2 bzip2-devel pcre pcre-devel

编译安装Httpd软件
    1. 解压软件包
        [root@localhost ~]tar zxvf apr-1.5.0.tar.gz 
        [root@localhost ~]tar zxvf apr-util-1.5.3.tar.gz 
        [root@localhost ~]tar zxvf httpd-2.4.7.tar.gz

2. 移动并改名
        [root@localhost ~]mv apr-1.5.0 httpd-2.4.7/srclib/apr
        [root@localhost ~]mv apr-util-1.5.3 httpd-2.4.7/srclib/apr-util

3. 进入httpd并执行configure命令
        [root@localhost ~]cd httpd-2.4.7
        [root@localhost ~]./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --with-z --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-static-support --enable-authn-dbm=shared --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-mods-shared=all --enable-ssl --enable-cgi
 
    4. 执行make && make install进行编译及安装
        [root@localhost ~]make && make install

5. 编辑httpd.conf
        [root@localhost ~]vi /etc/httpd/httpd.conf
            将ServerName www.example.com:80改成 ServerName localhost:80

6. 新建apache用户
        [root@localhost ~]useradd apache -M -s /sbin/nologin
            将User daemon 改为 User daemon
            将Group daemon 改为 Group daemon
 
    7. iptables添加80端口并重启服务

[root@localhost ~]iptables -F

[root@localhost ~]service iptables save

[root@localhost ~]vi /etc/sysconfig/iptables
            -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
        [root@localhost ~]service iptables restart

8. 创建apache启动脚本并赋予权限
        [root@localhost ~]vi /etc/init.d/httpd
            #!/bin/bash
            #
            # httpd Startup script for the Apache HTTP Server
            #
            # chkconfig: 2345 85 15    
            # description: The Apache HTTP Server is an efficient and extensible \
            #     server implementing the current HTTP standards.
            # processname: httpd
            # config: /etc/httpd/httpd.conf
            # config: /etc/sysconfig/httpd
            # pidfile: /var/run/httpd/httpd.pid
            #
            ### BEGIN INIT INFO
            # Provides: httpd
            # Required-Start: $local_fs $remote_fs $network $named
            # Required-Stop: $local_fs $remote_fs $network
            # Should-Start: distcache
            # Short-Description: start and stop Apache HTTP Server
            # Description: The Apache HTTP Server is an extensible server 
            # implementing the current HTTP standards.
            ### END INIT INFO
         
            # Source function library.
            . /etc/rc.d/init.d/functions
         
            if [ -f /etc/sysconfig/httpd ]; then
                . /etc/sysconfig/httpd
            fi
     
            # Start httpd in the C locale by default.
            HTTPD_LANG=${HTTPD_LANG-"C"}
         
            # This will prevent initlog from swallowing up a pass-phrase prompt if
            # mod_ssl needs a pass-phrase from the user.
            INITLOG_ARGS=""
         
            # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
            # with the thread-based "worker" MPM; BE WARNED that some modules may not
            # work correctly with a thread-based MPM; notably PHP will refuse to start.
         
            # Path to the 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-/usr/local/apache/logs/httpd.pid}
            lockfile=${LOCKFILE-/var/lock/subsys/httpd}
            RETVAL=0
            STOP_TIMEOUT=${STOP_TIMEOUT-10}
         
            # The semantics of these two functions differ from the way apachectl does
            # things -- attempting to start while running is a failure, and shutdown
            # when not running is also a failure. So we just do it the way init scripts
            # are expected to behave here.
            start() {
                echo -n $"Starting $prog: "
                LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
                RETVAL=$?
                echo
                [ $RETVAL = 0 ] && touch ${lockfile}
                return $RETVAL
            }
         
            # When stopping httpd, a delay (of default 10 second) is required
            # before SIGKILLing the httpd parent; this gives enough time for the
            # httpd parent to SIGKILL any errant children.
            stop() {
                 echo -n $"Stopping $prog: "
                 killproc -p ${pidfile} -d ${STOP_TIMEOUT} $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=6
                    echo $"not reloading due to configuration syntax error"
                    failure $"not reloading $httpd due to configuration syntax error"
                else
                    # Force LSB behaviour from killproc
                    LSB=1 killproc -p ${pidfile} $httpd -HUP
                    RETVAL=$?
                    if [ $RETVAL -eq 7 ]; then
                        failure $"httpd shutdown"
                    fi
                fi
                echo
            }
         
            # See how we were called.
            case "$1" in
                  start)
                 start
             ;;
              stop)
                 stop
             ;;
              status)
                status -p ${pidfile} $httpd
             RETVAL=$?
             ;;
              restart)
                 stop
                 start
             ;;
              condrestart|try-restart)
                 if status -p ${pidfile} $httpd >&/dev/null; then
                      stop
                      start
                 fi
             ;;
              force-reload|reload)
                reload
             ;;
              graceful|help|configtest|fullstatus)
                 $apachectl $@
                 RETVAL=$?
             ;;
              *)
                 echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-    reload|reload|status|fullstatus|graceful|help|configtest}"
                 RETVAL=2
            esac
         
            exit $RETVAL
        [root@localhost ~]chmod 755 /etc/init.d/httpd

9. 设置环境变量
        [root@localhost ~]vi /etc/profile
            PATH=/usr/local/apache/bin:$PATH
            export PATH
        [root@localhost ~]source /etc/profile
 
    10. 启动httpd 并配置为开机启动
        [root@localhost ~]service httpd start
        [root@localhost ~]chkconfig httpd on

编译安装mysql

1. 解压mysql
        [root@localhost ~]tar zxvf mysql-5.6.16.tar.gz
 
    2. 进入mysql目录并执行cmake
        [root@localhost ~]cd mysql-5.6.16
        [root@localhost ~]cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all    -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
 
    3. 编译安装mysql5.6
        [root@localhost ~]make && make install

4. 新建一个mysql用户
        [root@localhost ~]useradd -s /sbin/nologin -M mysql
 
    5. 新建一个数据目录并给定权限
        [root@localhost ~]mkdir -p /data/mysql

[root@localhost ~]mkdir -p /var/lib/mysql
        [root@localhost ~]chown -R mysql:mysql /usr/local/mysql

[root@localhost ~]chown -R mysql:mysql /usr/local/mysql

[root@localhost ~]chown -R mysql:mysql /var/lib/mysql
 
    6. 初始化数据库
        [root@localhost ~]cd /usr/local/mysql/scripts/
        [root@localhost ~]./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql
 
    7. 在CentOS6.5系统默认安装时,在/etc目录下会存在一个my.cnf,将此文件改名为/etc/my.cnf.org,并配置特定的my.cnf
        [root@localhost ~]mv /etc/my.cnf /etc/my.cnf.old
        [root@localhost ~]cp /usr/local/mysql/my.cnf /etc/
 
    8. 复制启动脚本到/etc/init.d    
        [root@localhost ~]cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 
    9. iptables添加3306端口
        [root@localhost ~]vi /etc/sysconfig/iptables
            -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
        [root@localhost ~]service iptables restart

10. 设置环境变量
        [root@localhost ~]vi /etc/profile
            PATH=/usr/local/mysql/bin:$PATH
            export PATH
        [root@localhost ~]source /etc/profile

11. 启动mysql并设置开机启动
        [root@localhost ~]service mysqld start
        [root@localhost ~]chkconfig mysqld on

12. 初始化mysql的一些设置
        [root@localhost ~]mysql_secure_installation [回车]
        Enter current password for root (enter for none): [回车]
        Set root password? [Y/n] y
        Remove anonymous users? [Y/n] y
        Disallow root login remotely? [Y/n] y
        Remove test database and access to it? [Y/n] y
        Reload privilege tables now? [Y/n] y
 
        Thanks for using MySQL!

编译安装php
    1. 解压php
        [root@localhost ~]tar zxvf php-5.4.25.tar.gz
 
    2. 进入php目录并执行configure
        [root@localhost ~]cd php-5.4.25
        [root@localhost ~]./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql --with-mysqli --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gd --with-zlib-dir --with-mcrypt --enable-soap --enable-mbstring=all --enable-sockets --enable-ftp --enable-zip --with-gettext --without-pear 
 
    3. 编译安装php5.4
        [root@localhost ~]make && make install
 
    4. 设置环境变量
        [root@localhost ~]vi /etc/profile
            PATH=/usr/local/php/bin:$PATH
            export PATH
        [root@localhost ~]source /etc/profile
 
    5. 复制配置文件到etc目录并进行修改
        [root@localhost ~]cp /usr/src/php-5.4.25/php.ini-production /etc/php.ini
        [root@localhost ~]vi /etc/php.ini
            date.timezone =Asia/Shanghai
 
    6. 配置httpd支持php解析
        [root@localhost ~]vi /etc/httpd/httpd.conf
            在AddType application/x-gzip .gz .tgz处增加AddType application/x-httpd-php .php 
            将DirectoryIndex index.html  改为  DirectoryIndex index.html index.php
 
    7. 验证
        添加一个测试文件到/usr/local/apache/htdocs/phpinfo.php,看看httpd能否输出php页面

本文出自 “Keyman” 博客,请务必保留此出处http://keyman.blog.51cto.com/9807984/1676386

CentOS6.5下编译安装LAMP环境

标签:lamp centos

原文:http://keyman.blog.51cto.com/9807984/1676386

最新文章

  1. rewrite规则中参数多于9个的处理方式 apache nginx
  2. js多个输入框运算计算结果输出到另一个输入框
  3. 关于 矩阵在ACM中的应用
  4. 容易答错的JS笔试题
  5. POJ-2378 Tree Cutting
  6. 2016 系统设计第一期 (档案一)MVC 控制器接收表单数据
  7. sql 联合查询速度慢,需要对其进行分组
  8. AE实现点击一个要素,并显示其属性
  9. input属性disabled和readonly的区别
  10. 漂亮的自制java验证码
  11. MVC小系列(十二)【RenderAction和RenderPartial区别】
  12. vmvare入门(1)使用移动,不要使用复制
  13. Civil 3D .NET二次开发第11章代码升级至2018版注意事项
  14. 最简单的方式离线部署Python依赖包
  15. HTTP协议web开发知识点
  16. Oracle数据库操作基本语法
  17. 【emWin】例程二十:窗口对象——Dropdown
  18. 在pycharm和tensorflow环境下运行nmt
  19. MySQL表类型MyISAM/InnoDB的区别(解决事务不回滚的问题)(转)
  20. 用HttpClient发送HTTPS请求报SSLException: Certificate for <域名> doesn't match any of the subject alternative names问题的解决

热门文章

  1. .NET Core 跨平台物联网开发:SDK 属性、方法、委托、类(四)
  2. 创建swagger的springboot-stater,并在spring cloud zuul网关中引入
  3. HDFS执行getDatanodeReport时权限不足的解决办法
  4. NDK(10)Android.mk各属性简介,Android.mk 常用模板--未完
  5. 454 4Sum II 四数相加 II
  6. .NET面试题解析(00)-系列文章索引
  7. Python3 动手自己写谷歌翻译
  8. jmeter 连接 sqlite 进行压力测试
  9. redis-cli 工具--raw参数的作用
  10. Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作