Linux中的web服务器—apache
基本apache服务器搭建
yum install -y httpd
yum -y install httpd-manual
systemctl start httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
访问服务器:(http://)172.25.254.160
查看帮助文档:(http://)172.25.254.160/manual
浏览器中输入的ip地址默认是http协议,默认去访问服务器的80端口
apache主配置文件:
vim /etc/httpd/conf/httpd.conf
更改配置文件:
(1)更改服务监听端口
(2)更改默认发布页面
(3)更改默认发布目录
下图为例:
前四张图为apache服务器的搭建
图五—图八为服务的监听端口的设定
图九—图十一为服务的默认发布页面的更改,使得访问优先级naname > index.html
图五—图八为服务的默认发布目录的更改
访问控制
1.针对ip地址:允许特定ip/网段 的主机访问
vim /var/httpd/conf/htpd.conf:
<Directory "/var/www/">
Order Allow,Deny 读取顺序:先Allow列表,再Deny列表(重复定义的ip,其权限由后读取的决定)
Allow from All
Deny from 172.25.254.160
</Directory>
下图为例:
操作前我将自己更改的配置参数删除,取消了对原参数的注释。
2.针对apache页面:允许特定用户访问
在/etc/httpd/conf目录下生成认证文件:
htpasswd -cm westosuser admin
命令 参数 要生成的认证文件名 添加的认证用户名
再次添加用户,不要加参数c,否则会清除之前的,重新生成:
htpasswd -m westosuser admin1
同样的密码,其生成的密文仍然不同。
vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/">
#Order Allow,Deny
#Allow from All
#Deny from 172.25.254.160
AuthUserFile /etc/httpd/conf/westosuser 认证文件
AuthType basic
AuthName "please input your name and password !!!"
Require user admin (Require valid-user 允许文件中的所有用户登陆认证)
</Directory>
下图为例:
Apache的虚拟主机
根据访问域名不同,可以实现访问同一台主机上的不同资源
令主配置文件保持原来的内容配置;
(安装后的的默认配置)
1.分别建立虚拟主机所提供的目录,资源
mkdir /var/www/virtual/news/html -p
mkdir /var/www/virtual/music/html -p
vim /var/www/virtual/news/html/index.html
cp /var/www/virtual/news/html/index.html /var/www/virtual/music/html/index.html
vim /var/www/virtual/music/html/index.html
2.在/etc/httpd/conf.d目录下编写(虚拟主机的)配置文件
cd /etc/httpd/conf.d
vim default.conf:
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined (combined混合型日志)
</VirtualHost>
vim news.conf:
<VirtualHost *:80> 虚拟主机设定:域名,默认发布目录,
ServerName news.westos.com
DocumentRoot /var/www/virtual/news/html
CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/virtual/news/html"> 发布目录的目录权限
Require all granted
</Directory>
cp news.conf music.conf
vim music.conf:
:%s/news/music/g
systemctl restart httpd
3.编辑域名解析记录
vim /etc/hosts
172.25.254.160 www.westos.com news.westos.com music.westos.com
下图为例:
Apache对于脚本文件的支持
http默认将文件作为静态资源展示
(1)支持php文件
下载php插件,令apache支持php文件显示:
yum -y install php
在默认发布目录/var/www/html下编写php文件index.php:
<?php
phpinfo();
?>
重启apache服务:systemctl restart httpd
(2)支持cgi文件
建立/var/www/html/cgi目录,存放cgi文件
cd /var/www/html/cgi
vim index.cgi:
从manual中复制得到
给cgi脚本文件加上执行权限:
chmod +x index.cgi
执行该cgi脚本文件:
./index.cgi
但此时通过http访问该脚本文件,不能显示以cgi执行后的效果,要在apache中开启对于cgi的支持
在原有的default.conf的虚拟主机的配置文件中加入以下:
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd
下图为例:
(3)支持wsgi文件
下载插件:
yum install -y mod_wsgi
创建存放wsgi文件的目录:
mkdir /var/www/wsgi
将实验用到的wsgi文件放到上面的目录中
编写虚拟主机的配置文件:
cd /etc/httpd/conf.d
vim vhost.conf:
<VirtualHost *:80>
ServerName www.westoswsgi.com
WSGIScriptAlias / /var/www/wsgi/script.wsgi
#访问www.westos.com的/根目录时,自动去访问该wsgi文件
</VirtualHost>
(由于发布目录是在/var/www/目录下,在主配置文件中已经规定好了其目录权限,这里不必再写)
https
(1)搭建https服务:
先下载yum -y install mod_ssl
重启httpd服务,此时可以通过https访问
(下载后似乎自动开启443端口,未开启的话,就在firewall上加https服务)
(https访问后,会因为我们自己定义的域名没有经过认证的站点证书,而被浏览器提示链接不安全,点击Advanced—>Add Exception—>Get Certificate—>Confirm_Security_Esception,信任我们搭建的网站服务)
生成自签名证书:
再下载用于生成自签名证书文件的软件:
yum install -y crypto-utils
genkey www.westos.com 生成文件的命令
上面的命令生成两个文件:
/etc/pki/tls/certs/www.westos.com.crt
/etc/pki/tls/private/www.westos.com.key
将上面生成的文件的路径添加到ssl配置文件中:
vim /etc/httpd/conf.d/ssl.conf
下图为例:
(2)网页重写:
设定虚拟主机的配置文件:
cd /etc/httpd/conf.d
cp news.conf login.conf
vim login.conf:
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot /var/www/virtual/login/html
CustomLog "logs/login.logs" combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/virtual/login/html">
Require all granted
</Directory>
<VirtualHost *:80> 凡是访问login.westos.com该域名80端口都会被强制网页重写到443端口
ServerName login.westos.com
RewriteEngine On 开启重写
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
创建相应的虚拟主机的资源目录:
mkdir -p /var/www/virtual/login/html
vim /var/www/virtual/login/html/index.html:
<h1>login page</h1>
添加login.westos.com该域名相应的解析记录:
vim /etc/hosts:
172.25.254.160 login.westos.com
下图为例: