如何在Linux中 安装Apache,搭建自己的web服务器?请求援助
如何在Linux中 安装Apache,搭建自己的web服务器?请求援助 这个可以去CSDN里找找教程,在操作之前记得做好快照(切记切记),有些Linux的发行版本自带有Apache,只不过名字叫httpd,没有的话就自行安装,不过楼主没有硬需的话可以试试Nginx{:10_256:}这个我常用,而且部署方式简单快捷,轻量级的 #!/bin/baship=$(ifconfig | sed -n 2p | awk '{print $2}')
#判断服务器能否访问外网
check_net() {
ping -c 2 www.baidu.com > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "网络畅通"
else
echo "网络不通!!!"
fi
}
install() {
echo "开始安装lamp所需组件"
yum -y install httpd php php-mysql php-gd mariadb mariadb-server > /dev/null
}
file() {
echo "修改Apache配置文件"
sed -i '164 s/index.html/index.php/' /etc/httpd/conf/httpd.conf
}
index() {
echo "创建测试页面"
echo "<?php phpinfo();?>" > /var/www/html/index.php
}
start_svc() {
echo "开启Apache服务"
systemctl start httpd
echo "开启mysql服务"
systemctl start mariadb
}
check_net
install
file
index
start_svc
echo "请访问: http://$ip"
随便从网上复制一个脚本。 执行就行了 之前自己做的笔记,你可以按照笔记操作一下
1)Apache的目录别名
当apache 接受请求时,在默认情况下会将 DocumentRoot 目录中的文件送到客户端,如果想将某一不在 DocumentRoot 目录中的文件共享到网站上,并希望将它们留在本来位置而不需要进行移动的话,处理这种情况可以通过建立别名的方式将 URL 指向特定的目录
1.编辑主配置文件
#vim /usr/local/apache2/etc/httpd.conf
Include etc/extra/httpd-autoindex.conf #去掉注释,开启调用子配置文件
2.编辑子配置文件
#vim /usr/local/apache2/etc/extra/httpd-autoindex.conf
Alias /icons/ "/usr/local/apache2/icons/"
结构: 别名"真实目录" #真实目录的结尾要有/,否则报错
<Directory "/usr/local/apache2/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
可以根据模板编写一个自己需要的目录别名
2)Apache的用户认证
有时候,我们需要给一些特殊的访问设置一个用户认证机制,增加安全。比如我们的个人网站,一般都是有一个管理后台的,虽然管理后台本身就有密码,但我们为了更加安全,可以再设置一层用户身份认证。
1.编辑配置文件
#vim /usr/local/apache2/etc/httpd.conf
在需要进行登录认证的目录标签中加入如下配置:
<Directory "/usr/local/apache2/htdocs/admin"> #声明被保护目录
Options Indexes FollowSymLinks
AllowOverride **ALL** #开启权限认证文件.htaccess
Require all granted
</Directory>
2.在指定目录下创建权限文件
切换到/usr/local/apache2/htdocs/admin,创建 .htaccess 文件,并添加下面的内容
#vim .htaccess
AuthName"Welcome to "
#提示信息
AuthType basic
#加密类型
AuthUserFile /usr/local/apache2/htdocs/admin/apache.passwd
#密码文件,文件名自定义。(使用绝对路径)
require valid-user
#允许密码文件中所有用户访问
3.建立密码文件,加入允许访问的用户。 (此用户和系统用户无关)
#/usr/local/apache2/bin/htpasswd-c/usr/local/apache2/htdocs/admin/apache.passwdtest1
-c建立密码文件,只有添加第一个用户时,才能-c
#/usr/local/apache2/bin/htpasswd-m/usr/local/apache2/htdocs/admin/apache.passwdtest2
-m 再添加更多用户时,使用-m 参数
注意: htpasswd 该命令是 httpd 的命令,需要绝对路径
4.重启apache服务
#/usr/local/apache2/bin/apachectl -t
#/usr/local/apache2/bin/apachectl stop
#/usr/local/apache2/bin/apachectl start
3)虚拟主机(重点)
虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极大的促进了网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代的一种新型经济形式。
虚拟主机的分类:
基于 IP的虚拟主机:一台服务器,多个 ip,搭建多个网站
基于端口的虚拟主机:一台服务器,一个 ip,搭建多个网站,每个网络使用不同端口访问
基于域名的虚拟主机:一台服务器,一个 ip,搭建多个网站,每个网站使用不同域名访问
实验准备:
1.域名解析:准备两个域名
#/etc/hosts
ip地址 www.sohu.com
ip地址 www.sina.com
#使用本地hosts文件进行解析
2.网站主页目录规划
在/htdocs/目录下分别创建 sohu 和 sina 两个目录并在新建录内创建index.html 文件(分别写不一样的内容)
/usr/local/apache2/htdocs/
实验步骤:
1.修改主配置文件开启文件关联
#vim /usr/local/apache2/etc/httpd.conf
Include etc//extra/httpd-vhosts.conf #此行取消注释
2.编辑子配置文件,编写虚拟主机标签
#vim /usr/local/apache2/etc/extra/ httpd-vhosts.conf
添加下方内容,有几个虚拟主机就写几组(添加之前先把原先存在的示例删除掉)
<Directory "/usr/local/apache2/htdocs/sina"> ---注释掉
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#目录权限标签根据需要自行添加
<VirtualHost ip地址:80> #虚拟主机标签
ServerAdmin webmaster@sina.com #管理员邮箱
DocumentRoot ""/usr/local/apache2/htdocs/sina" #网站主目录
ServerName www.sina.com #完整域名
ErrorLog "logs/sina-error log" #错误日志
CustomLog "logs/sina-access log" common #访问日志
</VirtualHost>
3.重启服务,验证结果
#/usr/local/apache2/bin/apachectl -t
#/usr/local/apache2/bin/apachectl stop
#/usr/local/apache2/bin/apachectl start
windows下:浏览器下输入两个不同的域名验证网页内容(提前修改 windows 的 hosts 文件)
Linux下:通过elinks/curl命令验证: elinks/curl URL 地址(提前修改windows 的hosts 文件)
4)域名跳转
一个站点难免会有多个域名,而多个域名总得有一个主次,比如我的网站可以用两个域名访问:www.sina.com 和ww.sohu.cn 但大家发现不管我用哪个域名访问,最终都会跳转到www.sina.com 上来。这个行为就叫做域名跳转,状态码:301 是永久跳转,302 是临时跳转,网站上一定要设置为 301,这样对搜索引擎是比较友好的。
实验条件:
1.虚拟主机能正常访问
2.打开主配置文件开启重写模块
LoadModule rewrite_module modules/mod_rewrite.so #取消注释
实验步骤:
1.修改虚拟主机配置文件
#vim /usr/local/apache2/etc/httpd.conf
<Directory "/usr/local/apache2/htdocs/sohu">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
2.创建规则匹配文件
#vim /usr/local/apache2/htdocs/sohu/.htaccess
在指定的网站目录下创建文件,并添加以下内容
RewriteEngine on
#开启rewrite功能
RewriteCond %{HTTP_HOST}^www.sohu.com
#把以www.sina.com 开头的内容赋值给HTTP_HOST变量
RewriteRule^(.*)$http://www.sina.com/$1
#“(.*)$ 指代客户端要访问的资源,
#$1 把.* 所指代的内容赋值到$1变量中
#R=permanent 永久重定向 = 301
#L 指定该规则为最后一条生效的规则,以后的不再生效
3.重启服务器并测试
#/usr/local/apache2/bin/apachectl -t
#/usr/local/apache2/bin/apachectl stop
#/usr/local/apache2/bin/apachectl start
5)Apache+openssl实现https(重点)
HTTPS(全称:Hypertext Transfer ProtocolSecurel 超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL层,用于安全的 HTTP 数据传输。这个系统被内置于浏览器中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
1.准备工作:
检查 Apache 是否支持 SSL,检查相应模块是否安装,若安装则将模块启用模块存放目录:/usr/local/apache2/modules
检查模块是否启用:apachectl -M
2.CA证书申请:
a.openssl genrsa -out ca.key 2048
#建立服务器私钥,生成 RSA 密钥
b.openssl req -new -key ca.key -out atguigu.csr
#需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 commonname,可以写你的名字或者域名。 如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的 csr 文件交给 CA 签名后形成服务端自己的证书
c. openssl x509 -req -days 365 -sha256 -in atguigu.csr -signkey ca.key -out atguigu.crt
#使用 CA 服务器签发证书,设置证书的有效期等信息
注意 1: 生成完秘钥和证书文件后,将文件存放在 Apache 的安装目录下的 cert 目录下
注意 2: 在生产环境中必须要在 https 证书厂商注册否则浏览器不识别)
3.配置文件修改:
a.调用 ssl 模块,并启用 ssl 独立配置文件
#vim /usr/local/apache2/etc/httpd.conf
LoadModule ssl_module modules/mod_ssl.so #取消掉注释即可使用
Include etc/extra/httpd-ssl.conf #取消注释
b.修改 etc/extra/httpd-ssl.conf配置文件,调用证书等文件
#添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocolall -SSLV2 -SSLV3
#修改加密套件如下
SSLCipherSuite HIGH:!RC4:MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM.
SSLHonorCipherOrder on
#证书公钥配置(签字的)
SSLCertificateFile cert/atguigu.crt
#证书私钥配置
SSLCertificateKeyFile cert/ca.key
c.修改主配置文件,添加虚拟主机
#vim /usr/local/apache2/etc/httpd.conf
`<VirtualHost_default_:443>`
#DocumentRoot 目录位置要和 httpd.conf 里面的一致
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost:443
SSLCertificateFile cert/atguigu.crt.
SSLCertificateKeyFile cert/ca.key
SSLCertificateChainFile cert/atguigu.crt
</VirtualHost>
4.结果验证:
#apachectl -t #检查配置文件语法
#apachectlrestart #重启apache,并测试是否可以使用 https 访问
报错提示: AH00526: Syntax error on line 78 of /usr/local/apache2/etc/extra/httpd-ssl.conf:SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load theappropriate socache module(mod socache shmcb?)
解决方案:要么不调用此模块,要么让调用的模块加载上
5.强制跳转 https:
有些时候为了安全,网站不允许使用 http 访问,仅允许使用 https 访问,目的是为了更加安全
在http 部分的目录权限标签中添加一下内容
#vim /usr/local/apache2/etc/httpd.conf
找到DOC,不能出了范围
<Directory "/usr/local/apache2/htdocs">
RewriteEngine on #开启转发规则
RewriteCond %{SERVER_PORT}!^443$ #检查访问端口只要目标不是443的
RewriteRule^(.*)?$ https://%{SERVER_NAME}/$1 #全都使用https重新访问
</Directory>
在做后面实验时为了更加方便理解,我们可以先把 https 关闭掉
需要关闭: 跳转&虚拟主机&ssl 配置文件调用
6)Apache日志切割
我们每访问一次网站,那么就会记录若干条日志。如果日志不去管理,时间长了日志文件会越来越大,如何避免产生大的日志文件?其实 apache 有相关的配置,使日志按照我们的需求进行归档,比如每天一个新日志,或者每小时一个新的日志。
1.首先简单设置日志的路径名称
#vim /usr/local/apache2/etc/httpd.conf
编辑添加内容如下:
ErrorLog ”logs/error.log“
CustomLog ”logs/access.log“ combined
指定了日志存放在/usr/local/apache2/logs 目录下分别为error.log 和access.log,combined 为日志显示的格式,日志格式可以参考配置文件 httpd.conf 中格式的指定,如下:
LogFormat "%h %l %u %t \\"%r" %>s %b\\"%{Referer}i\\" \\"%{User-Agent}i"" combined
LogFormat "%h %l %u %t \\"%r\\" %>s %b" common
2.设置apache 日志分割
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_%Y%m%d. log 86400"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d. log 86400" common
注意 : 若开启了 https,则需要修改 http-ssl.conf 配置文件中的日志记录条目
ErrorLog 是错误日志,CustomLog 是访问日志。 就是管道符,意思是把产生的日志交给 rotatelog这个工具,而这个工具就是 apache 自带的切制日志的工具。-1 的作用是校准时区为UTC,也就是北京时间。86400,单位是秒,正好是一天,那么日志会每天切割一次。而最后面的 combined 为日志的格式,在httpd.conf 中有定义。
7)不记录指定文件类型的日志
如果一个网站访问量特别大,那么访问日志就会很多,但有一些访问日志我们其实是可以忽略掉的,比如网站的一些图片,还有 js、css 等静态对象。而这些文件的访问往往是巨量的,而且即使记录这些日志也没有什么用,那么如何忽略不记录这些日志呢?
1.配置日志不记录图片的访问
#vim /usr/local/apache2/etc/httpd.conf
找到DOC,不能出了范围
SetEnvIf Request_URI ".*\\.gif" image-request
SetEnvIf Request_URI ".*\\.jpg" image-request
SetEnvIf Request_URI ".*\\.png" image-request
SetEnvIf Request_URI ".*\\.bmp" image-request
SetEnvIf Request_URI ".*\\.swf" image-request
SetEnvIf Request_URI ".*\\.js" image-request
SetEnvIf Request_URI ".*\\.css" image-request
CustomLog "|/usr/local ... _%Y%d .log 86400" combined env=!image-request
说明:在原来的访问日志配置基础上,增加了一些 image-request 的定义,比如把 gif、jpg、bmp、swf、is、css 等结尾的全标记为image-request,然后在配置日志后加一个标记env=!image-request,表示取反。
tailf 日志文件 --监控日志
8)Apache配置静态缓存
所说的静态文件指的是图片、js、css 等文件,用户访问一个站点,其实大多数元素都是图片、js、css 等,这些静态文件其实是会被客户端的浏览器缓存到本地电脑上的,目的就是为了下次再请求时不再去服务器上下载,这样就加快了速度,提高了用户体验。但这些静态文件总不能一直缓存,它总有一些时效性,那么就得设置这个过期时间。
1.配置静态缓存
#vim /usr/local/apache2/conf/httpd.conf
<IfModule mod_expires.c> #此模块默认未启用,请手动启用
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hours"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
或者使用 mod_headers 模块实现:该模块默认启用
<IfModule mod_headers.c>
#htm、html、txt 类的文件缓存一个小时
<filesmatch "\\.(html|htm|txt)$">
header set cache-control "max-age=3600"
</filesmatch>
#css、js、swf 类的文件缓存一个星期
<filesmatch "\\.(css|js|swf)$">
header set cache-control "max-age=604800"
</filesmatch>
#jpg、gif、jpeg、png、ico、flv、pdf 等文件缓存一年
<filesmatch "\\.(jpg|gif|jpeg|png|ico|flv|pdf)$">
header set cache-control "max-age=29030400"
</filesmatch>
说明:这里的时间单位可以 days、hours 甚至是 min,两种不同的方法,上面使用的是 mod_expires;而下面用的是 mod headers,要想使用这些模块,必须要事先已经支持。如何查看是否支持,使用命令:
#/usr/local/apache2/bin/apachectl -M
2.重启服务器并验证
#/usr/local/apache2/bin/apachectl -t
#/usr/local/apache2/bin/apachectl stop
#/usr/local/apache2/bin/apachectl start
验证:
#curl -x服务器IP地址:80 'http://www.sohu.com/image/a.jpg' -I
9)禁止解析PHP
某个目录下禁止解析 PHP,这个很有作用,我们做网站安全的时候,这个用的很多,比如某些目录可以上传文件,为了避免上传的文件有木马,所以我们禁止这个目录下面的访问解析 PHP。
配置禁止解析 php
<Directory /usr/local/apache2/htdocs/data>
php_admin_flag engine off
<filesmatch "(.*)php">
Order deny,allow
Deny from all
</filesmatch> 自己搭建如果只是玩玩
简单点 自己百度一下 找一个堡垒机 app 宝塔 直接可以安装
从头的化 建议看一下视频 自己手动操作一下
页:
[1]