LAMP环境搭建(httpd-2.4.10+mysql-5.6.23+php-5.4.37)

Linux系统 gongyj 1353℃ 已收录 0评论

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。搭建LAMP环境时需要按照一定顺序安装,按照Apache->MySQL -> PHP的顺序。

LAMP.jpg

一、系统环境

1、检测系统基础环境设置

以Centos-6.4-x86_64为例,安装时选择中文Minimal模式,关闭selinux功能。

[root@bbs ~]# uname -r
2.6.32-358.el6.x86_64
[root@bbs ~]# cat/etc/redhat-release
CentOS release 6.4 (Final)
[root@bbs ~]# vi/etc/sysconfig/iptables
iptables -A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT       #允许80端口通过防火墙
iptables -A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 3306 -j ACCEPT     #允许3306端口通过防火墙

2、下载所需软件包

部署环境之前,先准备好所需的软件包,建立一个ftp共享,下载httpd-2.4.10.tar.gz , apr-1.5.1.tar.gz , apr-util-1.5.4.tar.gz , openssl-1.01k.tar.gz , pcre-8.36.tar.gz , zlib-1.2.8.tar.gz , gd-2.0.35.tar.gz , mysql-5.6.23.tar.gz , php-5.4.37.tar.gz , libiconv-1.14.tar.gz , libmcrypt-2.5.8.tar.gz , mcrypt-2.6.8.tar.gz , mhash-0.9.9.9.tar.bz2 , PDO_MYSQL-1.0.2.tgz , ImageMagick-6.8.9-10.tar.gz , imagick-3.1.2.tgz 软件包到ftp下的目录lamp-bbs文件夹。并将Centos6.4关盘中yum软件仓库全都放到ftp的根目录下。修改yum配置指定的软件仓库位置如下:

[root@bbs ~]# vi /etc/yum.repos.d/local.repo
[local]
name=CentOS-6.4-LAN
baseurl=ftp://192.168.1.100/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[root@bbs ~]# yum clean all          #清空yum缓存
[root@bbs ~]# yum check-update       #检查可更新的rpm包

并将源码包全部下载到/usr/local/src/下。

二、编译安装Apache服务

1、安装apr和apr-until

apr 和apr-util 这两个软件是对后端服务软件进行优化的(apr,全称为Apache portable Run-time libraries,叫Apache可移植运行库,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库)。

yum install -y gcc gcc-c++ make
cd /usr/local/src
tar xf apr-1.5.1.tar.gz
cd apr-1.5.1
./configure --prefix=/usr/local/apr
make && make install
cd ..
tar xf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
make && make install
cd ..

2、安装openssl

openssl包括与加密相关的管理工具和库文件,可以向其它软件包提供加密支持(如浏览安全的https)。

yum install -y perl
tar xf openssl-1.0.1k.tar.gz
cd openssl-1.0.1k
./config --prefix=/usr/local/openssl/ enable-shared
make && make install
cd ..

3、安装pcre

perl兼容的正规表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。

tar xf pcre-8.36.tar.gz
cd pcre-8.36
./configure --prefix=/usr/local/pcre
make && make install
cd ..

4、安装zlib

zlib是提供数据压缩,解压的函式库。

tar xf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib
make && make install
cd ..

5、编译安装Apache 2.4.10

tar xf httpd-2.4.10.tar.gz
cd httpd-2.4.10
./configure --prefix=/usr/local/apache2 \
 --with-apr=/usr/local/apr \
 --with-apr-util=/usr/local/apr-util \
 --with-pcre=/usr/local/pcre \
 --with-ssl=/usr/local/openssl \
 --with-z=/usr/local/zlib/ \
 --enable-mods-shared=all \
 --enable-cache \
 #支持缓存
 --enable-file-cache \
 #支持文件缓存
 --enable-mem-cache \
 #支持记忆缓存
 --enable-disk-cache \
 #支持磁盘缓存
 --enable-so \
 #打开 so 模块,so 模块是用来提 DSO 支持的 apache 核心模块
 --enable-deflate=shared \
 #支持网页压缩
 --enable-expires=shared \
 #支持HTTP控制
 --enable-rewrite=shared \
 #支持URL重写
 --enable-static-support
 #使用静态连接(默认为动态连接)编译所有二进制支持程序
make && make install
cd ..

添加开机启动

echo "/usr/local/apache2/bin/apachectl" >> /etc/rc.local

或编写系统启动脚本,如下:

vi /etc/init.d/httpd
#!/bin/bash
# Startup script for the Apache2.0.X Web Server

# Fixed by Comsenz - Nanu (nanu@discuz.com)
# chkconfig: - 85 15
 
# Source function library.
. /etc/rc.d/init.d/functions
 
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
 
INITLOG_ARGS=""
 
apachectl=/usr/local/apache2/bin/apachectl
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
prog=httpd
RETVAL=0
 
start() {
echo -n $"Starting $prog: "
daemon $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/httpd
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd /var/run/httpd.pid
}
reload() {
echo -n $"Reloading $prog: "
killproc $httpd -HUP
RETVAL=$?
echo
}
 
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/run/httpd.pid ]; 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/init.d/httpd
chkconfig httpd on

三、编译安装MySQL数据库

1、编译安装MySQL 5.6.23

MySQL自5.5版本以后,就开始使用CMake编译工具了,因此,在安装源文件中是找不到configure文件的,所以要先安装CMake工具。

yum install -y gcc gcc-c++ make cmake bison perl ncurses ncurses-devel openssl-devel zlib-devel

添加mysql系统用户

useradd mysql -r -s /bin/false
cd /usr/local/src
tar xf mysql-5.6.23.tar.gz
cd mysql-5.6.23

建立相关目录

mkdir -p /datadir/mysqldata
mkdir -p /var/log/mysql_logs
mkdir /var/lib/mysql
chown -R mysql.mysql /datadir/mysqldata /var/log/mysql_logs /var/lib/mysql/

编译安装

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
 -DSYSCONFDIR=/etc/my.cnf \
 -DMYSQL_DATADIR=/datadir/mysqldata \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
 -DWTIH_LIBWRAP=0
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_MYISAM_STORAGE_ENGINE=1 \
 -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 \
 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
 -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \
 -DENABLED_LOCAL_INFILE=1 \
 -DEXTRA_CHARSETS=all \
 -DWITH_ZLIB=system \
 -DWITH_SSL=system
make && make install

如果需要更改配置,则:

make clean
rm -f CMakeCache.txt

拷贝配置文件和启动脚本

\cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
\cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

添加开机启动

chkconfig mysqld on

添加环境变量

echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile
source /etc/profile

建立链接文件,方便以后使用

ln -s /usr/local/mysql/lib/ /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
ln -s /usr/local/mysql/man/man1/* /usr/share/man/man1
ln -s /usr/local/mysql/man/man8/* /usr/share/man/man8

2、配置并启动mysql

初始化数据库

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/datadir/mysqldata

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use -explicit_defaults_for_timestamp server option (see documentation for more details).

这时候会出现以下警告,下面配置my.cnf会解决这个问题

详情请查看 MySQL 5.6 中 TIMESTAMP 的变化

修改目录下my.cnf,部分参数需要结合实际情况进行修改

[client]
socket = /var/lib/mysql/mysql.sock
port = 3306
 
[mysql]
prompt = mysql[\\d] >
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
no-auto-rehash
 
[mysqld]
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /datadir/mysqldata
socket = /var/lib/mysql/mysql.sock
pid-file = /datadir/mysqldata/mysql.pid
default_storage_engine = InnoDB
  
# InnoDB
#innodb_buffer_pool_size = 128M
#innodb_log_file_size = 48M
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
  
# MyISAM
#key_buffer_size = 48M
  
# character-set
character-set-server = utf8
collation-server = utf8_general_ci
  
# name-resolve
skip-host-cache
skip-name-resolve
  
# LOG
/var/log/mysql_logs
log_error = /var/log/mysql_logs/mysql-error.log
long_query_time = 1
slow-query-log
slow_query_log_file = /var/log/mysql_logs/mysql-slow.log
  
# Others
explicit_defaults_for_timestamp=true
#max_connections = 500
open_files_limit = 65535
sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"

启动数据库

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

或者使用

/etc/init.d/mysqld start

安全设置(设定初始密码,移除匿名用户,移除测试数据库):

/usr/local/mysql/bin/mysql_secure_installation

或使用以下命令

/usr/local/mysql/bin/mysqladmin -u root password "123,abc"
/usr/local/mysql/bin/mysql -uroot -p"123,abc" -e \
"delete from mysql.user where not (user = 'root' and host = 'localhost');
DROP DATABASE test;
flush privileges;"

四、编译安装PHP服务

安装php软件之前,需要安装以下库,方可更佳完美的支持php软件

yum install -y gcc gcc-c++ make autoconf automake bison zlib zlib-devel libxml2 libxml2-devel bzip2-devel openssl-devel openldap openldap-devel curl curl-devel libjpeg-devel libpng-devel libvpx libvpx-devel freetype-devel libXpm libXpm-devel fontconfig fontconfig-devel

1、安装libiconv

iconv函数库能够完成各种字符集间的转换

cd /usr/local/src
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure
make && make install
cd ..

2、安装libmcrypt

libmcrypt 可以使php支持更多加密算法。

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
./configure
make && make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make && make install
cd /usr/local/src

3、安装mhash

mhash是一个哈稀演函数库,它可以支持多种哈稀演算法

tar jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make && make install
echo "/usr/local/lib" >>/etc/ld.so.conf
/sbin/ldconfig

或做软链接

ln -s /usr/local/lib/libmcrypt.la             /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so             /usr/lib/libmcrypt.so
ln s /usr/local/lib/libmcrypt.so.4           /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8       /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a               /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la              /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so              /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2            /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so2.0.1         /usr/lib/libmhash.so2.0.1
cd ..

4、安装Mcrypt

Mcrypt扩展库可以实现加密解密功能

tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
/sbin/ldconfig
./configure
make && make install
cd ..

5、安装gd

gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。

tar zxvf gd-2.0.35.tar.gz
cd gd-2.0.35
./configure --prefix=/usr/local/gd/ --with-zlib=/usr/local/zlib/
make && make install
cd ..

6、安装re2c(k可以不安装)

tar xf re2c-0.13.7.5.tar.gz
cd re2c-0.13.7.5
./configure
make && make install
cd ..

7.编译安装PHP 5.4.37

tar zxvf php-5.4.37.tar.gz
cd php-5.4.37
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
\cp ./ext/phar/phar/phar.php   ./ext/phar/phar.phar
\cp -frp /usr/lib64/libldap*   /usr/lib/
./configure --prefix=/usr/local/php \
  --with-config-file-path=/usr/local/php/etc \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  #使Apache 2将PHP作为功能模块使用
 --enable-zip \
 --enable-ftp \
 --enable-mbstring \
 #启用多字节字符串函数库,主要作用在于检测和转换编码,目前php内部的编码只支持ISO-8859-*、EUC-JP、UTF-8,其他的编码的语言是没办法在php程序上正确显示的,所以我们要启用mbstring模块。
 --enable-bcmath \
 --enable-pcntl \
 --enable-exif \
 --enable-calendar \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-wddx \
 --enable-xml \
 --enable-shmop \
 --enable-fpm \
 --enable-mbregex \
 --enable-soap \
 --enable-sockets \
 --enable-gd-native-ttf \
 --enable-gd-jis-conv \
 --enable-inline-optimization \
 --enable-session \
 --disable-rpath \
 --with-iconv \
 --with-freetype-dir \
 --with-jpeg-dir \
 --with-png-dir \
 --with-zlib-dir=/usr/local/zlib \
 --with-bz2 \
 --with-libxml-dir=/usr \
 --with-ldap \
 --with-ldap-sasl \
 --with-curl \
 --with-mcrypt \
 --with-gd \
 --with-openssl-dir=/usr/local/openssl \
 --with-mhash \
 --with-xmlrpc \
 --without-pear \
 --with-gettext \
 --with-mysql=/usr/local/mysql \
 --with-mysqli=/usr/local/mysql/bin/mysql_config
make ZEND_EXTRA_LIBS='-liconv' && make install
cd ..

创建配置文件相关目录

\cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
\cp /usr/local/src/php-5.4.37/php.ini-production /usr/local/php/etc/php.ini

创建启动脚本

\cp /usr/local/src/php-5.4.37/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig php-fpm on

7、编译安装扩展模块PDO_MYSQL

tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
ln -s /usr/local/mysql/include/* /usr/local/include/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make && make install
cd ..

8、编译安装扩展模块imagick

yum install -y libtool-ltdl libtool-ltdl-devel
tar zxvf ImageMagick-6.8.9-10.tar.gz
cd ImageMagick-6.8.9-10
./configure --prefix=/usr/local/ImageMagick/ --enable-lzw --with-modules --with-quantum-depth=8 --enable-shared --disable-openmp
make && make install
cd ..

9、编译安装扩展模块imagick

tar zxvf imagick-3.1.2.tgz
cd imagick-3.1.2
/usr/local/php/bin/phpize 
export PKG_CONFIG_PATH=/usr/local/ImageMagick/lib/pkgconfig/
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/ImageMagick/
make && make install
cd ..

五、整合Apache与PHP

httpd调用php有4种模式:模块模式;CGI模式;fastCgi模式(apche内置进程管理器);fastCgi模式(php-fpm进程管理器)。我这里就试了2种:模块模式;fastCgi模式(php-fpm进程管理器)。

A.模块模式,这种模式最简单,在httpd.conf中增加如下两行代码:

LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php

注意,其中LoadModule php5_module modules/libphp5.so行,编译php的时候会自动添加,现在我们只需要添加AddType application/x-httpd-php .php行即可。

找到

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

将改行修改为

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

然后在VirtualHost添加以下内容:

vi /tmp/apache2/conf/httpd.conf
<virtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /www/test
    ServerName www.nobody.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
    AddType application/x-httpd-php .php
    AddType applicaiton/x-httpd-php-source .phps
</virtualHost>
#也可以将AddType按模块方式载入,就不需要上面两行AddType
<ifModule mime_module>
    AddType application/x-httpd-php .php
    AddType applicaiton/x-httpd-php-source .phps
</ifModule>

B.fastcgi模式,php-fpm进程管理器

首先添加fastcgi模块到httpd.conf配置文件:LoadModule fastcgi_module modules/mod_fastcgi.so。这种模式注不注释LoadModule php5_module modules/libphp5.so这行貌似没什么关系。虚拟主机配置为以下:

<virtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /www/test
    ServerName www.nobody.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
    ScriptAlias /cgi-bin/ "/usr/local/php/sbin/"   //这里要加个虚拟目录指定php,直接使用会出现权限不足
    FastCgiExternalServer /usr/local/php/sbin/php-fpm -host 127.0.0.1:9000   //这里因为是调用php-fpm管理fastcgi,因为这里是/usr/local/php/sbin/php-fpm,而不是什么cgi-bin
    AddType application/x-httpd-php .php
    AddHandler php-fastcgi .php
    Action php-fastcgi /cgi-bin/php-fpm
</virtualHost>

六、常见错误

1、apahce makes时报错:/usr/local/openssl/lib/libssl.a: could not read symbols: Bad value

原因在于openssl,需要编译成共享方式

重新编译安装

修正参数如下:

./config -fPIC --prefix=/usr/local/openssl/ enable-shared

其它设置,请参考《LNMP环境搭建(nginx-1.6.2+mysql-5.6.23+php-5.4.37)》


本站文章如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:http://blog.chopmoon.com/favorites/201.html
喜欢 (0)
发表我的评论
取消评论

表情 代码 贴图 加粗 链接 私信 删除线 签到

Hi,请填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
正在加载中……