CentOS下搭建LAMP环境

  • LAMP: Linux + Apache + PHP + Mysql。
  • 系统: CentOS 7,64位。

CentOS安装

我选取了64位的CentOS 7这个Linux系统,安装过程也很简单,不再过多叙述,只稍微介绍一下我的分区情况:

Apache编译安装

我选择了httpd 2.2这个版本,可以参考官方说明文档

安装依赖:

安装依赖需要用到的gcc、g++编译器:

  1. ########gcc、g++
  2.  
  3. sudo yum install gcc
  4. sudo yum install gcc-c++

  

下面两个是apache的优化工具:

  1. ########apr
  2.  
  3. wget http://labfile.oss.aliyuncs.com/apr-1.5.1.tar.gz
  4. tar -zxvf apr-1.5.1.tar.gz
  5. cd apr-1.5.1/
  6. ./configure --prefix=/opt/apr
  7. sudo make && make install

  

  1. ########apr-util
  2.  
  3. cd Downloads/
  4. wget http://labfile.oss.aliyuncs.com/apr-util-1.5.4.tar.gz
  5. tar -zxvf apr-util-1.5.4.tar.gz
  6. cd apr-util-1.5.4
  7. ./configure --prefix=/opt/apr-util --with-apr=/opt/apr
  8. sudo make && make install

  

Perl库,兼容正则表达式库:

  1. cd Downloads/
  2. wget http://labfile.oss.aliyuncs.com/pcre-8.36.tar.gz
  3. tar -zxvf pcre-8.36.tar.gz
  4. cd pcre-8.36
  5. ./configure --prefix=/opt/pcre
  6. sudo make && make install

  

安装apache:

  1. cd Downloads/
  2. wget http://labfile.oss.aliyuncs.com/httpd-2.2.29.tar.gz
  3. tar -zxvf httpd-2.2.29.tar.gz
  4. cd httpd-2.2.29
  5. ./configure --prefix=/opt/apache --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-pcre=/opt/pcre
  6. sudo make && make install
  7. sudo sed -i 's/^#ServerName.*/ServerName localhost/' /opt/apache/conf/httpd.conf

  

测试:

启动:

  1. sudo /opt/apache/bin/apachectl start

获取服务器回应(安装apache最后一步已经将服务器设为localhost):

  1. curl -I 127.0.0.1

若安装成功则如下: 

关闭:

  1. sudo /opt/apache/bin/apachectl stop

MySQL编译安装

安装依赖:

  1. ###若先前编译过,则需要删除刚才编译生成的CMakeCache.txt文件
  1. rm -f CMakeCache.txt
  2.  
  3. sudo yum -y install gcc gcc-c++ autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* cmake cmake-gui libaio-devel bison-devel make

 

编译安装(时间较长):

  1. cd Downloads/
  2. wget http://labfile.oss.aliyuncs.com/mysql-5.6.24.tar.gz
  3. tar -zxvf mysql-5.6.24.tar.gz
  4. cd mysql-5.6.24
  5. cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/opt/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1
  6. sudo make
  7. sudo make install

  

创建mysql用户:

  1. id mysql > /dev/null 2>&1 || sudo useradd -r -s /sbin/nologin -M -d /opt/mysql/data mysql

初始化数据目录:

  1. sudo chown -R mysql:mysql /opt/mysql/data
  2. sudo /opt/mysql/scripts/mysql_install_db --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql --defaults-file=/opt/mysql/support-files/my-default.cnf

  

修改配置文件:

  1. sudo sh -c 'cat >> /opt/mysql/my.cnf <<EOF
  2. basedir = /opt/mysql
  3. datadir = /opt/mysql/data
  4. log-error = /opt/mysql/data/error.log
  5. pid-file = /opt/mysql/data/mysql.pid
  6. port = 3306
  7. EOF'

  

清除残留文件:

  1. sudo sh -c 'for file in /etc/mysql/my.cnf /etc/my.cnf ; do [ -f $file ] && rm -f $file ; done'

启动:

  1. sudo /opt/mysql/support-files/mysql.server start

成功则显示: 

测试:

  1. /opt/mysql/bin/mysqladmin ping

成功则显示: 

查看数据库:

  1. /opt/mysql/bin/mysql -u root -e 'show databases;'

关闭:

  1. sudo /opt/mysql/support-files/mysql.server stop

成功则显示: 

PHP编译安装

安装依赖:

最后三个文件可以从这里下载。

  1. cd Downloads/
  2. sudo yum install zlib1g-dev libbz2-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libfreetype6-dev libmcrypt-dev libxml2-dev
  3. sudo yum install bzip2-devel.x86_64 -y
  4. sudo yum -y install curl-devel
  5. sudo yum install openssl.x86_64 openssl-devel.x86_64 -y
  6. sudo yum install libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 -y
  7. sudo yum install libjpeg libjpeg-devel libpng libpng-devel

  

编译安装:

  1. cd Downloads/
  2. wget http://labfile.oss.aliyuncs.com/php-5.5.21.tar.gz
  3. tar -zxvf php-5.5.21.tar.gz
  4. cd php-5.5.21
  5. ./configure --prefix=/opt/php --with-bz2 --with-curl --with-jpeg-dir --with-gd --enable-shared --enable-mbstring --with-mcrypt --with-mysql=/opt/mysql --with-pdo-mysql=/opt/mysql --with-mysqli=/opt/mysql/bin/mysql_config --enable-fpm --enable-phar --enable-bcmath --with-zlib --enable-zip --enable-ftp --with-gettext --enable-sockets --with-freetype-dir --with-config-file-path=/opt/php/etc/php.ini --with-config-file-scan-dir=/opt/php/etc/conf.d --with-apxs2=/opt/apache/bin/apxs
  6. sudo make
  7. sudo make install
  8. sudo cp php.ini-production /opt/php/etc/php.ini

  

检查php是否支持mysql:

  1. /opt/php/bin/php -m | grep mysql

若支持则显示: 

修改apache配置文件,添加php的支持配置:

  1. sudo sh -c 'cat >> /opt/apache/conf/httpd.conf <<EOF
  2. <IfModule mime_module>
  3. AddType application/x-httpd-php .php
  4. </IfModule>
  5. EOF'

  

若关闭则开启apache,否则重新启动apache:

  1. sudo /opt/apache/bin/apachectl -k restart

测试:

  1. sudo sh -c 'echo "<?php echo phpinfo(); ?>" > /opt/apache/htdocs/test.php'

在浏览器输入:

  1. http://localhost/test.php

配置成功则显示php信息: 

在php.ini中加载模块:

  1. sudo sh -c 'echo "extension=ftp.so" >> /opt/php/etc/php.ini'
  • 1

LAMP配置

php配置:

配置文件/opt/php/etc/php.ini:

  1. ###常规配置
  2. engine = On
  3. short_open_tag = Off #tags识别
  4. asp_tags = Off #asp tags识别
  5. precision = 14 #浮点类型数显示时的有效位数
  6. output_buffering = 4096 #输出缓存允许你在输出正文内容之后发送 header
  7. implicit_flush = Off #告诉输出层在每个输出块之后自动刷新自身数据
  8. disable_functions = #关闭特定函数
  9. display_errors = Off #显示错误信息
  10. log_errors = On #在日志文件里记录错误
  11. request_order = "GP" #GET POST
  12. register_argc_argv = On #是否声明 argv和argc 变量
  13. post_max_size = 8M #最大POST大小
  14. file_uploads = On #是否允许HTTP方式文件上载
  15. upload_tmp_dir = #用于HTTP上载的文件的临时目录
  16. upload_max_filesize = 2M #上载文件的最大大小
  17. max_file_uploads = 20 #每次最大上传文件个数
  18. allow_url_fopen = On #是否允许把URLs当作http:.. 或把文件当作ftp:...
  19. default_socket_timeout = 60 #默认socker超时时间
  20. #MySQL相关
  21. mysql.allow_persistent = On #允许持久连接
  22. mysql.cache_size = 2000 #缓存大小
  23. mysql.max_persistent = -1 #持久连接的最大数目 -1不限制
  24. mysql.max_links = -1 #最大链接
  25. mysql.connect_timeout = 60 #连接超时时间
  26. #session相关
  27. session.save_handler = files #用于保存/取回数据的控制方式
  28. session.use_cookies = 1 #是否使用cookies
  29. session.name = PHPSESSID #设置cookies名
  30. session.use_only_cookies = 1 #强制SESSION ID必须以COOKIE传递
  31. session.auto_start = 0 #在请求启动时初始化session
  32. session.cookie_lifetime = 0 #cookies保持时间
  33. #session垃圾回收参数
  34. session.gc_probability = 1 #按百分比整理
  35. session.gc_divisor = 1000 #每次请求时有1/1000的机会启动"垃圾回收"进程
  36. #Session ID传递参数
  37. session.use_trans_sid = 0 #使用URL的方式传递session id
  38. session.hash_function = 0 #生成SID MD5算法
  39. session.hash_bits_per_character = 5 #指定在SID字符串中的每个字符内保存多少bit
  40. #常用配置参数
  41. max_execution_time 30 #一个脚本可使用多少 CPU 秒
  42. max_input_time 60 #一个脚本等待输入数据的时间有多长(秒)
  43. memory_limit 32M #在被取消之前,一个脚本可使用多少内存(字节)
  44. output_buffering 4096 #数据发送给客户机之前,有多少数据(字节)需要缓存

apache配置:

apache主配置文件/opt/apache/conf/httpd.conf:

  1. #apache服务根目录
  2. ServerRoot "/opt/apache"
  3. #服务管理员
  4. ServerAdmin you@example.com
  5. #监听端口
  6. Listen 80
  7. #默认首页
  8. DirectoryIndex index.php
  9. #加载php模块
  10. LoadModule php5_module modules/libphp5.so
  11. #解析php
  12. AddType application/x-httpd-php .php
  1. #目录权限参数
  2. DocumentRoot "/opt/apache/htdocs" #WEB文件根目录
  3. <Directory "/opt/apache/htdocs">
  4. # 官方文档链接 http://httpd.apache.org/docs/2.2/mod/core.html
  5. Options Indexes FollowSymLinks
  6. AllowOverride None
  7. Order allow,deny
  8. Allow from all #允许所有请求
  9. </Directory>

AllowOverride参数详解:

  1. none 不允许.htaccess使用任何指令。
  2. AuthConfig 允许使用所有的权限指令,包括 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require。
  3. FileInfo 允许使用文件控制类型的指令。包括 AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority。
  4. Indexes 允许使用目录控制类型的指令。包括 AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName。
  5. Limit 允许使用权限控制指令。包括Allow Deny和Order。
  6. Options 允许使用控制目录特征的指令,包括Options 和XBitHack。

Options参数详解:

  1. All 表示除MultiViews之外的所有特性。这也是Options指令的默认设置。
  2. None 表示不启用任何的服务器特性。
  3. FollowSymLinks 服务器允许在此目录中使用符号连接。如果该配置选项位于配置段中,将会被忽略。
  4. Indexes 如果输入的网址对应服务器上的一个文件目录,而此目录中又没有DirectoryIndex指令
  5. MultiViews 允许使用mod_negotiation模块提供内容协商的”多重视图”。如果客户端请求的路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹配客户端要求的文件。
  6. SymLinksIfOwnerMatch 服务器仅在符号连接与目标文件或目录的所有者具有相同的用户ID时才使用它。只有当符号连接和符号连接指向的目标文件或目录的所有者是同一用户时,才会使用符号连接。
  7. ExecCGI 允许使用mod_cgi模块执行CGI脚本。
  8. Includes 允许使用mod_include模块提供的服务器端包含功能
  9. IncludesNOEXEC 允许服务器端包含,但禁用”#exec cmd”和”#exec cgi”。但仍可以从ScriptAlias目录使用”#include virtual”虚拟CGI脚本。
  1. #日志配置参数
  2. ErrorLog "logs/error_log"
  3. LogLevel warn #错误日志记录等级
  4. <IfModule log_config_module>
  5. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  6. LogFormat "%h %l %u %t \"%r\" %>s %b" common #自定义日志 名为common
  7. <IfModule logio_module>
  8. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  9. </IfModule>
  10. CustomLog "logs/access_log" common #日志路径 使用名为common的自定义格式
  11. </IfModule>

LogLevel记录日志等级:

  1. error 错误情况。
  2. warn 警告情况。
  3. info 普通信息。
  4. debug 出错级别信息。

日志格式: 
1. %h - 客户端的ip地址或主机名。 
2. %l - The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 “-” 表示此处信息无效。 
3. %u - 由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 “-” 表示此处信息无效。 
4. %t - 服务器完成对请求的处理时的时间。 
5. “%r” - 引号中是客户发出的包含了许多有用信息的请求内容。 
6. %>s - 这个是服务器返回给客户端的状态码。 
7. %b - 最后这项是返回给客户端的不包括响应头的字节数。 
8. “%{Referer}i” - 此项指明了该请求是从被哪个网页提交过来的。 
9. “%{User-Agent}i” - 此项是客户浏览器提供的浏览器识别信息。

  1. #实际访问日志
  2. 192.168.1.166 - - [04/Feb/2015:12:52:35 +0800] "GET / HTTP/1.1" 200 25
  1. #基于域名的虚拟主机
  2. <VirtualHost *:80>
  3. DocumentRoot /web1
  4. ServerName web1.com
  5. ErrorLog /app/apache/logs/error_log
  6. CustomLog /app/apache/logs/access_log combined
  7. </VirtualHost>
  8. <VirtualHost *:80>
  9. DocumentRoot /web2
  10. ServerName web2.com
  11. </VirtualHost>
  12. #基于IP的虚拟主机
  13. <VirtualHost 210.20.30.40>
  14. DocumentRoot /web1
  15. ServerName web1.com
  16. </VirtualHost>
  17. <VirtualHost 210.20.30.50>
  18. DocumentRoot web2
  19. ServerName web2.com

lamp :在Linux 下搭建apache、Mysql、php的更多相关文章

  1. windows下搭建Apache+Mysql+PHP开发环境

    原文:windows下搭建Apache+Mysql+PHP开发环境 要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); Apache2.2;MySQL Server 5. ...

  2. linux下搭建nginx+mysql+apache

    对于开发人员来说,进行Web开发时可以用Apache进行网站测试,然而当一个Web程序进行发布时,Apache中并发性能差就显得很突出,这时配置一台Nginx服务器显得尤为重要. 以下是配置Nginx ...

  3. Linux下搭建Nginx+MySQL+PHP

    在CentOS6.3下实践通过. 1.关闭防火墙 [root@CentOS ~]# chkconfig iptables off 2.关闭selinux vi /etc/sysconfig/selin ...

  4. linux下搭建lamp环境以及安装swoole扩展

    linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5 ...

  5. (转载)Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记

    Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记 Linux下配LMAP环境,花了我好几天的时间.之前没有配置过,网上的安装资料比较混乱,加上我用的版本问题,安装过程 ...

  6. linux下nginx+php+mysql 自助环境搭建

    ++++++++++++++++++++++++++++++++++++++++++++++linux下nginx+php+mysql环境搭建+++++++++++++++++++++++++++++ ...

  7. linux 下 jdk+tomcat+mysql 的 jsp 环境搭建

    JDK 在 linux 下安装 1.          把安装文件放在 /opt 下,并执行 [root@localhost opt]# ./jdk-1_5_0_06-linux-i586.bin 并 ...

  8. windows下搭建apache+php+mysql

    在windows下,apache和mysql都有自动化安装的程序,本篇则侧重从apache和php版本选择,php线程安全,apache和mysql安装启动服务,工作环境配置这几个方面来阐述windo ...

  9. linux下如何查看mysql、apache是否安装,并卸载

    --linux下如何查看mysql.apache是否安装,并卸载? http://blog.163.com/dengxiuhua126@126/blog/static/1186077720137311 ...

随机推荐

  1. vuejs是如何编译checkbox数组的v-model的

    随便用官方的例子编译了一下, 发现如下 _c("input", { directives: [ { name: "model", rawName: " ...

  2. 以太坊Geth通过私钥导入新地址到钱包步骤(3种方法)

    一: 通过Geth客户端导入私钥: Open TextEdit Paste key into TextEdit without any extra characters or quotations S ...

  3. Objective-C中的self与LLVM Clang新引入的instancetype

    我们知道,大部分面向对象语言对于一个类的成员方法都有一个隐含的参数.在C++.Java.C#和JavaScript中是this,而在Objective-C中则是self.当然,由于Objective- ...

  4. centos7.4出现yum command not found

    购买的云服务器运行yum命令出现yum command not found. 通过将云主机自带的yum和python卸载掉,并且同时需要关注/usr/bin/yum文件的首行解释.我定义其为" ...

  5. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_25-前后端请求响应流程小结

    看图

  6. ES6深入浅出_汇总贴

    H:\BaiDu\ES6深入浅出-wjw ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let https:/ ...

  7. jenkins:执行远程shell脚本时,脚本没有生效

    问题: jenkins远程部署一台机器时,jenkins构建显示成功,但是查看服务日志却没有真正执行的sh run.sh脚本,导致服务并没有启动 解决: 只需要在命令最上方加上source /etc/ ...

  8. webdriervAPI(多表单切换)

    讲三个方法 driver.switch_to.frame("第一个iframe标签属性值") driver.switch_to.frame(" 第二个iframe标签属性 ...

  9. Lua实现简单的类,继承,多态 实例

    -- 类的例子,长方形的类,具备一个打印面积方法和一个设置长宽的方法 --lua实现类的思路,定义出来的对象在lua中可以访问自己有的成员,访问成员函数实际上是通过元表的__index方法实现的,具体 ...

  10. JAVA数据结构和算法 2-数组

    数组中使用的主要算法:插入.查找(线性查找-无序/二分查找-有序).删除 在JAVA中数组属于对象类型: 1.创建方法有3种: 或者 数组一旦创建,大小不可改变.数组大小可以通过length字段获得: ...