前言:本文是学习网易微专业的《python全栈工程师》 中的《服务器运维开发工程师》专题的课程笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
apache httpd
服务器简介httpd
安装httpd
配置
二、详情解读
2.1.httpd
简介
2.1.1.apache httpd
简介
httpd web
服务器是apache
基金会下的一个开源服务器项目。httpd
服务器能够提供静态网页服务以及通过扩展提供动态程序访问。
官方网站:http://httpd.apache.org/
2.2.httpd
服务器安装
2.2.1.安装配置
1.httpd
服务器可以直接通过yum
命令安装。
yum install httpd
2.服务器管理
apachectl start|stop
3.配置文件位置
/etc/httpd/conf/httpd.conf
说明:如果找不到httpd.conf
文件,可以使用find
命令查找
find / -name httpd.conf
直接在find
后面写上-name
,表明要求系统按照文件名查找,最后写上httpd.conf
这个目标文件名即可。
实操:
Step1
: 启动虚拟机。选择“无界面启动”,因为是远程登录,不需要看到界面。
Step2
: 远程登录服务器。启动putty
,输入以下命令:
ssh -l root 192.168.1.119
**Step3
:安装httpd
服务器。
首先查看主机上是否有httpd
这个安装包
yum search httpd
如下结果,表示有这个安装包:
输入以下命令,进行安装:
yum install httpd
说明:如果发生无法连接网络的错误,要检查网卡的配置。
查看httpd.conf
是否存在
ls /etc/httpd
Step4
: 启动httpd
服务器
apachectl start
在浏览器输入服务器的ip
地址:http://192.168.3.119
这是因为主机启动了防火墙,把它关闭即
service firewalld stop
重新访问主机ip
,出现如下页面,表示apachd
安装成功
Step5:
配置apache
。
首先安装vim
yum install vim
打开apache
的配置文件,
vim /etc/httpd/conf/httpd.conf
说明:如果忘记配置文件名,输入到文件夹conf/
时,按tab
键,系统会列出conf
文件夹下所有文件。
2.2.2.配置文件
1.Listen ip:port
:指定web
服务器绑定到哪个ip
及端口号,可以只指定端口号,如80、8080
2.LoadModule
:模块加载,通过加载不同的模块实现不同功能
3.ServerName
:服务器名称,需要明确指定,默认注释,需要去掉注释符#
并指定,才能启动httpd
4.<Directory/>
:目录权限设置块
5.DocumentRoot
:指定web
服务器根目录
6.ErrorLog
错误:日志位置
7.<IfModule log_config_module>
:访问日志位置
8.Include
:加载其他配置文件
2.2.3.httpd
主进程控制
Apache
修改配置后需要重启后才能生效
1.启动httpd
:/usr/local/apache2/bin/apachectl start
2.停止httpd
运行:/usr/local/apache2/bin/apachectl stop
3.重启httpd
:/usr/local/apache2/bin/apachectl restart
4.平滑重启:/usr/local/apache2/bin/apachectl graceful
5.平滑关闭:/usr/local/apache2/bin/apachectl graceful-stop
2.3.静态网页部署
2.3.1.配置文件
Step1
: 修改DocumentRoot
,指定web
服务器根目录。
Step2
: 关闭selinux
将/etc/selinux/config
文件中的SELINUX=enforcing
修改为SELINUX=disabled
Step3
: 重启 reboot
Step4
: 启动apache web
服务器
apachectl start
Step5
: 关闭防火墙
service firewalld stop
实操:
步骤一: 创建web
目录
mkdir -p /wwwroot/myweb
说明:-p
表示递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
步骤二: 进入myweb
目录,并创建index.html
文件
cd /wwwroot/myweb
vim index.html
按i
键,进入编辑模式,随便写入点内容,比如:hello world
。
再按ESC
键,进入命令模式,再输入:wq
保存并退出。
步骤三: 编辑apache
配置文件
vim /etc/httpd/conf/httpd.conf
进入文件httpd.conf
后,按下/
,输入DocumentRoot
查找它,
1.将DocumentRoot "/var/www/html
修改为DocumentRoot /wwwroot/myweb
2.删除下面的内容
<Directory />
AllowOverride none
Require all denied
</Directory>
3.将下面中的路径修改为 /wwwroot/myweb
<Directory "/var/www"> # 这里修改为"/wwwroot/myweb"
AllowOverride None
# Allow open access:
Require all granted
</Directory>
步骤四: 修改selinux
vim /etc/selinux/config
将/etc/selinux/config
文件中的SELINUX=enforcing
修改为SELINUX=disabled
步骤五: 重启服务器
reboot
步骤六: 重新登录虚拟机的服务器,并重启服务
apachectl restart
步骤七: 关闭防火墙
service firewalld stop
此时,访问浏览器http://192.168.3.119
推荐用防火墙命令打开80
端口,这样就不用每次都关闭防火墙了,防火墙为了安全作用还是得开着好。
firewall-cmd --zone=public --add-port=80/tcp --permanent
示例图如下:
2.4.虚拟主机部署
2.4.1.虚拟主机
Step1:
创建新的web
目录,比如:/wwwroot/myweb2
。通过如下命令可以创建:
mkdir /wwwroot/myweb2
Step2:
通过sftp
命令上传网站文件到web
目录,也可以下载一个winscp
程序
sftp
连接远程服务器:sftp [email protected]
。
使用put
命令,可以将本地文件上传到服务器中;使用get
命令可以将服务器中的文件下载到本地。
sftp
的使用可以参考文章:Linux:CentOS中SFTP工具的使用
Step3:
创建/web/logs
目录用于存入日志文件。通过下面命令可以创建:
mkdir -p /web/logs
Step4
: 通过chown apache:apache /web/logs
修改文件拥有者与属组。在/etc/httpd/conf/httpd.conf
文件中,有如下图所示的配置:
所以要修改文件拥有者和属组为apache
,否则apache
没有权限访问这些文件。
Step5
: 通过chmod -R 755 /wwwroot/myweb2
修改权限。
此处755
表示三种用户的权限:第一个7
是root
用户自己的权限(7
表示可读、可写、可执行的权限),第二个5
是与所有者同组的其他组员的权限(5
表示可读、不可写、可执行的权限),第三个5
是其他人的权限。
-R
表示递归地将文件夹里所有文件的权限都修改。
Step6
: 在httpd.conf
中添加Listen 81
端口。此处用不同的端口与其他的网站区别开来。
实操:
步骤一: 创建好目录/wwwroot/myweb2
后,新打开一个终端,使用sftp
连接:
sftp [email protected]
步骤二: 切换目录。
服务器上的目录切换:
cd /wwwroot/myweb2
本地的目录切换:(注意是lcd
,而不是cd
)
lcd ~/test
查看服务器上的目录用ls
,查看本地的目录用lls
:
步骤三: 上传文件用put + 文件名
,上传文件夹用put + -r + 文件名
put -r flask-cms
上传完成之后,使用exit
退出。
步骤四: 修改权限。
首先查看权限
ls -al /wwwroot/myweb2
ls -al /web/logs
然后修改为apache
所有者
chown -R apache:apache /web
结果:
chmod -R 755 /wwwroot/myweb2
结果:
步骤五: 添加端口号:
vim /etc/httpd/conf/httpd.conf
如下图,添加Listen 81
步骤六: 创建文件host2.conf
。
在/etc/httpd/conf/httpd.conf
文件的末尾,有如下配置:
所以我们可以创建文件:
touch /etc/httpd/conf.d/host2.conf
编辑这文件,写入如下内容:
<VirtualHost 192.168.3.119:81>
DocumentRoot "/wwwroot/myweb2"
ServerName localhost
ServerAlias server1
ErrorLog "/web/logs/web1-error_log"
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
步骤七: 重启apache
apachectl restart
如果想知道apache
的配置有没有错,可以运行下面的命令测试一下:
apachectl -t
出现如下图的ok
,表示配置成功
步骤八: 开启81
端口,并重启防火墙
firewall-cmd --zone=public --add-port=81/tcp --permanent
service firewalld restart
浏览器访问:http://192.168.3.119:81
一般apache
中的配置文件如下:
<VirtualHost IP:port>
DocumentRoot "/web/web1/" # 站点目录
ServerName mywebserver # 站点域名
ServerAlias yourwebserver # 站点别名
ErrorLog "/web/logs/web1-error_log" # 错误日志
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
2.5.域名
1.直接IP
访问服务器,不方便记忆。域名是为了方便访问服务器。
2.域名需要DNS
服务器解析成IP
地址,如果没有解析记录,就没有办法通过域名访问。
3.域名必须注册,常用的是国际域名。比如:.com
、.net
,然后是国家域名.cn
、.com.cn
,另外还有很多其他的域名,比如.io
、.org ......
4.域名结构:域名.com,二级域名:www.域名.com,api.域名.com
5.本地测试,可以通过架设dns
服务器或者通过修改本地hosts
文件来模拟域名
6.apache
可以通过域名绑定多个虚拟主机
由于域名需要解析,所以比直接使用ip
要慢,因此,在我们服务器内部,尽量使用ip
,比如mysql
的连接,使用127.0.0.1
,要比localhost
要快。
比如下面的示例apache
配置:
<VirtualHost *:80>
DocumentRoot "/web/web1/" # 站点目录
ServerName luxp.com # 站点域名
ServerAlias mypython.com # 站点别名
ErrorLog "/web/logs/web1-error_log" # 错误日志
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
实操:
Step1
: 修改hosts
文件
vim /etc/hosts
添加如下图的两行内容:
按ESC
键,输入:wq
,保存并退出。
Step2
: 修改服务端中的配置文件host2.conf
先拷贝一份配置文件
cp /etc/httpd/conf.d/host2.conf /etc/httpd/conf.d/host3.conf
修改host3.conf
这个文件为如下内容:
<VirtualHost *:80>
DocumentRoot "/web/web1/" # 站点目录
ServerName luxp.com # 站点域名
ServerAlias mypython.com # 站点别名
ErrorLog "/web/logs/web1-error_log" # 错误日志
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
Step3
: 重启apache
apachectl restart
在浏览器访问http://luxp.com
和http://mypython.com
,出现如下结果,表示部署成功。
三、课程小结
- 01
apache httpd
:httpd
是apache
的进程。 - 02
web
配置:通过配置不同的文件,可以部署多个不同的网站。 - 03 进程控制:通过
apachectl
的命令,来控制apache
的启动和重启。