设为首页 收藏本站
查看: 1529|回复: 0

[经验分享] Linux WEB服务器搭建

[复制链接]

尚未签到

发表于 2018-11-18 08:56:44 | 显示全部楼层 |阅读模式
  Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
本文以源码安装方式来进行。
1.apache安装( httpd-2.2.4.tar.gz)  http://www.apache.org
在/usr/local目录下创建一个目录apache2
将文件解压到apache2文件目录下
tar -zxvf  httpd-2.2.4.tar.gz -C /usr/local/apache2
切换到httpd-2.2.4目录
配置 ./configure --prefix=/usr/local/apache2 \
--enable-deflate \
--enable-expires \
--enable-headers \
--enable-modules=nost \
--enable-so \
--with-mpm=worker \
--enable-rewrite \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--with-pcre=/usr/local/pcre
更多参数可以通过./configure --help查看
在安装时如果忘记了安装以上模块,可以使用dso方式编译安装
apache版本过高,需要安装apr
解决apr not found问题>>>>>>
[root@xt test]# tar -zxf apr-1.4.5.tar.gz  
[root@xt test]# cd  apr-1.4.5  
[root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr  
[root@xt apr-1.4.5]# make && make install
  解决APR-util not found问题>>>>
[root@xt test]# tar -zxf apr-util-1.3.12.tar.gz  
[root@xt test]# cd apr-util-1.3.12  
[root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util \
--with-apr=/usr/local/apr/bin/apr-1-config  
[root@xt apr-util-1.3.12]# make && make install
  解决pcre问题
[root@xt test]#unzip -o pcre-8.10.zip  
[root@xt test]#cd pcre-8.10  
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
make && make install
安装完后,编译还是报错configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
yum install -y gcc
yum install -y zlib-devel
yum install -y openssl-devel
  查看/usr/local/apache/bin/apachectl -M
make 编译   make install 安装
启动  /usr/local/apache2/bin/apachectl start
在生产环境中如果修改了apache的配置文件,再重启服务前最好检查语法是否有误,以免重启服务后对业务造成影响。
apache检查/usr/local/apache/bin/apachectl -t
[root@backupserver ~]# /usr/local/apache/bin/apachectl -t
Syntax OK
重启服务时不建议用restart,而是改用graceful,平滑重启。
服务启动后检查服务是否有开启
[root@backupserver ~]# ps -ef |grep httpd
root      1854     1  0 10:21 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon    2079  1854  0 10:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon    2080  1854  0 10:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
daemon    2081  1854  0 10:50 ?        00:00:00 /usr/local/apache2/bin/httpd -k start
root      2166  1964  0 10:52 pts/0    00:00:00 grep --color=auto httpd
[root@backupserver ~]# netstat -tnlp|grep 80
tcp        0      0 :::80                       :::                        LISTEN      1854/httpd
端口和服务均已开启。到此,apache服务已安装完成。
配置apache基于域名的虚拟主机--生产环境中最常用
1.开启主配置文件httpd.conf中包含httpd-vhosts.conf的文件的配置
取消前面的#号
sed -i "s##Include conf/extra/httpd-vhosts.conf#Include conf/extra/httpd-vhosts.conf#" httpd.conf
2.配置虚拟主机
httpd-vhosts.conf
留下一个样式进行编辑
例子中配置一个blog.etiantian.org域名,实际生产环境中,需要把这个域名解析成apache服务所在的IP

ServerAdmin xxxx@qq.com
DocumentRoot "/var/blog"
ServerName blog.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blo-access_log" common

检查修改过apache配置的语法
在实际生产中,很重要,没有此步,配置文件有错误的话,重启服务后很可能造成网站当机。
[root@backupserver bin]# ./apachectl -t
Syntax OK
3.建立站点目录和首页内容
echo 'Im TUWEI! my blog is http://blog.etiantian.org'>>/var/blog/index.html
  执行graceful参数重启apache服务
[root@backupserver bin]# ./apachectl graceful,该参数表示优雅的重启,不会中断用户的访问请求,
而是处理完请求后再重启,在生产环境中用graceful代替restart
4.编辑hosts文件  C:\Windows\System32\drivers\etc
将IP和域名加到hosts中
  hosts文件一般比喻为本地的DNS文件,将指定域名解析为对应的IP,多个域名可以对应一个IP
  访问blog.etiantian.org,出现403,因为站点目录/var/blog没有设置许可
在httpd.conf配置中加入站点配置,配置中根目录/ 也如下配置

Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

  检查语法
[root@backupserver apache]# ./bin/apachectl -t
  [root@backupserver apache]# ./bin/apachectl graceful
  基于IP的配置
可以增加别名的方式临时增加一个IP(负载均衡中此IP称为VIP)
ifconfig eth0:11 192.168.27.11 netmask 255.2555.255.0 up
编辑配置文件 将

ServerAdmin xxxxx@qq.com
DocumentRoot "/var/blog"
ServerName 192.168.27.10
ServerAlias etiantian.org
ErrorLog "logs/blog-error_log"
CustomLog "logs/blo-access_log" common

基于端口的配置
  先要编辑主配置文件
httpd.conf 在配置中加入新的监听端口,
Listen 8090
然后编译虚拟主机配置文件httpd-vhosts.conf,修改相应端口
  虚拟机配置alias别名
查看alias别名支持情况
[root@backupserver bin]# ./httpd -l|grep alias
mod_expires介绍
(Expires/Cache-Control Header是控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。
只是Cache-Control比Expires可以控制的多一些,
而且Cache-Control会重写Expires的规则。
Last-Modified/If-Modified-Since和ETag/If-None-Match
是浏览器发送请求到服务器后判断文件是否已经修改过,
如果没有修改过就只发送一个304回给浏览器,告诉浏览器直接从自己本地的缓存取数据;
如果修改过那就整个数据重新发给浏览器)
  mod_expires允许通过apache配置文件控制HTTP的“Expires:”和“Cache-Control:”头内容,该模块
控制服务器应答时的Expires头内容和Cache-Control头的max-age指令。有效期可以设置为相对与源文件的最后修改时刻或者客户端的访问时刻
这些HTTP头向客户端表明了内容的有效性和持久性。如果客户端本地有缓存,则内容就可以从缓存(除非已经过期)而不是
从服务器读取。然后客户端会检查缓存中的副本,看看是否过期或者失效,以决定是否重新从服务器获得内容更新
模块安装
检查是否有安装-编译
[root@backupserver bin]# ./apachectl  -l|grep mod_expires
如果是以DSO方式编译的,查看
[root@backupserver apache]# ll modules/|grep expires
-rwxr-xr-x 1 root root  37791 Oct 15 13:33 mod_expires.so
[root@backupserver apache]# grep mod_expires.so ./conf/httpd.conf
#LoadModule expires_module modules/mod_expires.so
  以上两种情况不能同时存在,否则可能会有冲突
  编译时加入如下参数
--enable-expires
DSO安装
DSO动态模块加载配置全部命令
切换到apache解压目录
[root@backupclient metadata]# pwd
/tmp/httpd-2.4.28/modules/metadata
  /usr/local/apache/bin/apxs -c -i -a mod_expires.c
-c 表示需要执行编译,首先编译C源程序生成目标代码.o
-i 需要执行安装
-a 自动增加一个LoadModule行到httpd.conf中,激活此模块,如果此行已存在,则启用
安装完成后
chmod 755 /usr/local/apache2/modules/mod_expires.so
[activating module `expires' in /usr/local/apache2/conf/httpd.conf]
检查安装情况
[root@backupclient apache]# grep expires conf/httpd.conf
LoadModule expires_module     modules/mod_expires.so
查看当前http headers
  tail -1 /etc/hosts
  [root@backupserver apache]# tail -1 /etc/hosts
192.168.27.10   blog.tuwei.com
[root@backupserver apache]# curl -I blog.tuwei.com
HTTP/1.1 200 OK
Date: Sat, 28 Oct 2017 02:28:09 GMT
Server: Apache/2.4.28 (Unix)
Last-Modified: Fri, 27 Oct 2017 01:56:10 GMT
ETag: "12b-55c7d97c10ca2"
Accept-Ranges: bytes
Content-Length: 299
Content-Type: text/html
  blog.tuwei.com为前面配置好的http服务
  expires在httpd.conf中应用
加入如下内容
ExpiresActive on
ExpiresDefault "acsess plus 12 months"
ExpiresByType text/html "acsess plus 12 months"
ExpiresByType text/css "acsess plus 12 months"
ExpiresByType image/gif "acsess plus 12 months"
ExpiresByType image/jpeg"acsess plus 12 months"
ExpiresByType  image/jpg "acsess plus 12 months"
ExpiresByType image/png "acsess plus 12 months"
ExpiresByType application/x-shockwave-flash "acsess plus 12 months"
ExpiresByType application/x-javascript "acsess plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"
  expires在httpd-vhosts.conf中应用
在虚拟主机配置中也是加入上面内容
在配置目录/var/tuwei目录放入一张图片。
[root@backupserver tuwei]# wget http://blog.tuwei.com/expires.jpg
--2017-10-29 16:10:04--  http://blog.tuwei.com/expires.jpg
Resolving blog.tuwei.com... 192.168.27.10
Connecting to blog.tuwei.com|192.168.27.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 327447 (320K) [image/jpeg]
Saving to: “expires.jpg.1”
  100%[=======================================================================>] 327,447     --.-K/s   in 0.005s
  2017-10-29 16:10:04 (60.0 MB/s) - “expires.jpg.1” saved [327447/327447]
可以正常访问。
看下http header信息
[root@backupserver tuwei]# curl -I http://blog.tuwei.com/expires.jpg
HTTP/1.1 200 OK
Date: Sun, 29 Oct 2017 08:11:18 GMT
Server: Apache/2.4.28 (Unix)
Last-Modified: Sun, 15 Oct 2017 06:26:47 GMT
ETag: "4ff17-55b8ff971f7c0"
Accept-Ranges: bytes
Content-Length: 327447
Cache-Control: max-age=31104000
Expires: Wed, 24 Oct 2018 08:11:18 GMT
Content-Type: image/jpeg
  通过火狐浏览器YSLOW工具来看expires缓存header
mod_deflate模块
  mod_deflate模块提供了DEFLATE输出过滤器,允许服务器在将内容发送到客户端前进行压缩,以节约带宽。
检查方法和expires相似
编译时加入如下参数
--enable-deflate
[root@backupserver filters]# pwd
/tuwei/tools/httpd-2.4.28/modules/filters
/usr/local/apache/bin/apxs -c -i -a mod_deflate.c
  配置,可以在主配置文件中也可以在虚拟主机中配置
纯净配置

DeflateCompressionLevel 9
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE  application/javascript
AddOutputFilterByType DEFLATE   text/css





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636416-1-1.html 上篇帖子: LAMP之Centos6.5安装配置Apache(一) 下篇帖子: apache之https域名证书配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表