环境架设   /   1,038

LNAMP+CentOS 6.0(64位) 编译安装

本片内容是早期根据网络上收集的一些教程改造出来的,无论是当初的参考教程,还是最后总结出来的这篇,都有各种问题. 尽管最终问题都一一解决,但是有感于网络上关于LNAMP的配置教程鱼龙混杂, 最终解决问题的资料也就没有发布上来,因为我也担心仍会干扰有迫切需求的用户.

所以,如果有问题的话,大家可以留言交流!

一、系统约定

软件源代码包存放位置 /usr/local/src

二、系统环境初始化

01. 检查系统是否正常

# more /var/log/messages(检查有无系统级错误信息)
# dmesg (检查硬件设备是否有错误信息)
# cat /proc/cpuinfo (检查CPU频率是否正常)
# top (按1检测CPU核数是否正常,内存大小是否正常)
# ifconfig(检查网卡设置是否正确)
# ping www.163.com (检查网络是否正常)

02. 关闭不需要的服务

命令:

# ntsysv

以下仅列出需要启动的服务,未列出的服务一律推荐关闭:

atd
crond
irqbalance
microcode_ctl
network
sendmail
sshd
syslog

03.关闭SElinux

修改/etc/selinux/config文件中的SELINUX= 为 disabled
命令:

# vi /etc/selinux/config
:1,$s/SELINUX=enforcing/SELINUX=disabled/ge (vi的替换命令)

04.更换快速源:

# cd /etc/yum.repos.d/ (切换至yum.repos.d目录)
# mv CentOS-Base.repo CentOS-Base.repo.old (将原有CentOS-Base.repo文件备份并重命名)
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo (下载对应版本的repo文件,注意区分64位和32位系统)
# mv CentOS6-Base-163.repo CentOS-Base.repo (将下载好的文件重命名为CentOS-Base.repo)
# yum update (更新)

05.安装 vi

# yum -y install vim-enhanced

06. 配置 vim

# vi /root/.bashrc

在 alias mv=’mv -i’ 下面添加一行:

alias vi='vim'

保存退出。

# echo 'syntax on' > /root/.vimrc

07.定时校正服务器时钟,定时与中国国家授时中心授时服务器同步

# crontab –e

加入一行:(insertr命令)

*/30 * * * * ntpdate 210.72.145.44 > /dev/null 2>&1

08.删除Centos 多余组件,并更新及添加LNAMP所需组件:

# cd /etc/yum.repos.d/
# yum -y remove httpd mysql php
# yum -y install gcc gcc-c++ bison patch lsof unzip mlocate flex wget automake gd cpp gettext readline-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel libidn libidn-devel openldap openldap-devel openldap-clients openldap-servers nss_ldap expat-devel libtool libtool-ltdl-devel bison

安装autoconf-2.61

cd /usr/local/src
autoconf-2.61
wget -c http://files.directadmin.com/services/custombuild/autoconf-2.61.tar.gz
tar -zxvf autoconf-2.61.tar.gz
cd autoconf-2.61
./configure --prefix=/usr
make
make install
export PHP_AUTOCONF=/usr/bin/autoconf
export PHP_AUTOHEADER=/usr/bin/autoheader

09.关闭selinux:

/usr/sbin/setenforce 0   //立刻关闭 SELINUX,1为开启

10.增加系统默认启动:

echo "/usr/sbin/setenforce 0" >> /etc/rc.local

11. 重新启动

# init 6

12. 下载程序包

请到各程序官方网站下载最新的稳定版本存放到/usr/local/src/目录
此次LNAMP包含了:
Apache2、PHP、MySQL、Nginx四个主要程序。

命令:

cd /usr/local/src

Apache-2.4.2:

wget -c https://lnamp-web-server.googlecode.com/files/httpd-2.4.2.tar.gz
wget -c https://lnamp-web-server.googlecode.com/files/httpd-2.4.2-deps.tar.gz

PHP-5.4.2:

wget -c https://lnamp-web-server.googlecode.com/files/php-5.4.2.tar.gz

MySQL-5.5.24:

wget -c https://lnamp-web-server.googlecode.com/files/mysql-5.5.24.tar.tar.gz

Nginx-1.2.0:

wget -c https://lnamp-web-server.googlecode.com/files/nginx-1.2.0.tar.gz

其他所需组件:

php5-mail-header.patch(php补丁,有助于防止邮件发送被滥用)

wget -c http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/php5-mail-header.patch

ioncube_loaders_lin_x86-64

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.bz2

pcre

wget -c https://lnamp-web-server.googlecode.com/files/pcre-8.30.tar.gz

字符转换库libiconv

wget -c http://lnamp-web-server.googlecode.com/files/libiconv-1.14.tar.gz

libmcrypt

wget -c  http://lnamp-web-server.googlecode.com/files/libmcrypt-2.5.8.tar.gz
wget -c http://lnamp-web-server.googlecode.com/files/mcrypt-2.6.8.tar.gz

mhash

wget -c http://lnamp-web-server.googlecode.com/files/mhash-0.9.9.9.tar.gz

phpMyAdmin
wget -c http://lnamp-web-server.googlecode.com/files/phpMyAdmin-3.4.2-all-languages.zip

gd

wget -c http://lnamp-web-server.googlecode.com/files/gd-2.0.35.tar.gz

将eaccelerator换成xcache(xcache 2.0支持php 5.4)

wget http://xcache.lighttpd.net/pub/Releases/2.0.0/xcache-2.0.0.tar.gz

ImageMagick

wget -c https://lnamp-web-server.googlecode.com/files/ImageMagick-6.7.7.tar.gz

imagick

wget -c https://lnamp-web-server.googlecode.com/files/imagick-3.1.0RC1.tgz

PHP的memcache扩展

wget -c https://lnamp-web-server.googlecode.com/files/memcache-3.0.6.tgz

wget -c http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz

wget -c http://pecl.php.net/get/memcached-2.0.1.tgz

memcached缓存

wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz

libevent

wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz

PDO_MYSQL

wget https://lnamp-web-server.googlecode.com/files/PDO_MYSQL-1.0.2.tgz

cmake

wget -c http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz

rpaf模块(该模块用于apache做后端时获取访客真实的IP)

wget -c http://lnamp-web-server.googlecode.com/files/mod_rpaf-0.6.tar.gz

Tcmalloc(优化nginx、mysql)
64位操作系统请先安装 libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API

wget http://mirror.yongbok.net/nongnu/libunwind/libunwind-1.0.1.tar.gz
wget http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz

三、安装MySQL

创建用户、组和目录

/usr/sbin/groupadd mysql  #注释:创建mysql用户组
/usr/sbin/useradd -g mysql mysql -s /sbin/nologin  #注释:为mysql用户组添加mysql用户

mkdir /usr/local/software/mysql  #注释:创建安装目录
mkdir -p /home/data/mysql/{data,binlog,relaylog,mysql}  #注释:创建数据仓库目录。注释:-p 为parents的缩写,意思是创建所有遗失的父目录
chown -R mysql:mysql /home/data/mysql #注释: 将 /home/data/mysql 及其子目录下所有文件的属主和属组更改为mysql:mysql#

#使用Tcmalloc 优化nginx、mysql
#64位操作系统请先安装 libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API

安装libunwind

cd /usr/local/src/package
tar -zxvf libunwind-1.0.1.tar.gz
cd libunwind-1.0.1
./configure  --prefix=/usr/local/software/libunwind  #注释:指定安装目录为libunwind
make;make install 
ln -s /usr/local/software/libunwind/lib/libunwind.so.8 /usr/lib64/

安装gperftools

cd ../
tar -zxvf gperftools-2.0.tar.gz
cd gperftools-2.0
./configure  --prefix=/usr/local/software/gperftools --enable-frame-pointers    #注释:64位系统必须添加:--enable-frame-pointers
make;make install
echo "/usr/local/software/gperftools/lib" > /etc/ld.so.conf.d/usr_local_lib.conf #注释:在文件usr_local_lib.conf中添加这句:/usr/local/software/gperftools/lib
/sbin/ldconfig
cd ../

ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

安装cmake

tar -zxvf cmake-2.8.8.tar.gz 
cd cmake-2.8.8
./bootstrap --prefix=/usr/local/software/cmake
gmake
gmake install
export PATH=/usr/local/software/cmake/bin:$PATH
cd ../

安装mysql

cd /usr/local/src
tar -zxvf mysql-5.5.24.tar.tar.gz
cd mysql-5.5.24/
rm -rf CMakeCache.txt

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/software/mysql \
-DMYSQL_UNIX_ADDR=/home/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/data/mysql/data \
-DMYSQL_TCP_PORT=3306

#注释:如果报错没有找到cmake,那么再重新安装一次cmake
#注释:
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ —这个是指定mysql服务器启动后,联机套接字文件所处的位置和文件名
-DDEFAULT_CHARSET=utf8 \ —–使用 utf8 字符
-DWITH_EXTRA_CHARSETS=all \ —— 校验字符
-DWITH_MYISAM_STORAGE_ENGINE=1 \ ——-安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ —-安装 innodb 存储引擎
-DENABLED_LOCAL_INFILE=1 \ —-安装数据库分区)

make;make install
chmod +w /usr/local/software/mysql   #注释:修改mysql文件的权限
chown -R mysql:mysql /usr/local/software/mysql  #注释:修改文件的所有者为mysql用户
ln -s /usr/local/software/mysql/bin/mysql /sbin/mysql  #注释:设置软连接使mysql的bin命令能在shell中直接运行
ln -s /usr/local/software/mysql/bin/mysqladmin /sbin/mysqladmin #注释:设置软连接使mysqladmin的bin命令能在shell中直接运行
ln -s /usr/local/software/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18


#编辑mysql配置文件

cp /usr/local/software/mysql/support-files/my-medium.cnf /etc/my.cn  #注释:拷贝配置文件到/etc目录下并命名为my.cn
然后将“log-bin=mysql-bin”和“binlog_format=mixed”前添加“#”,以取消臃肿的log-bin记录 (注释:根据需要设置)
skip-locking 修改为 skip-external-locking

<strong>#注释:在展开的源码包目录中的“support-files”文件夹下,提供了多个MySQL服务器的配置文件,分别适用于不同负载的数据库服务器,一般选择my-medium.cnf文件即可,该配置文件适用于中等负载的数据库,可以满足大多数企业的应有需求。</strong>

#或者直接操作创建该文件:

cat >> /etc/my.cnf <<EOF
[client]
port    = 3306
socket  = /home/data/mysql/mysql.sock

[mysqld]
character_set_server = utf8
collation-server = utf8_general_ci
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user    = mysql
port    = 3306
socket  = /home/data/mysql/mysql.sock
basedir = /usr/local/software/mysql
datadir = /home/data/mysql/data
log-error = /home/data/mysql/mysql_error.log
pid-file = /home/data/mysql/mysql.pid
open_files_limit    = 10240
back_log = 600
max_connections = 5000
max_connect_errors = 6000
table_cache = 512
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 6M
join_buffer_size = 8M
thread_cache_size = 300
thread_concurrency = 8
query_cache_size = 512M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
thread_stack = 256K
transaction_isolation = READ-COMMITTED
tmp_table_size = 256M
max_heap_table_size = 256M
long_query_time = 3
log-slave-updates
log-bin = /home/data/mysql/binlog/binlog
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 100M
relay-log-index = /home/data/mysql/relaylog/relaylog
relay-log-info-file = /home/data/mysql/relaylog/relaylog
relay-log = /home/data/mysql/relaylog/relaylog
expire_logs_days = 30
key_buffer_size = 384M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

interactive_timeout = 120
wait_timeout = 120

skip_external_locking
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396

#master-host     =   192.168.1.2
#master-user     =   username
#master-password =   password
#master-port     =  3306

server-id = 1

skip-innodb

#log-slow-queries = /home/data/mysql/slow.log
#long_query_time = 10

[mysqldump]
quick
max_allowed_packet = 32M
EOF

#初始化mysql

/usr/local/software/mysql/scripts/mysql_install_db --basedir=/usr/local/software/mysql --datadir=/home/data/mysql/data --user=mysql

#利用TCMalloc提高mysql在高并发下的性能

vi /usr/local/software/mysql/bin/mysqld_safe

#在# executing mysqld_safe的下一行,加上:

export LD_PRELOAD=/usr/local/software/gperftools/lib/libtcmalloc.so

#或者通sed添加

sed -i '/# executing mysqld_safe/a\export LD_PRELOAD=/usr/local/lib/libtcmalloc.so' /usr/local/software/mysql/bin/mysqld_safe

#设置mysql启动文件

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

#修改启动脚本:添加basedir以及datadir的路径:

vi /etc/rc.d/init.d/mysqld
basedir=/usr/local/software/mysql
datadir=/home/data/mysql/data

#或者通sed修改

sed -i '46 s#basedir=#basedir=/usr/local/software/mysql#'  /etc/rc.d/init.d/mysqld
sed -i '47 s#datadir=#datadir=/home/data/mysql/data#'  /etc/rc.d/init.d/mysqld

#修改启动脚本的权限:

chmod 700 /etc/rc.d/init.d/mysqld

启动MySQL数据库

/etc/rc.d/init.d/mysqld start

#检查数据库的默认侦听端口 3306是否开启:

netstat -lnpt

#使用lsof命令查看tcmalloc是否起效

/usr/sbin/lsof -n | grep tcmalloc

如果发现以下信息,说明tcmalloc已经起效:

mysqld 10847 mysql mem REG 8,5 1203756 20484960 /usr/local/lib/libtcmalloc.so.0.0.0

#设置mysql开机启动

/sbin/chkconfig --add mysqld
/sbin/chkconfig --level 2345 mysqld on

#设置root密码(9527)

/sbin/mysqladmin -u root password 9527

#配置库文件搜索路径

echo "/usr/local/software/mysql/lib" >>/etc/ld.so.conf
/sbin/ldconfig

#添加/usr/local/software/mysql/bin到环境变量PATH中

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

#添加mysql管理帐户

mysql -h localhost -u root -p
msqyl> use mysql;
msqyl> grant all on *.* to 'guodegang'@'localhost' identified by '9527';#创建用户
mysql>flush privileges;               #刷新mysql的缓存,让以上设置立即生效
mysql>select Host,User,Password,Select_priv,Grant_priv from user; #显示所有用户
mysql>delete from user where user='';                  #删除user用户
mysql>delete from user where password='';               #删除user用户
mysql>delete from user where host='';                     #删除user用户
mysql>drop database test;             #删除默认的test数据库
mysql>flush privileges;               #刷新mysql的缓存,让以上设置立即生效

# msqyl> exit; #退出

#重启Mysql,使上述设置生效:

/etc/rc.d/init.d/mysqld restart (直接启动)
service mysqld restart (快捷启动)

四.安装apache 2.4.2:

/usr/sbin/groupadd www  #注释:创建www用户组
/usr/sbin/useradd -g www www -s /sbin/nologin  #注释:为www 用户组添加www 用户

mkdir -p /home/wwwroot/mainsite  #创建站点目录
chown -R www:www /home/wwwroot/mainsite  #mainsite为某一站点目录

mkdir -p /home/data/logs/mainsite #创建站点日志目录
chown -R www:www /home/data/logs/mainsite #logs/mainsite为某一站点日志

 

#安装pcre

cd /usr/local/src
tar -zxvf pcre-8.30.tar.gz
cd pcre-8.30
./configure --prefix=/usr/local/pcre
make;make install
cd ../

 

#apache分为两个包

tar -zxvf httpd-2.4.2.tar.gz
tar -zxvf httpd-2.4.2-deps.tar.gz
cd  httpd-2.4.2

#隐藏apache版本信息

sed -i 's/#define AP_SERVER_BASEPRODUCT "Apache"/#define AP_SERVER_BASEPRODUCT "Microsoft-IIS 5.0"/' include/ap_release.h
sed -i 's/#define PLATFORM "Unix"/#define PLATFORM "win32"/' os/unix/os.h

#开始编译apache

./configure --prefix=/usr/local/apache \
--enable-deflate \
--enable-headers \
--enable-mime-magic \
--enable-proxy \
--enable-ssl \
--enable-so \
--enable-rewrite \
--enable-suexec \
--with-suexec-bin=/usr/sbin/suexec \
--with-suexec-caller=www \
--with-pcre=/usr/local/pcre/bin/pcre-config \
--with-mpm=prefork \
--with-ssl=/usr

make;make install

#make的时候报错,“/usr/lib/libexpat.so: could not read symbols: File in wrong format”
#解决方法:

\cp /usr/lib64/libexpat.* /usr/lib/

#配置自启动文件

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
#在首行#!/bin/sh下添加
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/logs/httpd.pid
# config: /usr/local/apache/conf/httpd.conf

#或者直接使用sed添加

sed -i '/#!\/bin\/sh/a\# chkconfig: - 85 15\n# description: web server\n# processname: httpd\n# pidfile: /usr/local/apache/logs/httpd.pid\n# config: /usr/local/apache/conf/httpd.conf' /etc/init.d/httpd

#修改apache配置文件

cd /usr/local/apache/conf/
mv httpd.conf httpd.conf.bak  #备份httpd.conf文件

 

#创建apache配置httpd.conf文件

cat >> httpd.conf <<EOF
ServerRoot "/usr/local/apache"
Listen 81
Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
TraceEnable Off
ServerTokens ProductOnly
FileETag None
ServerSignature Off
HostnameLookups Off

# LoadModule foo_module modules/mod_foo.so
#
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_form_module modules/mod_auth_form.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule dumpio_module modules/mod_dumpio.so
#LoadModule buffer_module modules/mod_buffer.so
#LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule request_module modules/mod_request.so
#LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
#LoadModule remoteip_module modules/mod_remoteip.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_express_module modules/mod_proxy_express.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_dbd_module modules/mod_session_dbd.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

<IfModule unixd_module>
User www
Group www
</IfModule>

ServerAdmin king_819@163.com
<Directory />
AllowOverride none
Require all denied
</Directory>

DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

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

<Files ".ht*">
Require all denied
</Files>

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

<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
</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

</IfModule>

<IfModule cgid_module>
#Scriptsock logs/cgisock
</IfModule>

<Directory "/usr/local/apache/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>

RewriteEngine on
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .php3 .php4 .php5 .php6
AddType application/x-httpd-php-source .phps
</IfModule>

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
EOF

#配置mpm_prefork_module

mv extra/httpd-mpm.conf extra/httpd-mpm.conf.bak
cat >> extra/httpd-mpm.conf <<EOF
<IfModule mpm_prefork_module>
    ServerLimit   10000
    StartServers  5
    MinSpareServers  5
    MaxSpareServers  10
    MaxRequestWorkers  10000
    MaxConnectionsPerChild 10000
</IfModule>
EOF

#配置虚拟主机(目录指到/usr/local/apache/htdocs)

mv extra/httpd-vhosts.conf extra/httpd-vhosts.conf.bak

 

cat >> extra/httpd-vhosts.conf <<EOF
#Vhosts
<VirtualHost *:81>
    ServerAdmin aiwei.us@gmail.com
    DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
      Options Indexes FollowSymLinks
      AllowOverride None
      Require all granted
</Directory>
    ServerName 127.0.0.1
</VirtualHost>
EOF

#设置apache自启动

chmod 700 /etc/init.d/httpd
/etc/init.d/httpd start
/sbin/chkconfig --add httpd
/sbin/chkconfig --level 2345 httpd on
cd ../

五、安装PHP 5.4.2

#编译安装相关支持库

libiconv

cd /usr/local/src
tar -zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure
make;make install
/sbin/ldconfig
cd ../

建立libiconv库的软链接:
#64位系统使用

ln -sf /usr/local/lib/libiconv.so.2 /usr/lib64/libiconv.so.2
/sbin/ldconfig

libmcrypt

tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make;make install
/sbin/ldconfig

 

cd libltdl/
./configure --enable-ltdl-install
make;make install

建立libmcrypt库的软链接:
#64位系统使用

ln -sf /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la
ln -sf /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so
ln -sf /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4
ln -sf /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8
ln -sf /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
ldconfig

安装mhash

cd /usr/local/src
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make;make install
/sbin/ldconfig

建立libmhash相关的软链接:
#64位系统使用

ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1
ldconfig

安装mcrypt

cd /usr/local/src
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make;make install

编译php

这里我们为php打入补丁.有助于防止邮件发送被滥用(多用户)以及在邮件中提供有价值的信息.补丁介绍信息请点击:http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/

cd /usr/local/src/
tar -zxvf php-5.4.2.tar.gz
patch -d php-5.4.2 -p1 < php5-mail-header.patch
cd php-5.4.2
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-iconv-dir=/usr/local \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-ldap \
--with-ldap-sasl \
--with-xmlrpc \
--enable-zip \
--enable-soap

#如果报错误:configure: error: Cannot find ldap libraries in /usr/lib
先执行:

cp -frp /usr/lib64/libldap* /usr/lib/

再继续./configure…… …..

make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-production /usr/local/php/etc/php.ini
cd ../

安装php扩展模块

cd /usr/local/src
tar -zxvf memcache-3.0.6.tgz
cd memcache-3.0.6/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir --enable-memcache
make;make install
make test
cd ../

memcached扩展
#php的扩展memcache,不支持cas,所以我们要装memcached扩展,memcached扩展是基于libmemcached,所以要先安装libmemcached
#安装memcached的服务端支持库

cd /usr/local/src
tar -zxvf libevent-2.0.18-stable.tar.gz
cd libevent-2.0.18-stable
./configure
make;make install
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib

#安装Memcached服务端

cd /usr/local/src
tar -zxvf memcached-1.4.13.tar.gz
cd memcached-1.4.13
./configure --prefix=/usr/local/memcached --with-libevent=/usr
make;make install

#安装libmemcached

cd /usr/local/src
tar -zxvf libmemcached-1.0.2.tar.gz
cd libmemcached-1.0.2
./configure --prefix=/usr/local/libmemcached  --with-memcached
make;make install

#安装php的memcached扩展库

cd /usr/local/src
tar -zxvf memcached-2.0.1.tgz
cd memcached-2.0.1
/usr/local/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --with-memcached --with-zlib
make;make install

#因eaccelerator-0.9.6.1不支持php 5.4.0,所以就改用XCache 2.0.0

cd /usr/local/src
tar -zxvf xcache-2.0.0.tar.gz
cd xcache-2.0.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make;make install
cat >> /usr/local/php/etc/php.ini <<EOF
[xcache-common]
extension = xcache.so

[xcache]
xcache.shm_scheme =        "mmap"
xcache.size  =               256M
xcache.count =                 8
xcache.slots =                8K
xcache.ttl   =                 0
xcache.gc_interval =           0

xcache.var_size  =            8M
xcache.var_count =             8
xcache.var_slots =            8K
xcache.var_ttl   =             0
xcache.var_maxttl   =          0
xcache.var_gc_interval =     300

xcache.test =                Off
xcache.readonly_protection = Off
xcache.mmap_path =    "/dev/zero"

xcache.coredump_directory =   ""

xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =           Off

[xcache.coverager]
xcache.coverager =          Off

xcache.coveragedump_directory = ""
EOF

#安装pdo扩展

cd /usr/local/src
tar -zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/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 ../

#安装ImageMagick

cd /usr/local/src
tar -zxvf ImageMagick-6.7.7.tar.gz
cd ImageMagick-6.7.7-0
./configure --prefix=/usr/local/imagemagick
make;make install

 

#imagick最新正式版为imagick-3.0.1.tgz,但imagick-3.0.1.tgz在make的时候会出现大量的报错信息,所以就改用imagick-3.1.0RC1.tgz

cd /usr/local/src
tar -zxvf imagick-3.1.0RC1.tgz
cd imagick-3.1.0RC1/
export  PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
cd /usr/local/src
tar -jxf ioncube_loaders_lin_x86-64.tar.bz2
cd ioncube
mkdir /usr/local/ioncube
mv ioncube_loader_lin_5.2.so /usr/local/ioncube/

#修改php.ini添加php扩展

sed -i 's#; extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20100525/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "memcached.so"\nextension = "imagick.so"\n#' /usr/local/php/etc/php.ini
sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/software/php/etc/php.ini

 

#隐藏php版本

sed -i 's#expose_php = On#expose_php = Off#' /usr/local/php/etc/php.ini

#php安全设置,禁用函数

sed -i 's#disable_functions =#disable_functions =phpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source#' /usr/local/php/etc/php.ini

#重启apache,查看php扩展加载的情况

/etc/init.d/httpd restart

安装 Nginx

cd /usr/local/src
tar -zxvf nginx-1.2.0.tar.gz
cd nginx-1.2.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-pcre=/usr/local/src/pcre-8.30 --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-google_perftools_module
make;make install

cd ../

Nginx部分的配置文件需根据实际自身的实际情况设置,比如web目录等.所以,下文仅供参考

#添加nginx启动脚本

    cat >> /etc/init.d/nginx <<EOF
    #! /bin/sh
    ulimit -n 65535
    # Description: Startup script for nginx
    # chkconfig: 2345 55 25

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DESC="nginx daemon"
    NAME=nginx
    DAEMON=/usr/local/nginx/sbin/$NAME
    CONFIGFILE=/usr/local/nginx/conf/nginx.conf
    PIDFILE=/usr/local/nginx/logs/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME

    set -e
    [ -x "$DAEMON" ] || exit 0

    do_start() {
     $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
    }

    do_stop() {
     kill -QUIT `cat $PIDFILE` || echo -n "nginx not running"
    }

    do_reload() {
     kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
    }

    case "$1" in
     start)
     echo -n "Starting $DESC: $NAME"
     do_start
     echo "."
     /etc/init.d/httpd start
     ;;
     stop)
     echo -n "Stopping $DESC: $NAME"
     do_stop
     echo "."
     /etc/init.d/httpd stop
     ;;
     reload)
     echo -n "Reloading $DESC configuration..."
     do_reload
     echo "."
     /etc/init.d/httpd restart
     ;;
     restart)
     echo -n "Restarting $DESC: $NAME"
     do_stop
     sleep 1
     do_start
     echo "."
     /etc/init.d/httpd restart
     ;;
     *)
     echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
     exit 3
     ;;
    esac

    exit 0
    EOF

#添加nginx配置文件

mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

 

cat >> /usr/local/nginx/conf/nginx.conf <<EOF
user  www www;
worker_processes 8;
error_log  /usr/local/nginx/logs/nginx_error.log  crit;
pid        /usr/local/nginx/logs/nginx.pid;
#使用Tcmalloc优化nginx性能
google_perftools_profiles /var/tmp/tcmalloc;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
#工作模式及连接数上限
events
{
use epoll;
worker_connections 65535;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{
  #设定mime类型
  include       mime.types;
  default_type  application/octet-stream;
  #charset  gb2312;
  #设定请求缓冲
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 30m;
  sendfile on;
  tcp_nopush     on;
  keepalive_timeout 60;
  tcp_nodelay on;
  server_tokens off;
  client_body_buffer_size 512k;
  proxy_connect_timeout   5;
  proxy_send_timeout      60;
  proxy_read_timeout      5;
  proxy_buffer_size       16k;
  proxy_buffers           4 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  #  fastcgi_connect_timeout 300;
  #  fastcgi_send_timeout 300;
  #  fastcgi_read_timeout 300;
  #  fastcgi_buffer_size 64k;
  #  fastcgi_buffers 4 64k;
  #  fastcgi_busy_buffers_size 128k;
  #  fastcgi_temp_file_write_size 128k;
  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.1;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on;

  #limit_zone  crawler  $binary_remote_addr  10m;
  #定义访问日志的写入格式
  log_format  wwwlog  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
  log_format  bbslog  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';

  ###禁止通过ip访问站点
   server{
server_name _;
return 404;
  }
  server
  {
listen       80;
server_name  www.kerry.com;
index index.html index.htm index.php;#设定访问的默认首页地址
root  /data/www/kerry;#设定网站的资源存放路径
#limit_conn   crawler  20;
if (-d $request_filename)
{
  rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
#所有jsp的页面均交由tomcat处理
location ~ \.(php)?$ {
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:81;#转向tomcat处理
}
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ #设定访问静态文件直接读取不经过apache
{
  expires      30d;
}
location ~ .*\.(js|css)?$
{
  expires      1h;
}
access_log  /data/logs/kerry/kerry_nginx.log wwwlog;#设定访问日志的存放路径
   }
  server
  {
listen       80;
server_name  www.king.com;
index index.html index.htm index.php;#设定访问的默认首页地址
root  /data/www/king;#设定网站的资源存放路径
#limit_conn   crawler  20;
if (-d $request_filename)
{
  rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
#所有jsp的页面均交由tomcat处理
location ~ \.(php)?$ {
  proxy_set_header  Host $host;
                proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:81;#转向tomcat处理
}
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ #设定访问静态文件直接读取不经过apache
{
  expires      30d;
}
location ~ .*\.(js|css)?$
{
  expires      1h;
}
access_log  /data/logs/king/king_nginx.log bbslog;#设定访问日志的存放路径
   }
   server
   {
listen  80;
server_name  status.www.kerry.com;
location / {
stub_status on;
access_log   off;
}
   }
}
EOF

#将nginx添加到启动服务中

chmod 700 /etc/init.d/nginx
/etc/init.d/nginx start
/sbin/chkconfig --add nginx
/sbin/chkconfig --level 2345 nginx on

#每天定时切割Nginx日志

cat >>/usr/local/nginx/sbin/cut_nginx_log.sh<< EOF
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path_kerry="/data/logs/kerry/"
logs_path_kerry="/data/logs/king/"
mv ${logs_path_kerry}kerry_nginx.log ${logs_path_kerry}$kerry_nginx_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path_king}king_nginx.log ${logs_path_king}king_nginx_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/nginx.pid`
EOF

 

chmod +x /usr/local/nginx/sbin/cut_nginx_log.sh

#添加计划任务,每天凌晨00:00切割nginx访问日志

crontab -e
00 00 * * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh

为apache安装rpaf模块:

#为apache安装rpaf模块,该模块用于apache做后端时获取访客真实的IP
#该模块用于apache做后端时获取访客真实的IP(建议在LNAMP最后安装。。。之前安装有时会出错)

1)使用apxs安装模块,这里建议不要使用此前apache编译安装后的apxs,而是重新单独安装

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
yum install httpd-devel  #没有apxs的,先安装httpd-devel
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c   Apache 2.x 的安装方式

2)编辑/usr/local/software/apache/conf/httpd.conf,添加模块参数:

查找代码:

LoadModule php5_module modules/libphp5.so

在下方添加:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
#Mod_rpaf settings
RPAFenable On
RPAFproxy_ips 127.0.0.1 [your_ips]
RPAFsethostname On
RPAFheader X-Forwarded-For

上面出现的[your_ips]请修改为你本机所监听web服务的ip,多个IP用空格空开。

#重启

service nginx restart

网络发现者(aiwei.us)是梁道科技旗下以企业建站,微信开发,视觉设计为主要服务项目的互联网品牌。

我们为企业提供各类互联网平台项目的咨询顾问服务。依靠丰富的互联网实践经验,我们为企业从项目可行性分析,执行策略及方案等方方面面提供合理化建议。