Python服务器运维笔记:第二章Linux - 1.2.3 apache服务器安装

前言:本文是学习网易微专业的《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表示三种用户的权限:第一个7root用户自己的权限(7表示可读、可写、可执行的权限),第二个5是与所有者同组的其他组员的权限(5表示可读、不可写、可执行的权限),第三个5是其他人的权限。

-R表示递归地将文件夹里所有文件的权限都修改。

Step6httpd.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.comhttp://mypython.com,出现如下结果,表示部署成功。在这里插入图片描述
在这里插入图片描述

三、课程小结

  • 01 apache httpdhttpdapache的进程。
  • 02 web配置:通过配置不同的文件,可以部署多个不同的网站。
  • 03 进程控制:通过apachectl的命令,来控制apache的启动和重启。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章