Linux Engineer学习------WEB/Postfix

实验环境:修改两台虚拟机防火墙默认区域为trusted

[[email protected] ~]# firewall-cmd --set-default-zone=trusted

[[email protected] ~]# firewall-cmd --set-default-zone=trusted

1、web

案例1搭建基本的Web服务

? 基于 B/S (Browser/Server)架构的网页服务

– 服务端提供网页

– 浏览器下载并显示网页

? Hyper Text Markup Language,超文本标记语言

? Hyper Text Transfer Protocol,超文本传输协议

装包、起服务

服务端:Server

1. 安装软件httpd

2. 启动httpd服务,设置开机自起

默认网页文件的位置:/var/www/html/index.html

3. 书写一个页面文件

# echo '<h1>My First Web' > /var/www/html/index.html

客户端:Desktop

#前提:真机所有浏览器关闭

1.测试访问:firefox   172.25.0.11

2.测试访问:命令行测试工具

[[email protected] ~]# yum -y install elinks

[[email protected] ~]# elinks -dump 172.25.0.11

虚拟机Server0:

1.修改配置文件/etc/httpd/conf/httpd.conf

补充vim 命令模式  /ServerName 全文查找ServerName 按n、N跳转

将开头的‘#’去掉

ServerName server0.example.com:80

2.重起httpd服务

虚拟机desktop0:

测试:elinks -dump server0.example.com

DocumentRoot:网页根目录(/var/www/html)

虚拟机Server0:

1.修改配置文件/etc/httpd/conf/httpd.conf

补充vim 命令模式  /Doc 全文查找Doc  按n、N跳转

DocumentRoot "/var/www/myweb"

2.创建目录/var/www/myweb,重起httpd服务

3.书写新的测试页面

[[email protected] ~]# echo woshi myweb > /var/www/myweb/index.html

虚拟机desktop0:

测试:elinks -dump server0.example.com

服务端与客户端路径的对照:

客户端: elinks  -dump  server0.example.com

服务端: /var/www/myweb

客户端: elinks  -dump  server0.example.com/abc

服务端: /var/www/myweb/abc

客户端:   server0.example.com/abc/private

服务端: /var/www/myweb/abc/private

2、虚拟Web主机

一台服务器,提供多个不同的Web站点

? 区分方式

– 基于域名的虚拟主机

– 基于端口的虚拟主机

– 基于IP地址的虚拟主机

案例2基于域名的虚拟主机  

一旦启用 虚拟Web主机功能,所有的站点都必须用虚拟Web主机来实现

/etc/httpd/conf.d/*.conf   #自定义一个配置文件

? 为每个虚拟站点添加配置

<VirtualHost IP地址:端口>

ServerName          #此站点的DNS名称

DocumentRoot     #此站点的网页根目录

</VirtualHost>

#帮助文档  /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf

虚拟机Server0:

[[email protected] ~]# vim  /etc/httpd/conf.d/nsd01.conf   #调用配置

<VirtualHost   *:80>                                         #虚拟Web主机开始

DocumentRoot  /var/www/qq                     #指定网页文件根目录

ServerName  www0.example.com                #指定域名

</VirtualHost>                                                 #虚拟Web主机结束

<VirtualHost   *:80>

DocumentRoot  /var/www/baidu

ServerName  webapp0.example.com

</VirtualHost>

<VirtualHost   *:80>

DocumentRoot  /var/www/myweb

ServerName  server0.example.com

</VirtualHost>

[[email protected] virtual]# httpd  -t            #确保语法检查OK

Syntax OK

[[email protected] ~]# mkdir /var/www/qq       #建立相应的网页目录

[[email protected] ~]# mkdir /var/www/baidu    #建立相应的网页目录

[[email protected] ~]# echo QQ > /var/www/qq/index.html

[[email protected] ~]# echo baidu > /var/www/baidu/index.html

[[email protected] ~]# systemctl restart httpd

案例3实现httpd访问控制,实现仅本机访问页面

? 使用 <Directory> 配置区段

– 每个文件夹自动继承其父目录的ACL访问权限

– 除非针对子目录有明确设置

<Directory 目录的绝对路径>

.. ..

Require all denied|granted

Require ip IP或网段地址 .. ..

</Directory>

虚拟机Server:

1.建立目录

# mkdir /var/www/myweb/private

2.写入网页文件

# echo woshi private > /var/www/myweb/private/index.html

测试:

虚拟机Server: elinks -dump server0.example.com/private

虚拟机Desktop: elinks -dump server0.example.com/private

3.实现httpd服务访问控制

[[email protected] ~]# vim  /etc/httpd/conf.d/nsd02.conf #可以写在虚拟主机配置文件内

<Directory "/var/www/myweb/private">

Require  ip  127.0.0.1   172.25.0.11  #允许访问的ip

</Directory>

4.重起httpd服务

测试:

虚拟机Server: elinks -dump server0.example.com/private #可以

虚拟机Desktop: elinks -dump server0.example.com/private #失败

案例4:使用自定义Web根目录

SELinux 安全上下文(标签)

? 方式1:参照标准目录,重设新目录的属性

– chcon [-R] --reference=模板目录    新目录

调整 Web 站点 http://server0.example.com 的网页

目录,要求如下:

1)新建目录 /webroot,作为此站点新的网页目录

[[email protected] ~]# mkdir /webroot

[[email protected] ~]# echo woshi webroot > /webroot/index.html

[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf

<VirtualHost *:80>

DocumentRoot /webroot   #注意路径和之前的区别

ServerName server0.example.com

</VirtualHost>

[[email protected] ~]# vim /etc/httpd/conf.d/nsd02.conf

<Directory "/webroot">

Require all granted  #允许所有访问

</Directory>

[[email protected] ~]# ls -Zd /var/www      #查看该路径下文件夹的selinux属性

[[email protected] ~]# ls -Zd /webroot[[email protected] ~]# chcon -R  --reference=/var/www  /webroot/  #把指定文件的安全环境设置为与参考文件相同

[[email protected] ~]# ls -Zd /webroot

[[email protected] ~]# systemctl restart httpd

cp会继承标签值,mv不会继承:  尽量用cp

案例5部署动态Web站点

1.在虚拟机Server上,下载动态页面(Python页面)

预先准备一个动态网页

# wget http://classroom/pub/materials/webinfo.wsgi

# cat  webinfo.wsgi

2.在虚拟机Server上,放入webapp0.example.com默认网页根目录

[[email protected] ~]# vim  /etc/httpd/conf.d/nsd01.conf

[[email protected] ~]# cp  webinfo.wsgi  /var/www/baidu/

[[email protected] ~]# ls  /var/www/baidu/

3.安装Python程序,解析识别 Python页面

[[email protected] ~]# yum -y install mod_wsgi

4.Desktop测试:

# elinks -dump webapp0.example.com/webinfo.wsgi

#  可以看到Python代码

5.方便访问,让客户端访问webapp0.example.com可以直接看到 Python页面

虚拟机Server0上:网页跳转(网页别名)

[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf

<VirtualHost *:80>

DocumentRoot /var/www/baidu

ServerName webapp0.example.com

alias  /  /var/www/baidu/webinfo.wsgi

</VirtualHost>

[[email protected] ~]# systemctl restart httpd

6. 客户端测试访问

[[email protected] ~]# elinks -dump webapp0.example.com

7. 程序 Python 的翻译

虚拟机Server0上:

[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf

<VirtualHost *:80>

DocumentRoot /var/www/baidu

ServerName webapp0.example.com

WsgiScriptAlias  /  /var/www/baidu/webinfo.wsgi

</VirtualHost>

[[email protected] ~]# systemctl restart httpd

8. 客户端测试访问

[[email protected] ~]# elinks -dump webapp0.example.com

9.此webapp0.example.com侦听在端口8909

虚拟机Server0上:

[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf

Listen 8909

<VirtualHost *:8909>

DocumentRoot /var/www/baidu

ServerName webapp0.example.com

WsgiScriptAlias  /  /var/www/baidu/webinfo.wsgi

</VirtualHost>

显示SELinux开放的所有接口

[[email protected] ~]# semanage port -l

[[email protected] ~]# semanage port -l | grep http

[[email protected] ~]# semanage port -a -t http_port_t -p tcp 8909

-a :添加

-t:类型

-p:协议

[[email protected] ~]# systemctl restart httpd

[[email protected] ~]# elinks -dump webapp0.example.com:8909

需要注意的是,原始的独立站点可能出现异常,访问时并不是原始的网页:

[[email protected] ~]# elinks  -dump  http://server0.example.com/

Virtual Site.

原因是一旦启用虚拟站点机制以后:

外部的 DocumentRoot、ServerName 会被忽略

第1个虚拟站点被视为默认站点,若客户机请求的URL不属于任何已知站点,则由第1个站点响应

案例6搭建安全的Web服务

http------>https

1.安装,实现Web加密传输的软件

[[email protected] ~]#  yum -y install mod_ssl

[[email protected] ~]# ls /etc/httpd/conf.d/

autoindex.conf  README    userdir.conf

nsd01.conf      ssl.conf  welcome.conf

2.部署网站数字证书(营业执照)

#说明:该案例并没有介绍证书的制作过程

cd  /etc/pki/tls/certs/

wget  http://classroom/pub/tls/certs/server0.crt

3.部署网站根证书(公安局信息)

cd  /etc/pki/tls/certs/

wget  http://classroom/pub/example-ca.crt

4.部署私钥(用于解密)

cd /etc/pki/tls/private/

wget http://classroom/pub/tls/private/server0.key

5.修改配置文件/etc/httpd/conf.d/ssl.conf

vim /etc/httpd/conf.d/ssl.conf

补充:vim 末行模式   :set   nu   添加行号

59 DocumentRoot "/var/www/html"         #去掉注释

60 ServerName server0.example.com:443   #去掉注释,修改域名

指定网站证书位置及名称

100 SSLCertificateFile  /etc/pki/tls/certs/server0.crt

指定私钥位置及名称

107 SSLCertificateKeyFile /etc/pki/tls/private/server0.key

指定根证书位置及名称

122 SSLCACertificateFile  /etc/pki/tls/certs/example-ca.crt

6.重起httpd服务

7.Desktop验证:

[[email protected] ~]# firefox https://server0.example.com

点击: 我以了解安全的风险

添加例外

确认安全例外

2、配置邮件服务器

? 电子邮件服务器的基本功能

– 为用户提供电子邮箱存储空间(用户名@邮件域名)

– 处理用户发出的邮件 —— 传递给收件服务器

– 处理用户收到的邮件 —— 投递到邮箱

SMTP(发邮件的协议  端口:25)

pop3(收邮件的协议  端口:110)

DNS:classrom.example.com

server0.example.com

虚拟机Server0

1.安装postfix,提供邮件功能的软件

2.建立邮件账户,邮件服务器上本地用户

[[email protected] /]# useradd -s /sbin/nologin yg

[[email protected] /]# useradd -s /sbin/nologin xln

[[email protected] /]# echo 123 | passwd --stdin yg

[[email protected] /]# echo 123 | passwd --stdin xln

3.配置邮件服务器 /etc/postfix/main.cf

[[email protected] /]# vim /etc/postfix/main.cf

99 行:   myorigin = server0.example.com   #默认补全的邮件域名后缀

116 行: inet_interfaces = all                        #允许所有的网络接口  监听接口

164 行: mydestination = server0.example.com     #判断为本域邮件

myhostname   #本服务器主机名称

relayhost    #目标邮件服务器

4.重起postfix服务

[[email protected] /]# systemctl restart postfix

测试:

使用mail命令发信/收信

? mail 发信操作

mail  -s  '邮件标题'   -r  发件人    收件人

非交互式使用:

echo abc | mail -s 'first' -r

? mail 收信操作

mail  [-u 用户名]

[[email protected] /]# mail  -s  'test01'   -r   yg   xln

AAAAAAAAAAAAAA

BBBBBBBBBBBBBB

.

EOT

[[email protected] /]# mail  -u   xln

Heirloom Mail version 12.5 7/5/10.  Type ? for help.

"/var/mail/xln": 1 message 1 new

>N  1 [email protected]  Tue Dec  5 14:18  19/598

& 1

nullclient邮件服务(邮件空客户端)

? nullclient,空客户端

– 不提供任何邮箱账号,因此不需要投递邮件

– 但是可以为用户代发邮件

1.把Desktop配置成邮件服务器

[[email protected] ~]# lab smtp-nullclient setup #预先准备的脚本程序

2.配置Server为邮件空客户端

[[email protected] /]# vim  /etc/postfix/main.cf

– 所发出的邮件显示来自于 desktop0.example.com

99行:    myorigin = desktop0.example.com

116行:  inet_interfaces = localhost

164行:  mydestination =

317行:  relayhost = [172.25.0.10]      #将邮件移交给那台服务器

3.重起postfix服务

[[email protected] /]#  systemctl restart postfix

验证:

在Server上发一封邮件,给本地的Student

[[email protected] /]# mail -s 'test02' -r  yg  student

abc

.

EOT

到Desktop:最终由Desktop上的student收到

[[email protected] /]# mail -u student

inet_interfaces = loopback-only  //仅本机

mynetworks = 127.0.0.0/8 [::1]/128  //信任网络

local_transport = error:local delivery disabled  //返回错误信息给客户端

原文地址:http://blog.51cto.com/13452945/2061320

时间: 2024-10-21 20:38:45

Linux Engineer学习------WEB/Postfix的相关文章

Linux Engineer学习------Samba

实验环境: 修改两台虚拟机防火墙默认区域为trusted: [[email protected] ~]# firewall-cmd --set-default-zone=trusted [[email protected] ~]# firewall-cmd --set-default-zone=trusted 1.samba 1.1简述 Samba共享服务,跨平台的共享(Windows与Linux) – 用途:为客户机提供共享使用的文件夹 – 协议:SMB(TCP 139).CIFS(TCP 4

Linux Engineer学习------NFS

实验环境:修改两台虚拟机防火墙默认区域为trusted [[email protected] ~]# firewall-cmd --set-default-zone=trusted [[email protected] ~]# firewall-cmd --set-default-zone=trusted 1.NFS共享服务(Linux与Linux) 1.1普通NFS服务 ? Network File System,网络文件系统 – 用途:为客户机提供共享使用的文件夹 – 协议:NFS(TCP/

Linux Engineer学习------Mariadb入门

1.MariaDB数据库 database:数据库 什么是数据库 DB,数据库:一批数据的集合,主流的数据库多用来存放关系型表格数据 1.1虚拟机Server:安装MariaDB数据库 [[email protected] ~]# yum -y install mariadb-server MariaDB数据库 ,端口:3306 1.2启动数据库服务 [[email protected] ~]# systemctl restart mariadb [[email protected] ~]# s

Linux Engineer学习------ISCSI

实验环境:修改两台虚拟机防火墙默认区域为trusted [[email protected] ~]# firewall-cmd --set-default-zone=trusted [[email protected] ~]# firewall-cmd --set-default-zone=trusted 1.parted 划分分区的指令:parted (专门做大空间划分 2T) GPT: 突破了4个主分区限制,可以有很多主分区 1.1交互式分区 [[email protected] ~]# p

谈谈我对Linux系统学习的历程回顾

众所周知,Windows 和Linux 是目前最流行的2个操作系统.Windows系统适合普通用户,它的优势是图形化界面,简单易用,使用起来门槛很低,很容易上手,所以,windows占有了大多数普通用户群体.而Linux 被誉为黑客的操作系统,因其稳定和命令行操作的高效性而广泛用于开发工作,占有绝大多数开发者群体.当然,关于这两大系统的优缺点,这里就不再赘述,我主要想谈谈我的Linux的学习历程参考书籍<Linux就该这么学>和心得体会. Linux初体验 一年前,我还不知道Linux为何物,

Linux 程序设计学习笔记----进程管理与程序开发(下)

转载请注明出处:http://blog.csdn.net/suool/article/details/38419983,谢谢! 进程管理及其控制 创建进程 fork()函数 函数说明具体参见:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html 返回值:Upon successful completion, fork() shall return 0 to the child process and shall re

Linux网络服务08——Postfix邮件系统

 Linux网络服务08--Postfix邮件系统(二) 一.启用SMTP发信认证 1.SMTP发信认证概述 在Postfix邮件系统中,可以使用Cyrus SASL(Cyrus Simple Authentication and Security Layer)简单认证安全层软件来实现基本的SMTP认证机制.Postfix通过调用Cyrus SASL的函数库,使用Cyrus SASL提供的认证服务saslauthd来核对系统账号和密码. 2.配置SMTP发信认证 (1)设置Cyrus SASL函

Linux上部署web服务器并发布web项目

近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一样的新手们有些帮助,有误的地方还请大神们指出 ??!(以下操作都是在虚拟机中进行) 1.选用CentOS6 64位作为服务器系统. (原因:redhat要钱,而CentOS免费:CentOS相比于其它linux系统要成熟.稳定一点:CentOS7操作命令和目录结构发生了一些变化所以选用版本6) 2.

Linux线程学习(二)

一.Linux进程与线程概述 进程与线程 为什么对于大多数合作性任务,多线程比多个独立的进程更优越呢?这是因为,线程共享相同的内存空间.不同的线程可以存取内存中的同一个变量.所以,程序中的所有线程都可以读或写声明过的全局变量.如果曾用fork() 编写过重要代码,就会认识到这个工具的重要性.为什么呢?虽然fork() 允许创建多个进程,但它还会带来以下通信问题:如何让多个进程相互通信,这里每个进程都有各自独立的内存空间.对这个问题没有一个简单的答案.虽然有许多不同种类的本地IPC (进程间通信)