实验环境:CentOS6.0

Port:80

ServerIP:192.168.0.1

#yum install httpd mysql mysql-server php php-devel php-mysql -y

1.php安全方面的设定

#vim  /etc/php.ini

************************************************************************************************

修改部分如下:

register_globals = off #默认是off、比较安全    on状态时程序不容易出错

log_errors = on

ignore_repeated_errors = on

ignore_repeated_source = on

#如果服务器很忙,建议将上述两个设置打开,忽略PHP程序的记录

display_errors = off

display_startup_errors = off

#以上两个选项在debug的时候打开即可,平时运行时请关闭

post_max_size = 20M   #最大支持上传的数据20M

file——uploads = on

upload_max_filesize = 16M  #最大支持16M的上传文件

memory_limit = 128M   #PHP可用的系统内存

*******************************************************************************************************

2.MySQL的基本设定

#vim /etc/my.cnf

*******************************************************************************************************

[mysqld]

default-storage-engine = innodb

#关于目录数据与语言的设置等

default-character-set = utf8

port = 3306

skip-locking

#关于内存的设置

#内存的简单计算方法为:

#key_buffer + ( sort_buffer + read_buffer ) * max_connection\

key_buffer              = 128M

sort_buffer_size        = 2M

read_buffer_size        = 2M

join_buffer_size        = 2M

max_connections         = 150

max_connect_errors      = 10

read_rnd_buffer_size    = 4M

max_allowed_packet      = 4M

table_cache             = 1024

myisam_sort_buffer_size = 32M

thread_cache            = 16

query_cache_size        = 16M

tmp_table_size          = 64M

wait_timeout            = 1200

thread_concurrency      = 8

innodb_data_file_path   = ibdata1:10M:autoextend

innodb_buffer_pool_size = 128M

innodb_additional_mem_pool_size = 32M

innodb_thread_concurrency = 16

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

**************************************************************************************************************

#/etc/init.d/mysql  start

#mysqladmin -u root password 'westos'

#mysql -u root -p     #输入密码即可登录mysql

3.Apache的配置

#yum install mod_perl -y #可以使用perl之类的网页程序(CGI)

#vim /etc/httpd/conf/httpd.conf

*************************************************************************************************************

改动的部分:(并不一定非得这样)

KeepAlive On #允许持续性的连接,即一个TCP连接可以具有多个文件资料传送的要求

MaxKeepAliveRequests 100 #该次持续性连接能够传输的最大数量

<IfModule prefork.c> #这个默认是对内存管理的相关设置(可以在/etc/sysconfig/httpd中选择)

StartServers       8 #启动httpd时唤醒几个PID

MinSpareServers    5 #最小备用PID

MaxSpareServers   20

ServerLimit      256 #服务器的限制

MaxClients       256 #最大的同时连接数

MaxRequestsPerChild  4000 #每个程序能够提供的最大传输次数要求

</IfModule>

Include conf.d/*.conf #放置到/etc/httpd/conf.d/*.conf的设置都会被读入

ServerAdmin root@localhost #服务出问题时汇报的E-Mail

ServerName Server1.example.com:80 #设置的主机名

UseCanonicalName Off #如果有多个主机名,建议开启,默认Off,只接受servername

#AddDefaultCharset UTF-8 #注释掉默认的utf8的编码方式,防止乱码,在网页编码时指定即可

DocumentRoot "/var/www/html" #放置首页文件的目录

<Directory /> #针对WWW服务器默认环境“/”的设置

    Options FollowSymLinks

    AllowOverride None

</Directory>

<Directory "/var/www/html"> #针对特定目录的限制

 Options Indexes FollowSymLinks #建议取消Indexes选项,为了安全;FollowSymLinks允许让连接文件有效地离开本目录

 AllowOverride None

 Order allow,deny

 Allow from all

</Directory>

DirectoryIndex index.html index.html.var #首页文件的文件名设置

Alias /icons/ "/var/www/icons/" #制作一个目录别名

<Directory "/var/www/icons">

    Options Indexes MultiViews FollowSymLinks  #MultiViews这个是对多国语言的支持

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

ExtendedStatus On #打开查询主机目前状态的开关选项,模块Apache已加载status_module modules/mod_status.so

<Location "/server-status">

    SetHandler server-status

    Order allow,deny

    Allow from all

</Location>

#############设立一个用户可以完全控制的首页######################

#UserDir disabled #默认没有用户能完全控制的首页

UserDir www #此处改为首页WWW可以完全由用户控制

Alias /student/ "/home/student/www/" #制作一个用户可以完全控制的目录

<Directory "/home/student/www">

    Options FollowSymLinks 

    AllowOverride None

    Order allow,deny

    Allow from all

<Limit GET POST OPTIONS> #允许GET、POST 、OPTIONS这三个操作

    Order allow,deny

    Allow from all

</Limit>

<LimitExcept GET POST OPTIONS> #仅允许GET、POST 、OPTIONS这三个操作,其它操作不允许

    Order deny,allow

    deny from all

</LimitExcept>

</Directory>

##############设置cgi、允许执行perl的cgi程序############

AddHandler cgi-script .cgi .pl #约在803行,增加允许perl程序

#ScriptAlias /perl/  "/var/www/perl" #脚本也可以使用别名

<Directory "/var/www/html/cgi"> #开放目录/var/www/html/的cgi功能

    Options +ExecCGI

    AllowOverride None

    Order allow,deny #限制的优先顺序

    Allow from all

    Deny  from 192.168.0.2 #这里的顺序可以理解为:所有的IP均允许访问,但是除了192.168.0.2

</Directory>

###############可以手动修改Apache报错的信息################

#    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var #可以指定需要显示的文件(显示其内容)

#    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var #也可以直接输出“****”一段文字

#    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var

#    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

#    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var

#    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var

#    ErrorDocument 410 /error/HTTP_GONE.html.var

#    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var

#    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var

#    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var

#    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var

#    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var

#    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var

#    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var

#    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var

#    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var

#    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

*****************************************************************************************************************

mkdir www

#chmod 755 www

#cd www

#echo 'Welcome to  home!'  > index.html

#ln -s /home/student/www   /var/www/html/student

#mkdir /var/www/html/cgi #将cgi文件放在此目录下,并且有X权限,用户访问http://IP/cgi/*.pl该cgi程序就能自动执行

#/etc/init.d/httpd restart

#setsebool -p httpd_can_network_connect=1

#setsebool -P httpd_enable_homedirs=1

#restorecon -Rv /home/

HTTP://192.168.0.1.server-status  (显示服务的状态、前提是ExtendedStatus On,并配置相关目录,只能在本主机上实现)

 

 

 

Apache——.htaccess与认证网页设定

1.建立受保护目录的数据

#mkdir /var/www/html/protect #建立需要保护的目录

#vim /var/www/html/protect/index.html #建立受保护目录的首页,用html语言写

******************************************************************************

<html>

<head><title>这是个测试网页</title></head>

<body>看到这个画面说明你已经可以进入受保护的网页了!</body>

</html>

******************************************************************************

2.以root的身份处理httpd.conf的设置数据

#vim /etc/httpd/conf/httpd.conf

*****************************************************************************

#约400行、确定有如下设置

AccessFileName  .htaccess

<Files ~ "^\.ht">

Order allow,deny

Deny from all

Satisfy All

</Files>

#在某个不受影响的地方加入这一段:

<Directory "/var/www/html/protect">

    AllowOverride AuthConfig

    Order allow,deny

    Allow from all

</Directory>

****************************************************************************

#/etc/init.d/httpd restart

3.建立保护目录下的.htsccess文件(这个文件必须放置到需受保护的目录下)

#cd /var/www/html/protect

#vim .htaccess #设置好后立即生效

****************************************************************************

AuthName "Protect test by .htaccess" #输入密码对话框中的提示符

Authtype Basic #Apache预设的认证类型、type

AuthUserFile /var/www/apache.passwd #改账户不限于/etc/passwd,文件名称也随意起

require user test #设定用户test可以用密码登陆

#require valid-user #密码文件中的用户都能登录

****************************************************************************

4.建立密码文件htpasswd

#htpasswd [-cmdD] 密码文件文件名 用户帐号

-c:建立后面的密码文件   (若文件已存在,切勿再加-c选项)

-m:不采用默认的加密方式,采用md5加密

-d:使用复杂的SHA方式加密

-D:删除后面接的那个帐号

#htpasswd -c /var/www/apache.passwd  test

这样就OK了,当客户端登录"http://IP/protect"时就会提示输入帐号和密码

 

 

Apache——虚拟主机的设定

架设虚拟主机的前提是:同一个IP有多个主机名!

#vim /etc/hosts

*****************************************************************************

添加:

192.168.0.1 Server1.example.com

192.168.0.1 www.example.com

192.168.0.1 ftp.example.com

*****************************************************************************

#mkdir /var/www/www

#mkdir /var/www/ftp

#echo 'www.example.com' > /var/www/www/index.html

#echo 'Ftp.example.com' > /var/www/ftp/index.html

#yum install vsftpd -y

#vim /etc/httpd/conf.d/virtual.conf

******************************************************************************

#下面这一行在规定"本机任何接口的port 80所指的虚拟主机"的意思

NameVirtualHost *:80

#先针对针对多出来的可浏览目录进行权限方面的规范

<Directory "/var/www/www">

Options FollowSymLinks

AllowOverride   None

Order   allow,deny

Allow   from all

</Directory>

<Directory "/var/www/ftp">

Options FollowSymLinks Indexes

AllowOverride   None

Order   allow,deny

Allow   from all

</Directory>

#针对三台主机的DocumentRoot进行设置

<VirtualHost *:80> #使用虚拟主机时,原本的主机名也要加进来

        ServerName      Server1.example.com

        DocumentRoot    /var/www/html

</VirtualHost>

 

<VirtualHost *:80>

        ServerName      www.example.com

        DocumentRoot    /var/www/www #这些目录也可以采用链接方式添加,(最好是home下的目录,root的目录有权限限制)

</VirtualHost>

 

<VirtualHost *:80>

        ServerName      ftp.example.com

        DocumentRoot    /var/www/ftp

        CustomLog       /var/log/httpd/http.ftp.access_log  combined

        #不同的主页可以指定不同的登录文件信息,这样比较好debug与分析,日志文件比较大,最好加入logrotate的管理中

</VirtualHost>

*******************************************************************************************

 

 

PHP强化模块(eaccelerator)

 

PHP先将可用函数先编译成模块,网页使用需要的PHP模块即可,增强了PHP网页的速度。eaccelerator则可以将PHP模块预编译成二进制文件,提升

访问速度。

1.编译安装eaccerlerator

从http://eaccelerator.net下载eaccerlerator源代码(编译安装的插件应注意,当内核改变时须重新编译安装)

# yum install php-devel autoconf automake m4 libtool make -y

# tar zxf eaccelerator-eaccelerator-42067ac.tar.gz

# cd eaccelerator-eaccelerator-42067ac

# phpize (进行PHP程序的预处理)

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config

# make&make install

2.使PHP使用此模块

# echo "/usr/lib/php/modules/" >> /etc/ld.so.conf.d/php.conf (添加到动态函数库)

# ldconfig (加载动态函数库到内存)

# vim /etc/php.ini

******************************************************************************************************

末尾添加:

extension = "eaccelerator.so"

eaccelerator.shm_size = "16"

eaccelerator.cache_dir = "/tmp/eaccelerator"

eaccelerator.enable = "1"

eaccelerator.optimizer = "1"

eaccelerator.check_mtime = "1"

eaccelerator.debug = "0"

eaccelerator.filter = ""

eaccelerator.shm_max = "0"

eaccelerator.shm_ttl = "0"

eaccelerator.shm_prune_period = "0"

eaccelerator.shm_only = "0"

eaccelerator.compress = "1"

eaccelerator.compress_level = "9"

******************************************************************************************************

# mkdir /tmp/eaccelerator

# chmod 777 /tmp/eaccelerator

# /etc/init.d/httpd restart

访问http://192.168.0.1/phpinfo.php,网页内容包含eAccelerator的相关信息,即PHP强化模块加载OK~

测试Apache的访问速度(每秒传输的速率):

# ab -dkS -c100 -n100 http://192.168.0.1/phpinfo.php

 

 

 

日志分析软件——webalizer

# yum install webalizer -y

配置文件/etc/webalizer.conf中默认的输出文件在/var/www/usage,且只有本机能查询;可以根据需要进行设置

将输出文件指定到可由制定用户访问的页面(OutputDir      /var/www/html/protect/webalizer)

# cp -a /var/www/usage /var/www/html/protect/webalizer

# /etc/init.d/httpd restart

# webalizer (启动webalizer)

客户端查看方式http://192.168.0.1/protect/webalizer 既可以查看web日志分析出来的Apache的相关信息。

 

 

 

拥有自制证书的https

 

1.建立证书文件

# yum install mod_ssl

# cd /etc/pki/tls/certs

# make Server1.key (默认证书有效期是一年、可通过修改Makefile内的356数值×××有效期)

# mv Server1.key Server1.key.raw

# openssl rsa -in Server1.key.raw -out Server1.key (取消密钥密码)

# rm -fr Server1.key.raw

# chmod 400 Server1.key

# make Server1.crt SERIAL=20130101

 

2.修改ssl.conf的内容,使其使用自制证书

# vim /etc/httpd/conf.d/ssl.conf

********************************************************************************************

修改:

SSLCertificateFile /etc/pki/tls/certs/Server1.crt

SSLCertificateKeyFile /etc/pki/tls/certs/Server1.key

********************************************************************************************

3.重启Apache即可

 

 

若想将加密首页与非加密首页分离,可修改/etc/httpd/conf.d/ssl.conf

#vim 

********************************************************************************************

修改或添加:

Listen 443

<VirtualHost _default_:443>

DocumentRoot "/var/www/https" (将该目录设为加密访问时的首页)

ServerName *:443

*******************************************************************************************

重启Apache即可

 

 

 

注:

1.WWW是依据HTTP这个协议而来的,分为服务器与客户端;

2.Apache是一个服务器端的软件,主要依据NCSA的HTTPd服务器发展而来,是自由软件;

3.Mozilla是一个自由软件的开发计划,其中firefox浏览器是相当成功的作品,采用W3C标准;

4.在撰写自己的网页数据时,尽量使用W3C所发布的标准,这样在所有的浏览器上面才能够顺利的显示出你想要的样子;

5.客户端与动态网页服务器端的交互方式:

1>服务器端工作任务接口(SSL),用户的数据通过服务器端的网页程序向服务器后端的数据库读出或写入数据;

2>javascript,服务器将可执行的程序代码(javascript)传给客户端,这些程序在客户端运行;

3>客户端拥有flash动画软件,服务器端的数据通过客户端的flash软件进行读取与写入。

6.http这个传输协议传输数据是以明码传送的;

7.在/etc/httpd/conf/httpd.conf中会默认强制使用UTF-8编码,那么可能会使得网页在某些不使用万国码的浏览器上显示乱码,最好将其注释掉

如:#AddDefaultCharset UTF-8,在HTML语言中设置编码即可;

8.Apache的错误日志在/var/log/httpd/error_log中;

9.如过忘记mysql的root密码,且数据不重要,那么删除/var/lib/mysql/*后重启mysql即可清除密码。如果数据很重要,可以从网络上寻找工具求助;

10.Apache默认的首页目录在/var/www/html/,应尽量将所有的WWW数据都搬到该目录下,且首页文件应该定义为index.html或index.php等;

11.建议将CGI放于默认的/var/www/cgi-bin/下面,则Apache不用进行额外配置即可使用该CGI;

12.Apache默认报错的意义:

100-199:一些基本的信息

200-299:客户端的要求已经成功完成

300-399:Client的需求需要其它额外的操作,如:redirected

400-499: Client的需求没有办法完成

500-599: 主机的设置错误问题

13.注意Apache的日志文件问题,如果访问量太大,日志文件目录被占满,那么访问速度会大幅度下降,最好在/etc/logrotate.d/httpd内指定的日志目录内添加"compress"压缩选项,减小文件占用的空间。