lamp :在Linux 下搭建apache、Mysql、php

CentOS下搭建LAMP环境

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

CentOS安装

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

Apache编译安装

我选择了httpd 2.2这个版本,能够参考官方说明文档html

安装依赖:

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

########gcc、g++

sudo yum install gcc 
sudo yum install gcc-c++

  

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

########apr

wget http://labfile.oss.aliyuncs.com/apr-1.5.1.tar.gz
tar -zxvf apr-1.5.1.tar.gz
cd apr-1.5.1/
./configure --prefix=/opt/apr
sudo make && make install

  

 

########apr-util

cd Downloads/
wget http://labfile.oss.aliyuncs.com/apr-util-1.5.4.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/opt/apr-util --with-apr=/opt/apr
sudo make && make install

  

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

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

  

 

安装apache:

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

  

测试:

启动:web

sudo /opt/apache/bin/apachectl start

 

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

curl -I 127.0.0.1

若安装成功则以下: 
这里写图片描述算法

关闭:sql

sudo /opt/apache/bin/apachectl stop 

 

MySQL编译安装数据库

安装依赖:

###若先前编译过,则须要删除刚才编译生成的CMakeCache.txt文件
rm -f CMakeCache.txt

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

 

编译安装(时间较长):

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

  

 

建立mysql用户:

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

 

初始化数据目录:

sudo chown -R mysql:mysql /opt/mysql/data
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

  

 

修改配置文件:

sudo sh -c 'cat >> /opt/mysql/my.cnf <<EOF
basedir = /opt/mysql
datadir = /opt/mysql/data
log-error = /opt/mysql/data/error.log
pid-file = /opt/mysql/data/mysql.pid
port = 3306
EOF'

  

 

清除残留文件:

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

 

启动:

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

成功则显示: 
这里写图片描述

测试:

/opt/mysql/bin/mysqladmin ping

成功则显示: 
这里写图片描述

查看数据库:

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

关闭:

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

成功则显示: 
这里写图片描述

PHP编译安装

安装依赖:

最后三个文件能够从这里下载。

cd Downloads/
sudo yum install zlib1g-dev libbz2-dev libcurl4-gnutls-dev  libjpeg-dev libpng12-dev  libfreetype6-dev  libmcrypt-dev libxml2-dev
sudo yum install bzip2-devel.x86_64 -y
sudo yum -y install curl-devel
sudo yum install openssl.x86_64 openssl-devel.x86_64 -y
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
sudo yum install libjpeg libjpeg-devel libpng libpng-devel

  

 

编译安装:

cd Downloads/
wget http://labfile.oss.aliyuncs.com/php-5.5.21.tar.gz
tar -zxvf php-5.5.21.tar.gz
cd php-5.5.21
./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
sudo make
sudo make install
sudo cp php.ini-production /opt/php/etc/php.ini

  

 

检查php是否支持mysql:

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

 

若支持则显示: 
这里写图片描述

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

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

  

 

若关闭则开启apache,不然从新启动apache:

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

测试:

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

在浏览器输入:

http://localhost/test.php

配置成功则显示php信息: 
这里写图片描述

 

在php.ini中加载模块:

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

LAMP配置

php配置:

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

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

 

apache配置:

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

#apache服务根目录 ServerRoot "/opt/apache" #服务管理员 ServerAdmin you@example.com #监听端口 Listen 80 #默认首页 DirectoryIndex index.php #加载php模块 LoadModule php5_module modules/libphp5.so #解析php AddType application/x-httpd-php .php

 

#目录权限参数 DocumentRoot "/opt/apache/htdocs" #WEB文件根目录 <Directory "/opt/apache/htdocs"> # 官方文档连接 http://httpd.apache.org/docs/2.2/mod/core.html Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all #容许全部请求 </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脚本。
#日志配置参数 ErrorLog "logs/error_log" LogLevel warn #错误日志记录等级 <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common #自定义日志 名为common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" common #日志路径 使用名为common的自定义格式 </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” - 此项是客户浏览器提供的浏览器识别信息。

#实际访问日志 192.168.1.166 - - [04/Feb/2015:12:52:35 +0800] "GET / HTTP/1.1" 200 25

 

#基于域名的虚拟主机 <VirtualHost *:80> DocumentRoot /web1 ServerName web1.com ErrorLog /app/apache/logs/error_log CustomLog /app/apache/logs/access_log combined </VirtualHost> <VirtualHost *:80> DocumentRoot /web2 ServerName web2.com </VirtualHost> #基于IP的虚拟主机 <VirtualHost 210.20.30.40> DocumentRoot /web1 ServerName web1.com </VirtualHost> <VirtualHost 210.20.30.50> DocumentRoot web2 ServerName web2.com
相关文章
相关标签/搜索