零、http服务重要基础概念
https://blog.51cto.com/oldboy/736710 《浅谈千万级PV/IP规模高性能高并发网站架构》
IP 、PV、UV概念
IP、PV、UV的区别
用户访问网站基本流程
一、Apache服务生产实战–安装Apache
1.1卸载系统默认安装的Apache
#如果你的机器没有查到,就表示没有安装,则不用卸载了。
rpm -qa httpd* #-q --query ,-a --all 先查结果
# 卸载查询出来的Apache软件包 -e --erase 移除 , --nodeps Don't do a dependency check
rpm -e --nodeps httpd-2.4.6-89.el7.centos.1.x86_64
rpm -e --nodeps httpd-tools-2.4.6-89.el7.centos.1.x86_64
#shell脚本卸载法:
for name in `rpm -qa httpd*`
do
rpm -e --nodeps $name
done
#卸载完后检查卸载情况,结果为空则卸载干净了。
rpm -qa httpd* | grep httpd
1.2下载安装Apache
此外还可做PGP Signatures验证下载的程序是否正确,没被嵌入杂七杂八的东西(此处略操作)
wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.46.tar.gz
tar -zvxf httpd-2.4.46.tar.gz
cd httpd-2.4.46/
./configure \
--prefix=/application/apache2.4.46 \
--enable-defalte \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--with-mpm=worker \
--enable-rewrite \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--with-pcre=/usr/local/pcre
#在安装apache 软件包时,如果忘记安装了以上模块,可以再安装后,以dso方式编译安装
make
make install
ln -s /application/apache2.4.46/ /application/apache
#此时ls -l /application/apache2.4.46/和ls -l /application/apache/效果是一样的
#检查Apache安装情况
/application/apache/bin/apachectl -l
#-M 列出基于当前配置加载的所有模块
/application/apache/bin/apachectl -M
#查看编译版本
/application/apache/bin/apachectl -V
#启动Apache
/application/apache/bin/apachectl start
# 如果It works页面出不来,排查步骤:
#1、关闭防火墙和selinux
如果是生产环境则添加80端口的允许访问规则,而不是关闭防火墙
iptables -I INPUT -p tcp --dport 80 -j ACCEPCT
#2、查看服务是否启动了
netstat -lnt | grep 80
ps -aux | grep http
lsof -i:80
wget http://192.168.26.139
还不行的话,则去看Apache日志 cat /application/apache/logs/error_log
输入IP验证
Apache的./configure参数说明
报错处理:
https://www.cnblogs.com/visec479/p/5160297.html
《解决编译apache出现的问题:configure: error: APR not found . Please read the documentation》
分割线===
部署一个简单的web站点
#可从httpd.conf中得知
apache默认web站点目录为 /application/apache/htdocs
二、Apache服务生产实战–目录结构说明
2.1 apache目录结构说明 bin
配置目录conf
logs下的httpd.pid
apache 主配置文件 httpd.conf
egrep -v "#|^$" httpd.conf | nl
httpd.conf解释说明:
解释到此,没有特加说明的,可以暂时忽略
2.2 Apache扩展的配置文件
开启httpd.conf的注释,即加载conf/extra/httpd-vhosts.conf配置文件
其扩展配置的路径为/application/apache/conf/extra
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
# Various default settings
#Include conf/extra/httpd-default.conf
2.3 Apache虚拟主机的配置 httpd-vhosts.conf
httpd-vhosts.conf配置说明
提示:在虚拟主机配置文件httpd-vhosts.conf 中,我们发现了有些参数选项是和httpd. conf主配置文件重复的。这里是局部(httpd-vhosts.conf)优先原则,如果局部没配,则使用全局配置。如: DocumentRoot,DircetoryIndex等。
三、Apache服务-基于域名的虚拟主机实战配置httpd-vhosts.conf
3.1 先编辑httpd.conf开启虚拟主机配置
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
vim /application/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin 123456@qq.com
DocumentRoot "/var/blog"
ServerName blog.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/blog.etiantian.org-error_log"
CustomLog "logs/blog.etiantian.org-access_log" common
</VirtualHost>
检查Apache配置的语法:
/application/apache/bin/apachectl -t
#优雅重启
/application/apache/bin/apachectl graceful
3.2 建立虚拟主机站点目录和index.html
mkdir -p /var/blog
echo "i am oldboy etiantian blog ......" > /var/blog/index.html
#赋予权限,这个目录就是将来放程序用的。
chown -R apache.apache /var/blog
修改Windows的hosts文件添加 (C:\Windows\System32\drivers\etc下的)
192.168.26.139 blog.etiantian.org
随后ping blog.etiantian.org ,浏览器访问,但报错403
处理方法:
因为没有配置授权许可所导致的,编辑httpd.conf,在最下面加入站点目录/var/blog的权限许可配置
vim httpd.conf
<Directory "/var/blog">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
#Require all granted
</Directory>
然后检查语法重启
/application/apache/bin/apachectl -t
/application/apache/bin/apachectl graceful
但本人在版本Apache/2.4.46上做上述操作还是403,换成了默认web配置的Directory才解决了403
(教程中的版本是Apache2.2.22)
参考:https://www.cnblogs.com/wajika/p/6481167.html
https://www.cnblogs.com/taosim/articles/3998804.html 《2.4.2后版本的apache中需要在目录下面添加 Require all granted,否则无论怎么访问都是403》
新增bbs.etiantian.org虚拟主机
注意:在新版本中在所有选项中都要加上-号、+号,否则报错,参考
https://my.oschina.net/u/1433006/blog/542060《Either all Options must start with + or -, or no》
vim httpd.conf 末尾加:
<Directory "/var/bbs">
Options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
vim httpd-vhosts.conf 末尾加:
<VirtualHost *:80>
ServerAdmin 123456@qq.com
DocumentRoot "/var/bbs"
ServerName bbs.etiantian.org
ServerAlias bbsoldboy.etiantian.org
ErrorLog "logs/bbs.etiantian.org-error_log"
CustomLog "logs/bbs.etiantian.org-access_log" common
</VirtualHost>
/application/apache/bin/apachectl -t
/application/apache/bin/apachectl graceful
最后Windows修改hosts文件,访问。 Linux则是修改 /etc/hosts
四、apache服务Forbidden 403问题
参考:https://www.cnblogs.com/wajika/p/6481167.html
https://www.cnblogs.com/taosim/articles/3998804.html 《2.4.2后版本的apache中需要在目录下面添加 Require all granted,否则无论怎么访问都是403》
五、apache日志轮询–cronolog
cd /server/tools
wget https://fossies.org/linux/www/old/cronolog-1.6.2.tar.gz
tar -zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2/
./configure
make && make install
pwd
随后编辑vim /application/apache/conf/extra/httpd-vhosts.conf
注释原先的CustomLog,加上后面的
<VirtualHost *:80>
ServerAdmin 123456@qq.com
DocumentRoot "/var/blog"
ServerName blog.etiantian.org
ServerAlias etiantian.org
ErrorLog "logs/blog.etiantian.org-error_log"
# CustomLog "logs/blog.etiantian.org-access_log" common
CustomLog "|/usr/local/sbin/cronolog /logs/blog_access_%Y%m%d.log" combined
</VirtualHost>
参考:https://blog.51cto.com/freeloda/1346076
END