操作系统说明:
操作系统 |
版本 |
linux |
red hat release 6.4 |
关键软件包说明;
软件包 |
版本 |
目录 |
运行用户 |
httpd-2.2.27.tar.gz |
2.2.27 |
/usr/local/apache |
htdocs |
php-5.2.5.tar.bz2 |
5.2.5 |
/usr/local/php-5.2 |
root |
php-5.5.17.tar.gz |
5.5 |
/usr/local/php-5.5 |
root |
mysql-5.5.32-linux2.6-x86_64.tar.gz |
5.5 |
/usr/local/mysql-5.5 |
mysql |
目录说明:
挂载点备注 |
一级目录备注 |
一级目录备注 |
二级目录 |
二级目录备注 |
三级目录 |
三级目录备注 |
|
/data |
mysql |
mysql数据文件 |
|||||
WEBLOG |
php日志 |
test1.test.test.cn |
某站点日志 |
||||
/home |
htdocs |
apache家目录 |
www |
apache主站 |
test1 |
项目名称 |
|
安装步骤:
1、添加apache用户,并安装依赖包
useradd -d /home/htdoc -m htdocs
yum -y install openssl openssl-devel zlib zlib-devel
apache安装
1、软件包准备:
cd /usr/local/src/
wget http://archive.apache.org/dist/httpd/httpd-2.2.27.tar.gz
tar -zxf httpd-2.2.27.tar.gz
2、编译安装httpd:
./configure
--prefix=/usr/local/apache
--enable-dav
--enable-dav-fs
--enable-deflate
--enable-expires
--enable-so
--enable-modules=shared
--enable-module=most
--enable-mods-shared=all
--enable-rewrite
--enable-ssl
--with-mpm=worker
--enable-dav --enable-dav-fs #具备文件上传功能
--enable-deflate #对网站访问提供gzip功能,压缩文本
--enable-expires #提供浏览器缓存功能,可缓存图片静态文件等
--enable-modules=shared #动态加载所有模块
--enable-module=most #将一些不在缺省中的模块编译进来
--enable-so #让apache核心装载DSO
--enable-rewrite #启用重写功能
--enable-ssl #开启ssl功能
--with-mpm=worker #默认是prefork模式,以进程方式运行,稳定性高。worker模式以线程方式运行,可处理大量并发。
3、关键目录及命令说明
/usr/local/apache/bin/
├── ab #压测工具,例如:./ab -n 3000 -c 3000 http://test1.test.test.cn/ -n每次并发量 -c 并发多少次
├── apachectl #启动命令
├── apxs #安装扩展模块命令,在编译php时候也会用到此命令
├── httpd #apache控制命令程序,被apachectl调用
└── rotatelogs #apache自带的日志轮询工具,用于日志切割
/usr/local/apache/conf/
├── extra #额外的apache配置文件,相当于httpd.conf的子配置文件
├── httpd.conf #apache主配置文件
4、创建相关目录
mkdir -p /home/htdocs/www /data/WEBLOG
chown htdocs:htdocs /home/htdocs/www /data/WEBLOG -R
5、修改httpd.conf
prefork模式或者worker模式下设定(两种模式均可用以下配置,特殊地方有标注)
KeepAlive On #开启保持连接功能
StartServers 10 # 启动Apache时创建的子进程数
MinSpareServers 10 #处于空闲状态的最小子进程数,与上面参数保持一致(仅限prefork模式)
MaxSpareServers 15 #处于空闲状态的最大子进程数(仅限prefork模式)
MinSpareThreads 15 #处于空闲状态最小线程数(仅限worker模式)
MaxSpareThreads 25 #处于空闲状态最大线程数(仅限worker模式)
ThreadsPerChild 500 #可同时启用多少个线程(仅限worker模式)
ServerLimit 4000 #允许创建的最大进程数
MaxClients 3000 #允许并发最大请求数
MaxRequestsPerChild 10000 #单个子进程可处理最大请求数
MaxKeepAliveRequests 400 #最大保持连接数目
KeepAliveTimeout 10 #保持连接活跃时间
Timeout 30 #接收和发送数据的超时时间
修改apache运行用户
User htdocs
Group htdocs
注释掉非必须模块的加载,仅保留必须模块
必须模块列表如下
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule expires_module modules/mod_expires.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule php5_module modules/libphp5.so
修改DocumentRoot
DocumentRoot "/home/htdocs/www"
禁用目录索引,禁止用户覆盖(重载)
此项可以加快服务器速度,因为它不在为每个请求寻找每个目录访问控制文件
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/home/htdocs/www">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
3.6. 拒绝访问.htaccess文件和.svn目录
<FilesMatch "^.ht">
Order allow,deny
Deny from all
</FilesMatch>
<DirectoryMatch ".svn/">
Order allow,deny
Deny from all
</DirectoryMatch>
删除Alias模块关于cgi-bin的信息(根据实际情况选择)
#ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
开启php模块支持
LoadModule php5_module modules/libphp5.so
设置PHP文件名后缀
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
禁用CGI(看情况选择)
#<Directory "/usr/local/apache/cgi-bin">
#AllowOverride None
#Options None
#Order allow,deny
#Allow from all
#</Directory>
设置默认首页文件
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>
配置压缩功能(根据实际情况添加)
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
AddOutputFilterByType DEFLATE text/html test/plain text/xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/css
</ifmodule>
隐藏apache Header版本相关信息
ServerTokens Prod
Serversignature off
设置浏览器匹配
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
增加虚拟主机及日志轮询
<VirtualHost *:80>
DocumentRoot /home/htdocs/www/test1.test.test.cn
ServerName test1.test.test.cn
CustomLog "|/usr/local/apache/bin/rotatelogs -f /data/WEBLOG/test1.test.test.cn/access_log_%Y%m%d 86400 480" common
</VirtualHost>
全局缓存功能(慎用)
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType video/x-flv "access plus 1 month"
限制用户访问
以web程序test为例,现在需要仅支持开发部访问,且开发部IP为192.168.8.194,那么需要进行如下配置:
<Directory "/home/htdocs/www/test1.test.test.cn">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from 192.168.8.194
站点例子:
<VirtualHost *:80>
DocumentRoot /home/htdocs/www/test1.test.test.cn
ServerName test1.test.test.cn
AddHandler fcgid-script .php #可支持多个版本php
FcgidWrapper /usr/local/php_5.5/bin/php-cgi .php
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
FcgidMaxRequestsPerProcess 1000
ErrorLog /data/WEBLOG/test1.test.test.cn/error_log
CustomLog /usr/local/apache/bin/rotatelogs -f /data/WEBLOG/test1.test.test.cn/access_log_%Y%m%d 86400 480" common
<Directory "/home/htdocs/www/test1.test.test.cn">
Options +ExecCGI
</Directory>
</VirtualHost>
mysql安装
1、添加用户
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql
2、创建数据目录
mkdir /data/mysql -p
wget http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
tar -zxf cmake-2.8.8.tar.gz
cd cmake-2.8.8
./configure && make && make install
4、安装mysql
tar -zxvf mysql-5.5.32.tar.gz
cd /usr/local/src/mysql-5.5.32
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5
-DMYSQL_DATADIR=/data/mysql/
-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock
-DENABLED_LOCAL_INFILE=1
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
make && make install
5、设置mysql启动脚本
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
6、设置配置文件
cp /usr/local/mysql-5.5/support-files/my-large.cnf /etc/my.cnf
7、初始化数据库
/usr/local/mysql-5.5/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.5 --datadir=/data/mysql/
8、添加环境变量
echo PATH=$PATH:$HOME/bin:/usr/local/mysql-5.5/bin >> /root/.bash_profile
source /root/.bash_profile
mysqladmin -u root password 'gyxt123qwe'
PHP安装
1、安装依赖包
yum -y install wget unzip zlib-devel gcc gcc-c++ automake autoconf libtool lrzsz sysstat vim lsof telnet make ncurses ncurses-devel openssl openssl-devel zlib libxml libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel libxslt libxslt-devel freetype-devel libtool-ltdl-devel flex
2、安装加密扩展库:
tar -zxf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure && make && make install
ldconfig
cd libltdl/
./configure --enable-ltdl-install && make && make install
tar zxf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure && make && make install
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/bin/libmcrypt-config /usr/bin/libmcrypt-config
tar -zxf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
ldconfig
./configure && make && make install
如果遇到如下错误:
configure: error: "You need at least libmhash 0.8.15 to compile this program. http://mhash.sf.net/"
编辑vim /etc/ld.so.conf
添加一行:/usr/local/lib
再次执行ldconfig即可
3、安装php
PHP5.5安装:
tar -zxf php-5.5.17.tar.gz
cd php-5.5.17
./configure
--prefix=/usr/local/php-5.5
--with-mhash
--with-apxs2=/usr/local/apache/bin/apxs
--with-iconv
--with-mysql=/usr/local/mysql-5.5/
--with-curl
--with-libxml-dir
--with-xsl
--with-gd
--with-jpeg-dir
--with-zlib
--with-png-dir
--with-freetype-dir
--with-xmlrpc
--with-mcrypt
--enable-xml
--enable-gd-native-ttf
--enable-mbregex
--enable-sockets
--enable-mbstring
--enable-static
--enable-pcntl
--enable-sysvsem
--enable-shmop
--enable-maintainer-zts
--enable-inline-optimization
--enable-wddx
--enable-zip
--enable-calendar
--enable-bcmath
--enable-soap
--with-openssl
--disable-ipv6
--disable-debug
--disable-maintainer-zts
--disable-fileinfo
--enable-pdo
--with-pdo-sqlite
--with-pdo-mysql=/usr/local/mysql-5.5/bin/mysql_config
tip:
--with-pdo-dblib=/usr/local/freetds 调用mssql
--enable-fpm --enable-fastCGI --with-fpm-user=www --with-fpm-group=www 使用nginx时再用此参数
编译安装
make && make install
cp php.ini-production /usr/local/php-5.5/etc/php.ini
php5.2安装
tar -jxf php-5.2.5.tar.bz2
cd php-5.2.5
./configure
--prefix=/usr/local/php-5.2
--with-mhash
--with-apxs2=/usr/local/apache/bin/apxs
--with-iconv
--with-mysql=/usr/local/mysql-5.5/
--with-curl
--with-libxml-dir
--with-xsl
--with-gd
--with-jpeg-dir
--with-zlib
--with-png-dir
--with-freetype-dir
--with-xmlrpc
--with-mcrypt
--enable-xml
--enable-gd-native-ttf
--enable-mbregex
--enable-sockets
--enable-mbstring
--enable-static
--enable-pcntl
--enable-sysvsem
--enable-shmop
--enable-maintainer-zts
--enable-inline-optimization
--enable-wddx
--enable-zip
--enable-calendar
--enable-bcmath
--enable-soap
--disable-ipv6
--disable-debug
--disable-maintainer-zts
--disable-fileinfo
--enable-pdo
--with-pdo-sqlite
--with-pdo-mysql=/usr/local/mysql-5.5/bin/mysql_config
make && make install
附参数说明:
--prefix=/usr/local/php-5.5 php 安装目录
--with-apxs2=/usr/local/apache/bin/apxs 表示使用apache2.0以上版本,apxs表示使用的apache1.0版本
--with-config-file-path=/usr/local/PHP/etc 指定php.ini位置
--with-MySQL=/usr/local/mysql mysql安装目录,对mysql的支持
--with-MySQLi=/usr/local/mysql/bin/mysql_config mysqli文件目录,优化支持
--enable-safe-mode 打开安全模式
--enable-ftp 打开ftp的支持
--enable-zip 打开对zip的支持
--with-bz2 打开对bz2文件的支持
--with-jpeg-dir 打开对jpeg图片的支持
--with-png-dir 打开对png图片的支持
--with-freetype-dir 打开对freetype字体库的支持
--without-iconv 关闭iconv函数,种字符集间的转换
--with-libXML-dir 打开libxml2库的支持
--with-XMLrpc 打开xml-rpc的c语言
--with-zlib-dir 打开zlib库的支持
--with-gd 打开gd库的支持
--enable-gd-native-ttf 支持TrueType字符串函数库
--with-curl 打开curl浏览工具的支持
--with-curlwrappers 运用curl工具打开url流
--with-ttf 打开freetype1.*的支持,可以不加了
--with-xsl 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
--with-gettext 打开gnu 的gettext 支持,编码库用到
--with-pear 打开pear命令的支持,PHP扩展用的
--enable-calendar 打开日历扩展功能
--enable-mbstring 多字节,字符串的支持
--enable-bcmath 打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets 打开 sockets 支持
--enable-exif 图片的元数据支持
--enable-magic-quotes 魔术引用的支持
--disable-rpath 关闭额外的运行库文件
--disable-debug 关闭调试模式
--with-mime-magic=/usr/share/file/magic.mime 魔术头文件位置
CGI方式安装才用的参数
--enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-fastCGI 支持fastcgi方式启动PHP
--enable-force-CGI-redirect 同上 ,帮助里没有解释
--with-ncurses 支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl freeTDS需要用到的,可能是链接mssql 才用到
mhash和mcrypt算法的扩展
--with-mcrypt 算法
--with-mhash 算法
--with-gmp
--enable-inline-optimization
--with-openssl openssl的支持,加密传输时用到的
--enable-dbase
--with-pcre-dir=/usr/local/bin/pcre-config perl的正则库案安装位置
--disable-dmalloc
--with-gdbm dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte 支持zend的多字节
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap
安装memcache扩展
wget http://z.down.chinaz.com/upload/wget/memcache-2.2.5.tgz
tar xf memcache-2.2.5.tgz
cd memcache-2.2.5
/usr/local/php-5.5/bin/phpize
./configure --with-php-config=/usr/local/php-5.5/bin/php-config&&make&&make install
若遇到如下错误:
/usr/local/src/memcache-2.2.5/memcache.c:1982: error: too few arguments to function ‘zend_list_insert
编辑memcache.c
将错误信息提示的行中“zend_list_insert”的值(pool,le_memcache_pool)改为(pool,le_memcache_pool TSRMLS_CC)即可
安装redis扩展
wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz
tar zxvf phpredis-2.2.4.tar.gz
cd phpredis-2.2.4
/usr/local/php-5.5/bin/phpize
./configure --with-php-config=/usr/local/php-5.5/bin/php-config&&make&&make install