一、安装方式(centos7、apache、Mariadb、php、yum方式安装)
1、因为是实验,先将SELinux、防火墙关闭
2、apache
yum -y install httpd httpd-devel (安装apache服务)
yum install mod_ssl openssl(安装openssl,以实现apache可以转为https传输)
systemctl start httpd(启动apache服务)
systemctl status httpd(查看apache服务状态)
netstat -anlp | grep httpd(查看apache服务端口状态)
3、Mariadb
yum -y install mariadb mariadb-server mariadb-libs mariadb-devel(安装)
systemctl start mariadb(启动Mariadb服务)
systemctl status mariadb(查看Mariadb服务状态)
netstat -anlp | grep mysql(查看Mariadb服务端口状态)
mysql_secure_installation(因为是刚刚安装的Mariadb,本身自带有一些测试数据,所以需要进行重置一下)
4、安装php、php-mysql(关联php与mysql)以及php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath(php常用扩展)
yum -y install php
yum -y install php-mysql
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath
5、建立php测试网页,并重启apache服务,查看IP地址,登录测试网站
二、安装时所需要的模块及作用
1、Apache
apr、apr-util(为解决大量用户访问而造成的阻塞问题。socket调度)
pcre:用pcre来解决C语言中使用正则表达式的问题
2、Mariadb
mariadb-libs mariadb-devel(一些数据库的动静态库文件)
3、PHP
php-gd(图片处理)
php-ldap(轻量级目录访问协议)
php-odbc(数据库连接器)
php-pear(PHP扩展和应用程序存储库)
php-curl(lib库。用以支持各种传输协议)
三、apache介绍
apache是以进程为基础的,这样比以线程为基础的消耗更多的开支,不太适合多处理器环境。
用户首先会通过自己PC的随机端口,访问apache服务器(如80、443)端口。服务器通过开启的子进程处理用户的访问请求,匹配用户的请求是动态还是静态请求(可以区分是否访问数据库来区别是否是静态访问请求)。
apache有三种工作模式
可以使用httpd -V查看
/etc/httpd/conf.modules.d/00-mpm.conf
1、prefork模式
在apache服务启动时,会先启动一些子进程,每个子进程只有一个线程,同一时间点,一个子进程只能处理一个请求。
优点:不需要担心线程问题。
缺点:不适合处理高并发请求。
2、worker模式
使用多线程和多进程混合模式。每个子进程会创建一些线程,同时包括一个监听(管理)线程。线程会共享父进程的内存空间。
优点:适用于高并发请求
缺点:需要考虑线程安全问题
3、event工作模式
和worker模式很像,加入了keep-alive。一般在TCP连接断开后,守护进程会关闭这个http连接。当设置了keep-alive_timeout时间后,断开TCP连接并不会立马关闭http连接,而是经过一段时间之后再关闭这个http连接,在这个时间段内,可以多次传输数据,减少连接时间。同时也会减少系统内核的调用。
但是,keep-alive_time如果配置不当,造成的损失更大,所以适当的配置keep-alive_time是非常重要的。
文件位置
/etc/httpd/conf/httpd.conf(主配置文件)
/var/www/html(网页文件位置)
/var/log/httpd/(日志文件)
主配置文件参数
ServerRoot(主目录)
Listen(监听端口,可以填写某一网卡IP)
LoadModule(加载的相关模块)
ServerAdmin(管理员邮箱)
ServerName(服务器名)
ErrorLog(服务器错误日志)
CustomLog(访问记录日志)
IncludeOptional conf.d/*.conf(子配置文件)
DirectoryIndex(默认访问的文件,按照前后顺序访问。不存在则跳过)
DocumentRoot(主目录位置)
Options Indexes FollowSymLinks(定义指定目录的权限,None没有任何额外的权限、All有所有权限)
Options -Indexes(没有权限访问目录结构。“+”可以添加访问目录结构的权限。)
FollowSymLinks(允许软连接到其他目录)
Require all granted(访问控制)
DirectoryIndex index.html(默认加载的页面)
四、小实验
1、目录别名、
vi /etc/httpd/conf/httpd.conf
vi /etc/httpd/conf.d/autoindex.conf
2、用户认证
需要启用.htaccess文件。
提示信息
加密方式
密码文件(名称可自定义,但路径需要填写绝对路径)
允许密码文件中的用户访问
建立用户。(第一次建立使用-c选项,之后再建立用户使用-m选项,最后为密码文件,与.htaccess中的一致。)
重启Apache服务,访问测试。
3、虚拟主机(适用于一服务器部署多个网站的情况下)
a、基于不同的域名
httpd.conf文件,这里原本是index.html,我使用的是php环境,所以设置的为test.php
会加载conf.d目录下所有.conf结尾的文件。
新建一VirtualHost.conf文件名的文件
两个网站的目录位置与所绑定的域名。还可以添加相关网站管理员的邮箱地址;和访问时产生的正常与错误日志存放位置等信息。
网站目录位置建立测试文件
没有DNS服务器,修改hosts文件,添加域名解析。
重启apache服务,进行测试,显示成功。
b、基于不同的端口号
httpd.conf文件
VirtualHost.conf文件,重启服务即可。
c、基于不同的IP地址