做网站心得体会,济南手机端建站模板,wordpress s.w.org,网站建设的费用和预算1、概念介绍
a. Web 服务简介
WEB服务器也称为WWW(WORLD WIDE WEB#xff0c;万维网)服务器#xff0c;主要功能是提供网上信息浏览服务。
常用web服务器#xff1a;httpd#xff08;apache#xff09;、nginx、tomcat、IIS
客户端#xff1a;IE、firefox、chrome
b…1、概念介绍
a. Web 服务简介
WEB服务器也称为WWW(WORLD WIDE WEB万维网)服务器主要功能是提供网上信息浏览服务。
常用web服务器httpdapache、nginx、tomcat、IIS
客户端IE、firefox、chrome
b. Apache 简介
官网地址Welcome to The Apache Software Foundation!
Apache HTTP Server简称Apache是Apache软件基金会的一个开放源码的网页服务器可以在大多数计算机操作系统中运行由于其多平台和安全性被广泛使用是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展将Perl/Python等解释器编译到服务器中。
c. Apache 特点
① 开放源代码这是apache服务器的重要特性之一也是其他特性的基础任何人都可以自由使用这充分体现了开源软件的精神。
② 跨平台应用这个特性得益于apache的源代码开放apache服务器可以运行在绝大多数软硬件平台如linux、unix、windows等。
③ 支持各种web编程语言apache服务器可支持的网页编程语言包括perl、php、python、java等甚至微软的ASP技术也可以在apache服务器中使用。支持各种常用的web编程语言使apache具有更广泛的应用领域。
④ 模块化设计apache并没有将所有的功能集中在单一的服务程序内部而是尽可能地通过标准的模块实现专有的功能这为apache服务器带来了良好的扩展性其他软件开发商可以编写标准的模块程序从而添加apache本身不具有的其他功能。
⑤ 运行非常稳定apache服务器可用于构建具有大负载访问量的web站点。
⑥ 良好的安全性apache服务器具有相对较好的安全性这是开源软件共同具有的特性并且apache的维护团队会及时对发现的漏铜提供修补程序。
d. Apache 版本
apache服务器目前包括1.X和2.X两个版本
1.X系列的最高版本是1.3该版本继承了apache服务器1.0版本以来的优秀特性和配置管理风格具有非常好的兼容性、稳定性。
从2.0版本开始apache服务器加入了许多新的功能使用的配置语法和管理风格也有所改变。对于新构建的网站服务器使用2.X版本是一个不错的选择。目前apache的最新版本是httpd-2.4.54
e. Apache 端口
B/S 架构80 http443http
f. Apache 基金会
Apache软件基金会是世界上最大的开源基金会
300顶级项目2.71 亿多行代码用于管理350 多个项目和倡议从 Apache 镜像下载约 2 PB 的源代码850 多名个人 ASF 成员8,200 多个 Apache 提交者49,000 多名代码贡献者GitHub 流量前 5 个最活跃的 Apache 资源—克隆Thrift、Beam、Cordova、Arrow、GeodeGitHub 流量前 5 个最活跃的 Apache 资源—访问量Spark、Flink、Camel、Kafka、Beam价值22B 美元以上的 Apache 开源软件产品以 100% 的免费提供给广大公众使全球数十亿用户受益
2、源码安装 Apache
a. apache 安装
# 下载httpd
wget http://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz# 解压至/usr/local/src
tar -zxvf httpd-2.4.54.tar.gz -C /usr/local/src# 安装编译环境和apache依赖
yum install -y gcc gcc-c apr arp-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre openssl*# 进入httpd目录
cd /usr/local/src/httpd-2.4.54/# 预编译
./configure --prefix/usr/local/apache --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-ssl --enable-mpms-sharedall --enable-mpm-withevent# 编译
make -j 2# 安装
make install
预编译配置参数用途
--prefix指定安装目录--enable-so支持动态加载模块--enable-rewrite 支持网站地址重写--enable-cgi支持CGI程序脚本--enable-ssl支持SSL加密--enable-charset-lite支持多语言编码--enable-mpms-sharedall:安装apache所有运行模式模块
b. apache 目录结构
ls /usr/local/apache bin 存放httpd服务的各种执行程序文件包括主程序httpd服务控制工具apachectl等 cgi-bin 存放各种CGI程序文件 logs 存放httpd服务的日志文件 conf 存放httpd服务的各种配置文件包括主配置文件httpd.conf、增强配置子目录extra等。 htdocs 存放网页文档包括默认首页文件index.html等。 modules 存放httpd服务的各种模块文件
c. 优化执行路径2选1
① 添加软连接通过源码编译安装的httpd服务程序路径并不在默认的搜索路径中为了使该服务在使用时更加方便可以为相关程序添加符号链接 ln -s /usr/local/apache/bin/* /usr/local/bin
② 修改PATH环境变量在/etc/profile 中添加PAHT环境变量
vim /etc/profilePATH$PATH:/usr/local/apache/bin
source /etc/profile# 查看apache版本
httpd -v 3、添加httpd系统服务2选1
a. 使用chkconfig添加系统服务
chkconfig命令 主要用来更新启动或停止和查询系统服务的运行级信息, 若希望将httpd添加为系统服务以便通过chkconfig进行管理需要编写服务管理脚本把脚本放在/etc/init.d/目录下并在脚本开头添加chkconfig识别配置。
# 生成服务器管理脚本
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd# 添加chkconfig识别
vim /etc/init.d/httpd#!/bin/sh# chkconfig:2345 11 88 # 运行级别 启动优先级 关闭优先级# description:apache web server # 服务描述信息# 设置开机自动启动
chkconfig --add httpd # 添加服务以便让chkconfig指令管理它
chkconfig httpd on # 设置开机运行该服务默认是设置2345等级开机运行服务
chkconfig --list httpd # 删除指定的服务不再让chkconfig指令管理它
chkconfig --del httpd # 查看端口和进程信息
netstat -antup | grep httpd
ps -ef | grep httpd # 客户端测试
cur 192.168.137.5 b 使用 .service 脚本
centos7使用sytemd管理操作系统服务systemd是Linux系统最新的初始化系统对应的进程管理命令是systemctl, systemctl命令兼容了servicesystemctl实际上将 service 和 chkconfig 这两个命令组合到一起即systemctl也会去/etc/init.d目录下查看执行相关程序。
systemd使用.service脚本管理linux脚本, systemd有系统和用户区分
系统.service文件放在/usr/lib/systemd/system/用户.service文件放在/etc/lib/systemd/user/
一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。
Systemd 默认从目录/etc/systemd/system/读取配置文件。但是里面存放的大部分文件都指向/usr/lib/systemd/system/目录。systemctl enable命令用于在上面两个目录之间建立符号链接关系。开机时Systemd只执行/etc/systemd/system目录里面的配置文件。 ① 在编写.service 脚本之前先将chkconfig服务和httpd服务停掉清除上步操作
systemctl stop httpd
ps -ef | grep httpd# chkconfig关闭httpd服务管理
chkconfig --del httpd
chkconfig --list | grep httpd
② 编写.service脚本
cat /usr/lib/systemd/system/httpd.service [Unit]
Descriptionhttpd
Afternetwork.target[Service]
Typeforking
ExecStart/usr/local/apache/bin/apachectl start
ExecReload/usr/local/apache/bin/apachectl restart
ExecStop/usr/local/apache/bin/apachectl stop
PrivateTmpTrue[Install]
WantedBymulti-user.target
③ 添加开机自启动
# 设置服务开机自启动
systemctl enable httpd# 查看服务是否是开机自启动
systemctl is-enabled httpdll /etc/systemd/system/multi-user.target.wants/httpd.service ④ 启动服务并查看
# 启动服务
systemctl start httpd# 查看服务
systemctl status httpd
⑤ 客户端测试
curl 192.168.137.5 c. .service 脚本详解
Unit字段: 主要给出服务描述、启动顺序和依赖关系
Description字段 给出当前服务的简单描述。
Documentation字段 给出文档位置。
After字段 表示在什么服务之后启动不涉及依赖关系
Before字段 表示在什么服务之前启动不涉及依赖关系
Wants字段表示该服务和某服务存在某种弱依赖关系即某服务停止运行或退出不影响该服务继续运行。
Requires字段 表示强依赖关系即某服务停止运行或退出该服务也必须停止运行。
Wants字段与Requires字段 只涉及依赖关系与启动顺序无关默认情况下是同时启动的。
Server字段 主要给出服务的启动行为如何启动、重启、停止
Type字段 定义启动类型。它可以设置的值如下
- simple默认值systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他 服务不要使用此类型启动- forkingExecStart字段将以fork()方式启动此时父进程将会退出子进程将成为主进程- oneshot类似于simple但只执行一次Systemd 会等它执行完才启动其他服务- dbus类似于simple但会等待 D-Bus 信号后启动- notify类似于simple启动结束后会发出通知信号然后 Systemd 再启动其他服务- idle类似于simple但是要等到其他任务都执行完才会启动该服务。
PIDFile字段 pid文件路径
ExecStart字段 定义启动进程时执行的命令就是手动启动时执行的命令。
ExecReload字段 重启服务时执行的命令。
ExecStop字段 停止服务时执行的命令。
ExecStartPre字段 启动服务之前执行的命令。
ExecStartPost字段 启动服务之后执行的命令。
ExecStopPost字段 停止服务之后执行的命令。
KillMode字段 定义 Systemd 如何停止服务。它可以设置的值如下
- control-group默认值当前控制组里面的所有子进程都会被杀掉- process只杀主进程- mixed主进程将收到 SIGTERM 信号子进程收到 SIGKILL 信号- none没有进程会被杀掉只是执行服务的 stop 命令
Restart字段定义了Systemd 的重启方式。它可以设置的值如下对于守护进程推荐设为on-failure。对于那些允许发生错误退出的服务可以设为on-abnormal。
- no默认值退出后不会重启- on-success只有正常退出时退出状态码为0才会重启- on-failure非正常退出时退出状态码非0包括被信号终止和超时才会重启- on-abnormal只有被信号终止和超时才会重启- on-abort只有在收到没有捕捉到的信号终止时才会重启- on-watchdog超时退出才会重启- always不管是什么退出原因总是重启
RestartSec字段表示 Systemd 重启服务之前需要等待的秒数。
user字段 可以设置服务的用户名
WorkingDirectory字段 指定服务的安装目录
Install字段: 该字段 定义如何安装这个配置文件即怎样做到开机自启
WantedBy字段 表示该服务所在的 Target。
Target的含义是服务组表示一组服务。WantedBymulti-user.target指的是服务所在的Target是multi-user.target,Systemd 有默认的启动 Target。就是multi-user.target在这个组里的所有服务都将开机启动。
4、Apache 3种运行模式
Web服务器Apache目前一共有三种稳定的MPMMulti-Processing Module多进程处理模块模式
Prefork进程模式worker线程模式Event : 事件模式2.4版本后开始稳定
a. prefork 运行模式 Prefork MPM实现了一个非线程的、预派生的web服务器。它在Apache启动之初就先预派生一些子进程然后等待连接可以减少频繁创建和销毁进程的开销每个子进程只有一个线程在一个时间点内只能处理一个请求, 这是一个成熟稳定可以兼容新老模块也不需要担心线程安全问题但是一个进程相对占用资源消耗大量内存不擅长处理高并发的场景。
优点因为每个进程使用独立的内存空间所以比较安全。一个进程坏了不会影响其他进程。
缺点占用的内存比较大。
b. Worker MPM 运行模式 worker使用了多进程和多线程的混合模式worker模式也同样会先预派生一些子进程然后每个子进程创建一些线程同时包括一个监听线程每个请求过来会被分配到一个线程来服务。线程比起进程会更轻量因为线程是通过共享父进程的内存空间因此内存的占用会减少一些在高并发的场景下会比prefork有更多可用的线程表现会更优秀一些另外如果一个线程出现了问题也会导致同一进程下的线程出现问题如果是多个线程出现问题也只是影响Apache的一部分而不是全部。由于用到多进程多线程需要考虑到线程的安全了在使用keep-alive长连接的时候某个线程会一直被占用即使中间没有请求需要等待到超时才会被释放该问题在prefork模式下也存在。
优点可以处理海量请求而系统资源的开销小。原因一个进程中包括多个线程。多个线程之间可以共享内存所以占用的内存资源比较少。
缺点不太安全。如果一个线程坏了。整个进程都要坏了。另外存在keep-alive长连接占用资源时间过长。
c. Event MPM event模式是在2.4版本中才稳定发布的模式。这是Apache最新的工作模式它和worker模式很像不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题在event工作模式中会有一些专门的线程用来管理这些keep-alive类型的线程当有真实请求过来的时候将请求传递给服务器的线程执行完毕后又允许它释放。这增强了在高并发场景下的请求处理。
当某个连接没有请求时会主动关闭连接在work模式下必须等keep-alive超时才可以释放。
d. 修改 Apache 工作模式
# 查看Apache 工作模式
httpd -V 由于在预编译的时候添加了--enable-mpms-sharedall参数可以直接修改工作模式如果没有添加需要重新指定参数编译安装。 vim /usr/local/apache/conf/httpd.conf # 重启服务
systemctl restart httpd# 查看工作模式
httpd -V e. 查看web站点访问情况
Httpd服务器使用了两种类型的日志访问日志和错误。这两种日志的文件名分别为access_log和error_log均位于/usr/local/apache/logs目录下。
# 查看web访问日志
tail /usr/local/apache/logs/access_log # 查看web错误日志
tail /usr/local/apache/logs/error_log 5、httpd.conf 配置文件
vim /usr/local/apache/conf/httpd.conf
全局配置
ServerRoot /usr/local/apache # httpd服务器安装目录
Listen 80 # 设置httpd服务器监听的地址和网络端口号
User daemon # 设置运行httpd进程的用户账号
Group daemon # 设置运行httpd进程的组账号
ServerAdmin youexample.com # 设置httpd服务器的管理员e-mail地址
ServerName www.test.com:80 # 设置web站点的完整域名
DocumentRoot /usr/local/apache/htdocs # 设置网站根目录
DirectoryIndex index.html index.php # 设置网站的默认首页
ErrorLog logs/error_log # 设置错误日志文件的路径
LogLevel warn # 设置记录错误日志的级别
CustomLog logs/access_log common # 设置访问日志文件的路径
PidFile logs/httpd.pid # 设置用于保存httpd进程号的文件
AddDefaultCharset UTF-8 # 设置站点中的网页默认使用的字符集编码
Include conf/extra/httpd-default.conf # 加载另一个配置文件的内容
区域配置项
Directory / # 定义“/”目录区域的开始AllowOverride None # 不允许隐含控制文件覆盖配置Require all denied # 禁止任何人访问此区域
/Directory # 定义“/”目录区域的结束
6、httpd 服务的访问控制
a. 客户机地址限制
通过require配置项可以根据主机的主机名或ip地址来决定是否允许客户端访问在httpd服务器的主配置文件的Location、Directory、Files、Limit配置段中均可以使用Require配置项来控制客户端的访问地址的形式可以是ip地址、网络地址、主机名或域名使用名称“all”时表示任意地址。
Require all granted 表示允许所有主机访问
Require all denied 表示拒绝所有主机访问
Require local: 表示仅允许本地主机访问
Require [not] host 主机名或域名列表 表示允许或拒绝指定主机或域访问
Require [not] ipip地址或网段列表 表示允许或拒绝指定ip地址或网段访问
通常情况下网站服务器是对所有客户机开放的网页文档目录并未做任何限制因此使用的是“Require all granted”策略表示允许从任何客户机访问。
Directory /usr/local/apache/htdocsOptions Indexes FollowSymLinksAllowOverride NoneRequire all granted
/Directory
b. 用户授权限制
基于用户的访问控制包括认证authentication和授权authorization两个过程是apache允许指定用户使用用户名和密码访问特定资源的一种方式。认证是指识别用户身份的过程授权是指允许特定用户访问特定目录区域的过程。
Httpd服务器支持使用摘要认证digest和基本认证basic两种方式使用摘要认证需要在编译httpd之前添加--enable-auth-digest选项但并不是所有的浏览器都支持摘要认证而基本认证是httpd服务的基本功能不需要预先配置特别的选项。
① 创建用户认证数据文件
htpasswd -c /usr/local/apache/conf/.apachepasswd admin
htpasswd /usr/local/apache/conf/.apachepasswd user1
-c选项表示新建立此文件,如果密码文件已经存在则省略-c否则会覆盖
cat /usr/local/apache/conf/.apachepasswd ② 添加用户授权配置
vim /usr/local/apache/conf/httpd.conf# 添加用户授权配置Directory /usr/local/apache/htdocsOptions Indexes FollowSymLinksAllowOverride NoneAuthName welcomeAuthType BasicAuthUserFile /usr/local/apache/conf/.apachepasswdRequire valid-user#Require all granted/Directory
AuthName 定义受保护的领域名称该内容将在浏览器弹出的认证对话框中显示AuthType 设置认证的类型Basic表示基本认证AuthUserFile设置用于保存用户账号、密码的认证文件路径Require valid-user要求只有认证文件中的合法用户才能访问其中valid-user表示所有合法用户若只授权给单个用户可改为指定的用户名。
③ 启动服务
systemctl restart httpd
④ 测试访问 7、配置Apache虚拟主机
虚拟web主机指的是在同一台服务器中运行多个web站点httpd支持的虚拟主机类型包括三种
不同ip相同端口相同ip不同端口不同域名相同端口
a. 开启虚拟主机功能
三种都需要把虚拟主机功能打开
# 编辑Apache配置文件
vim /usr/local/apache/conf/httpd.conf# 去掉文件中的这行注释如果没有此行手写此行
Include conf/extra/httpd-vhosts.conf
b. 配置不同ip相同端口虚拟主机
① 给服务增加IP
ifconfig ens33:1 192.168.137.20
ifconfig ens33:1 ② 创建站点目录
mkdir -p /var/www/html/{web,bbs}
tree /var/www ③ 创建站点网页
echo Welcome to web page!!! /var/www/html/web/index.html
echo Welcome to bbs page!!! /var/www/html/bbs/index.html
④ 定义虚拟主机文件
# 创建日志文件目录
mkdir -p /usr/local/apache/logs/www/{web,bbs}# 编辑虚拟主机配置文件
vim /usr/local/apache/conf/extra/httpd-vhosts.confVirtualHost 192.168.137.5:80ServerAdmin roothualu.comDocumentRoot /var/www/html/webServerName www.hualuweb.comErrorLog logs/www/web/hualuweb.com-error_logCustomLog logs/www/web/hualuweb.com-access_log commonDirectory /var/www/html/webRequire all granted/Directory
/VirtualHostVirtualHost 192.168.137.20:80ServerAdmin roothualu.comDocumentRoot /var/www/html/bbsServerName www.hualubbs.comErrorLog logs/www/bbs/hualubbs.com-error_logCustomLog logs/www/bbs/hualubbs.com-access_log commonDirectory /var/www/html/bbsRequire all granted/Directory
/VirtualHost# 添加服务名称
vim /usr/local/apache/conf/httpd.conf# 添加服务网站ServerName www.hualuweb.com:80ServerName www.hualubbs.com:80
# 检查虚拟主机配置文件语法
httpd -t
⑤ 重启服务并测试
systemctl restart httpd # 查看web访问日志
cat /usr/local/apache/logs/www/web/hualuweb.com-access_log c. 配置相同ip不同端口虚拟主机
① 修改 httpd.conf
# 添加监听端口
vim /usr/local/apache/conf/httpd.conf#Listen 12.34.56.78:80Listen 80Listen 8081
② 编辑虚拟主机配置文件
vim /usr/local/apache/conf/extra/httpd-vhosts.confVirtualHost 192.168.137.5:80ServerAdmin roothualu.comDocumentRoot /var/www/html/webServerName www.hualuweb.comErrorLog logs/www/web/hualuweb.com-error_logCustomLog logs/www/web/hualuweb.com-access_log commonDirectory /var/www/html/webRequire all granted/Directory
/VirtualHostVirtualHost 192.168.137.5:8081ServerAdmin roothualu.comDocumentRoot /var/www/html/bbsServerName www.hualubbs.comErrorLog logs/www/bbs/hualubbs.com-error_logCustomLog logs/www/bbs/hualubbs.com-access_log commonDirectory /var/www/html/bbsRequire all granted/Directory
/VirtualHost③ 测试虚拟主机配置文件语法
httpd -t
④ 重启服务并测试
systemctl restart httpd d. 不同域名相同端口虚拟主机
① 编辑虚拟主机配置文件
vim /usr/local/apache/conf/extra/httpd-vhosts.confVirtualHost www.hualuweb.com:80ServerAdmin roothualu.comDocumentRoot /var/www/html/webServerName www.hualuweb.comErrorLog logs/www/web/hualuweb.com-error_logCustomLog logs/www/web/hualuweb.com-access_log commonDirectory /var/www/html/webRequire all granted/Directory
/VirtualHostVirtualHost www.hualubbs.com:80ServerAdmin roothualu.comDocumentRoot /var/www/html/bbsServerName www.hualubbs.comErrorLog logs/www/bbs/hualubbs.com-error_logCustomLog logs/www/bbs/hualubbs.com-access_log commonDirectory /var/www/html/bbsRequire all granted/Directory
/VirtualHost
② 配置hosts映射文件
vim /etc/hosts
192.168.137.5 www.hualuweb.com
192.168.137.5 www.hualubbs.com
③ 检测虚拟主机文件语法
httpd -t
④ 重启服务
systemctl restart httpd
⑤ 修改Windows映射文件
C:\Windows\System32\drivers\etc\hosts
192.168.137.5 www.hualuweb.com
192.168.137.5 www.hualubbs.com