WWW 服务器(2)

LAMP所需软件与其结构

PHP 是挂在 Apache 底下 执行的一个模块, 要用网页的 PHP 程控 MySQL 时, PHP 就得有支持 MySQL 的模块才行!所以至少需要底下几个软件:

  • httpd (提供 Apache 主程序)
  • mysql (MySQL 客户端程序)
  • mysql-server (MySQL 服务端程序)
  • php (PHP 主程序含给 apache 使用的模块)
  • php-devel (PHP 的开发工具,这个与 PHP 外挂的加速软件有关)
  • php-mysql (提供给 PHP 程序读取 MySQL 数据库的模块)
[root@localhost ~]# yum -y install httpd mysql mysql-server php php-mysql 

Apache 2.2.x目录结构

  • /etc/httpd/conf/httpd.conf
    httpd最主要的配置文件,其实整个 Apache 不过就是这个配置文件!不过很多其他的 distribution 都将这个文件拆成数个小文件分别管理不同的参数。

  • /etc/httpd/conf.d/*.conf
    很多的额外参数文件,扩展名是 .conf。如果你不想要修改原始配置文件 /etc/httpd/conf/httpd.conf 的话,那么可以将你自己的额外参数文件独立出来, 例如你想要有自己的额外设定值,可以将他写入/etc/httpd/conf.d/myhttp.conf (注意,扩展名一定是 .conf 才行) 而启动 Apache 时,这个文件就会被读入主要配置文件当中了。

  • /usr/lib64/httpd/modules/, /etc/httpd/modules/
    Apache 支持很多的外挂模块,例如 php 以及 ssl 都是 apache 外挂的一种!所有你想要使用的模块文件默认放置在这个目录中。

  • /var/www/html/
    这就是我们 CentOS 默认的 apache 首页所在目录,当你输入http://locahost时所显示的数据, 就是放在这个目录当中的首页文件 (预 设为 index.html)。

  • /var/www/error/
    如果因为服务器设定错误,或者是浏览器端要求的数据错误时,在浏览器上出现 的错误讯息就以这个目录的默认讯息为主!
    在这里插入图片描述

  • /var/www/icons/
    该目录提供 Apache 默认给予的一些小图示,当你输入 http://localhost/icons/ 时显示的数据所在。
    在这里插入图片描述

  • /var/www/cgi-bin/
    默认给一些可执行的 CGI (网页程序) 程序放置的目录;当你输入 http://localhost/cgi-bin 时所显示的数据所在。

  • /var/log/httpd/
    预设的 Apache 登录档都放在这里,对于流量比较大的网站来说,这个目录要很 小心。

[root@localhost httpd]# ls /var/log/httpd/
access_log  error_log
  • /usr/sbin/apachectl
    Apache 的主要执行档,这个执行档其实是 shell script 而已, 他可以主动的侦测系统上面的一些设定值,好让你启动 Apache 时更简单。

  • /usr/sbin/httpd
    这个才是主要的 Apache 二进制执行文件。

  • /usr/bin/htpasswd
    在某些网页当你想要登入时你需要输入账号与密码!Apache 本身就提供 一个最基本的密码保护方式, 该密码的产生就是透过这个指令来达成的!

MySQL 重要目录

  • /etc/my.cnf
    MySQL 的配置文件,包括你想要进行 MySQL 数据库的优化,或者是针对 MySQL 进行一些额外的参数指定, 都可以在这个档案里面达成的!
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  • /var/lib/mysql/
    MySQL 数据库档案放置的所在处。当你启动任何 MySQL 的服 务时,务必记得在备份,这个目录也要完整的备份下来才行!
    在这里插入图片描述

PHP 相关目录

  • /etc/httpd/conf.d/php.conf
    在这里插入图片描述

  • /etc/php.ini
    PHP 的主配置文件,包括PHP 能不能允许使用者上传文件,能不能允许某些低安全性的标志等等, 都在这个配置文件当中设定。

  • /usr/lib64/httpd/modules/libphp5.so
    PHP 提供给 Apache 使用的模块!这也是我们能否在 Apache 网页上面 设计 PHP 程序语言的最重要的组件。

  • /etc/php.d/mysql.ini, /usr/lib64/php/modules/mysql.so
    PHP 是否可以支持 MySQL 接口,就看这两个文件。这两个文件是由 php-mysql 软件提供的。

  • /usr/bin/phpize, /usr/include/php/
    如果你未来想要安装类似 PHP 加速器以让浏览速度加快的话,那么这个文件与目录就得要存在,否则加速器软件可无法编译成功,这两个数据也是由 php-devel 软件所提供。

Apache基本设定

httpd.conf 文件的基本设定格式:

<设定项目>
	此设定项目内的相关参数
	......
</设定项目>

例如:针对首页/var/www/html/这个目录提供一些额外的功能

<Directory "/var/www/html">
	Options Indexes 
	......
<Directory>

针对服务器环境的设定项目

Apache 针对服务器环境的设定项目方面,包括响应给客户端的服务器软件版本、 主机名、服务器配置文件顶层目录等。

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 

Section 1:全局环境

  • ServerTokens OS
    告知客户端服务器的版本与操作系统
  • ServerRoot “/etc/httpd”
    服务器所在目录树的顶部目录,包括配置,错误和日志文件。
    在这里插入图片描述
    在这里插入图片描述
  • PidFile run/httpd.pid
    服务器应在其中记录其过程的文件启动时的标识号。考虑ServerRoot 的设定值,所以文件在/etc/httpd/run/httpd.pid.
    在这里插入图片描述
[root@localhost ~]# ps aux | grep httpd 

在这里插入图片描述

  • Timeout 60
    不论接受或发送,当持续联机等待超过60秒则本次联机中断。

  • KeepAlive On
    是否允许持续性的联机,亦即一个TCP联机可以具有多个文件传送的要求。例如一个网页含有很多的图片,那么这次联机就会将所有的数据传送完成,而不必每个图片资源都需要进行一次TCP联机。

  • MaxKeepAliveRequests 500
    当KeepAlive设定为 On 时,这个设定有效。表示在持续连接期间允许的最大请求数。设置为 0 以允许无限量。我们建议您将此数字设置得较高,以实现最佳性能。

  • KeepAliveTimeout 15
    在KeepAlive允许的条件下,该次联机在最后一次传输结束后等待的秒数,当超过上述的秒数则本次联机中断。

服务器池大小规则(特定于MPM):
在这里插入图片描述
#prefork MPM
#StartServers:要启动的服务器进程数
#MinSpareServers:保持备用状态的最小服务器进程数
#MaxSpareServers:保持备用状态的最大服务器进程数
#ServerLimit:服务器生命周期内MaxClients的最大值
#MaxClients:允许启动的最大服务器进程数
#MaxRequestsPerChild:服务器进程服务的最大请求数
在这里插入图片描述
#worker MPM
#StartServers:要启动的服务器进程的初始数量
#MaxClients:最大同时客户端连接数
#MinSpareThreads:保留备用状态的最小工作线程数
#MaxSpareThreads:保留备用的最大工作线程数
#ThreadsPerChild:每个服务器进程中的工作线程数
#MaxRequestsPerChild:服务器进程服务的最大请求数

上面的 prefork 及 worker 其实是两个与服务器联机资源有关的设定项目。这两个模块都是用在提供使用者联机的资源 (process),设定的数量越大代表系统会启动比较多的程序来提供 Apache 的服务,反应速度就比较快。简单的说,这两个模块的功能分类为:

  • 针对模块的功能分类方面:
    worker 模块占用的内存较小,对于流量较大的网站来说,是一个比较好的选择。 prefork 虽然占用较大的内存,不过速度与 worker 差异不大,并且 prefork 内 存使用设计较为优秀,可以在很多无法提供 debug 的平台上面进行自我除错, 所以,默认的模块就是 prefork !

  • 细节设定的内容方面(以Prefork为例,worker意义相同):
    StartServers: 启动 Apache 起动时就启动的 process 数量,所以 apache 会用到不止一支程序。这里StartServers 8.
    在这里插入图片描述

    MinSpareServers, MaxSpareServers:最大与最小的备用程序数量。

    MaxClients:最大的同时联机数量,也就是 process 不会超过此一 数量。现在假设有 10 个人连上来,加上前面的 MinSpareServer=5, MaxSpareServers=20,则 apache 此时的程序数应有 15-30 个之意。而这个最终程序数不可超过 256 个。

    MaxRequestsPerChild:每个程序能够提供的最大传输请求数。例如当有个使用者连上服务器后(一个 process),却要求数百个网页,当他的要求数量超过此一数值, 则该程序会被丢弃,另外切换一个 新程序。这个设定可以有效的控管每个 process 在系统上的存活时间。

apache 到底是使用那个模块?prefork 还是 worker ?事实上 CentOS 将这两个模块分别放到不同的执行文件当中了,分别是:

  • /usr/sbin/httpd:使用 prefork 模块;
  • /usr/sbin/httpd.worker:使用 worker 模块。

那如何决定你使用的是哪一个程序?可以去查阅一下 /etc/sysconfig/httpd ,
就能够知道系统默认提供 prefork 模块,但你可以透过修/etc/sysconfig/httpd 来使用 worker 模块。

[root@localhost ~]# vim /etc/sysconfig/httpd

在这里插入图片描述

  • Listen 80
    允许您将Apache绑定到特定的IP地址和/或端口,除了默认端口。将其更改为侦听特定IP地址,防止Apache陷入所有绑定的IP地址(0.0.0.0):
    例如:Listen 12.34.56.78:80

  • 动态共享对象(DSO)支持:

    为了能够使用作为DSO构建的模块的功能,您必须在此位置放置相应的“ LoadModule”行,因此包含在其中的#条指令实际上在_before_之后可用。

    示例:LoadModule foo_module modules / mod_foo.so

    LoadModule auth_basic_module模块/mod_auth_basic.so

    省略…

  • 从“ /etc/httpd/conf.d”加载配置文件:

    include conf.d/*.conf
    指定该目录下的文件都会被读到。

  • User apache

  • Group apache
    前面提到的prefork、worker等模块所启动的process的拥有者或所属组设定。

Section 2:“主”服务器配置

本节中的指令设置了“主”服务器使用的值,该服务器响应定义未处理的任何请求。这些值还为您稍后可以在文件中定义的任何容器提供默认值。

所有这些指令都可能出现在容器内,在这种情况下,这些默认设置将被定义的虚拟主机覆盖。

  • ServerAdmin root@localhost
    系统管理员的email,当网站出现问题时,错误信息会发送到该邮箱。

  • ServerName www.example.com
    设定主机名,这个值如果没有设定,预设会以 hostname 为输出依据。

  • UseCanonicalName Off
    确定Apache如何构造自引用 URL 以及 SERVER_NAME 和 SERVER_PORT 变量。设置为“Off”时,Apache将使用由客户提供的主机名和端口。设置为“On”时,Apache将使用ServerName指令。

  • DocumentRoot “/var/www/html”
    您将在其中提供文档的目录。默认情况下,所有请求均来自此目录,但是符号链接和别名可用于指向其他位置。

  • <Directory />
    		Options FollowSymliks 
    		AllowOverride None
    </Directory>
    
    

允许和/或禁用哪些服务和功能来配置Apache有权访问的每个目录(及其子目录)。

  • <Directory "/var/www/html">
    		Options Indexes FollowSymLinks 
    		AllowOverride None
    		Order allow,deny
    		Allow from all
    </Directory>
    
    

这个地方是针对/var/www/html 这个目录来设定权限,主要参数及意义如下:

Options(目录参数):
此设定值表示在这个目录内能够让Apache进行的动作。

- Indexes :如果在此目录下找不到首页文件时。就显示整个目录下的所有文件。
- FollowSymLinks:这是FollowSymbolicLinks 的缩写。此设定可以让连接文件有效的离开此目录。
- ExecCGI:让此目录具有执行CGI程序的权限,
- Includes:让一些Server-Side Include 程序可以运作。
- MutiViews:

AllowOverride(允许覆写参数的功能):
表示是否允许额外的配置文件.htaccess的某些参数覆写。我们可以在httpd.conf 内设定好所有权限,不过如此一来若使用者自己的个人网页想要修改权限时将会对管理员造成困扰。因此Apache默认可以让用户以目录底下的.htaccess 文件覆写内的某些功能参数。这个项目则是在规定.htaccess可以覆写的权限类型:

- All:全部的权限均可被覆写;
- AuthConfig:仅有网页认证(账号密码)可覆写;
- Indexes:仅允许Indexes方面的覆写;
- Limits:允许使用者利用Allow,Deny 与Order管理可浏览的权限;
- None:不可覆写。

Order,Allow,Deny(能否登入浏览的权限):
决定此目录是否可被Apache的PID所浏览的权限设定,能否被浏览主要有两种判定方法:

- deny,allow:以deny优先处理,但没有写入规则的则默认为allow。
- allow,deny:以allow为优先处理,但没有写入规则的则为deny。
  • DirectoryIndex index.html index.html.var
    当客户端在网址列只输入到目录,例如http://localhost/时,Apache就将首页显示出来,这个文件名以index.*为开头。如果上面的文件都存在则显示前面那个,如果都不存在则将此目录下的所有文件显示出来。

  • Alias:
    在这里插入图片描述
    当你输入 http://localhost/icons 时,其实你的 /var/www/html 并没有 icons 那个目录,不 过由于 Alias (别名) 的关系,会让该网址直接连结到 /var/www/icons/ 下。 这里面 预设有很多 Apache 提供的小图示。

  • ScriptAlias :在这里插入图片描述
    与上面的icons类似,不过这边却是以ScriptAlias(可执行脚本的别名)为设定值,这个设定值可以指定该目录底下为具有 ExecCGI 能力的目录所在!所以你可以 将类似 Open webmail 的程序给他放置到 /var/www/cgi-bin 内,就不必额外设定其他的目录来放置你的 CGI 程序。

PHP的预设参数修改

PHP 是 Apache 当中的一个模块,Apache 将一些重要模块给他拆出来放置到 /etc/httpd/conf.d/*.conf 文件中,所以我们必须要到该目录下才能了解到某些模 块是否有被加。
在这里插入图片描述

  • php.conf
    提供PHP模块的设定。
  • welcome.conf
    提供默认的欢迎信息。
[root@localhost ~] vim /etc/httpd/conf.d/php.conf 

在这里插入图片描述

PHP的资源方面设定

PHP的配置文件:/etc/php.ini

  • register_globals = Off
  • lofg_errors = On
  • ignore_repeated_errors = On

PHP提供的上传容量限制

启动www服务与测试PHP模块

[root@localhost ~] httpd  start		#启动httpd服务
[root@localhost ~] httpd -t 	#测试配置文件语法
[root@localhost ~] chkconfig httpd on 	#配置开机自启动服务

查看服务是否启动:
在这里插入图片描述
查看登录文件:
在这里插入图片描述
最后一行代表正常启动了。
在这里插入图片描述
想要知道有没有成功的驱动 PHP 模块,可以到 /var/www/html 目录下去建 立一个简单的档案:

[root@localhost ~]vim /var/www/html/phpinfo.php
 <?php phpinfo();?>

PHP 文件的扩展名一定要是 .php 结尾的! <?php ... ?> 是嵌入在 HTML 文件内的 PHP 程序语法,在这两个标签内的就是 PHP 的程序代码。那么 phpinfo(); 就是 PHP 程序提供的一个函式库,这个函式库可 以显示出你 WWW 服务器内的相关服务信息, 包括主要的 Apache 信息与 PHP 信息等 等。这个文件建置完毕后,接下来你可以利用浏览器去浏览一下这个档案:
在这里插入图片描述

MySQL的基本设定

在启动MySQL前其实并没有帮助我们建立任何的数据库,初次启动MySQL后,系统才会针对数据库进行初始化的创建。

启动MySQL

在这里插入图片描述

788

防火墙设定与selinux的规则放行

开始网页设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值