linux服务器系统管理exam过程记录
- ubuntu server 16.04
- 虚拟机环境:vmware
- 主要内容:server 安装、 双网卡配置(host-only, NAT)、 SSH远程登录、 DNS服务器配置、 Nginx服务器配置、 SSL安全认证、 php文件解析、 tomcat配置、 邮件服务器配置、mysql安装、 防火墙通过端口设置、RAID1磁盘配置。
- 参考:http://10.122.7.154/linuxserver/下的网页内容,具体就先不标注了,都在这里,期末太肝了。
server 16.04 安装
在虚拟机环境下安装一台部署一台 Ubuntu Server 16.04 的服务器: ubuntu server 16.04下载
双网卡配置(host-only, NAT)
题目要求
服务器的网络环境要求:服务器具备两块网卡;一块通过 HOST-ONLY 方式链接(允许主机能 ping 通服务器,并且设置该 IP 地址为 192.168.56.101);一块通过 NAT 方式连接(IP 地址由 VirtualBox 自动分配。保证服务器能链接外网,通过 apt-get 方式安装各类软件)。
操作过程记录
1. 查看网卡ens33:新建服务器时,选择的是NAT方式进行网络连接。使用ifconfig/ip addr查看目前网络地址和对应网卡(ens33)信息,ping www.baidu.com保证NAT方式连接的网卡可以访问外网。
2. 新建网卡ens37:新建仅主机模式对应的VMnetX(自己选择啦,我选的是VMnet1)。VMWare中左上角workstation-编辑-虚拟网络编辑器-更改设置(因为没有管理员权限所以界面呈灰色,不能添加网络,点击更改设置即可)-添加网络(随便点一个),如下图。
3. 新建虚拟网络:添加网络后如下图,可以看到子网地址为192.168.27.0。考试要求的是192.168.56.101,说明网段需要进行更改为192.168.56.0,同时需要注意界面中“将主机虚拟适配器连接到此网络”一定要进行勾选否则会出现网卡失效的情况,如果一直勾选不成功,可能是电脑注册表损坏的原因,最后点击确定就好。
想要查看自己是否配置成功,打开主机的“网络和internet”-“更改适配器选项“界面,如下图,可以看到VMnet0在界面上IP地址为92.168.56.1,可以在这里将IP地址设置为.2 网关设置为.1 。
4.新建网络适配器2(仅主机网卡):VMWare中左上角workstation-虚拟机-设置-添加-网络适配器。添加过后可以看到网络适配器2这个选项,选择自定义(我自己的虚拟机需要重新配置一个VMnet不可以直接点击仅主机模式)中对应仅主机模式的VMnet1,如下图,点击确定等待虚拟机配置即可。
5. host-only网卡ens37配置:上述配置完成后,使用ip addr可以看到第二张网卡,状态DOWN说明还未启用,需要对其进行配置。
6. 16.04操作过程:
安装vim
sudo apt install vim #nano也可以,但习惯vim了
修改interfaces文件内容
sudo cp /etc/network/interfaces /etc/network/interfaces.old #备份
sudo vim /etc/network/interfaces
添加内容
auto ens37
iface ens37 inet static
address 192.168.56.101 #IP地址
netmask 255.255.255.0 #子网掩码
gateway 192.168.56.2 #网关是主机上的网络适配器的IP地址
如下图所示:
然后重启sudo reboot,再使用ip addr就可以看到配置的IP地址了,如下图。
然后在主机上ping 192.168.56.2(网络适配器IP地址),ping 192.168.56.101(虚拟机)都成功,当关闭虚拟机后,无法ping通192.168.56.101,说明配置成功,如下图。
注意:配置完host-only网卡之后,可能会导致默认路由改变,从而无法连接外网,可以先尝试一下ping www.baidu.com,如果无法ping通,需要对路由进行配置。
sudo ip route
查看路由表信息,有两种情况:
(1)第一条default是ens37网卡的网关,还有第二条default是ens33网卡的网关,但是路由开销大,从而优先ens37网卡。(20.04配置时候需要的问题)
sudo ip route del default via 192.168.56.2 dev ens37 #删除第一条默认路由即可,反正后面主要是连外网
(2)只有一条默认路由是ens37网卡网关,这个是配置16.04时候出现的问题。
sudo vim /etc/network/interfaces.d/ens33
#输入
up route add default gw 192.168.126.2
down route del default
#重启
sudo reboot
或者直接设置新的默认路由:
sudo ip route del default via 192.168.56.1 dev ens37
sudo ip route add default via 192.168.126.2 dev ens33
可以看到下方内容,这样就可以连外网,进行接下来的配置了。
SSH远程登录
题目要求
默认安装部署 SSH 服务;提供一个名为 neo 登录用户,登录密码是 matrix;添加该账户用户到 sudoer,具有管理员权限。后续的操作都使用 neo 的用户身份登录后进行。
操作过程记录
- 添加neo用户,并赋予管理员权限
sudo useradd neo
sudo passwd neo #然后输入密码即可
sudo usermod -aG sudo neo
- 查看自己的ssh服务是否开启
sudo apt install ssh #安装ssh服务
sudo systemctl status ssh
sudo systemctl stop ufw #关闭防火墙
- 后续操作图省事,我都是在git bash上登录的,一般来说putty,xshell都可以,记得关闭ufw防火墙。(还有matrix这个密码输入好不顺手啊,123456不香吗)
ssh neo@192.168.126.XXX
DNS服务器配置
题目要求
安装部署一个 Bind9 的 DNS 服务器,实现对域 oasis.com 内的各类主机的域名
解析。实现对 mail.oasis.com,web.oasis.com,ns.oasis.com,race.oasis.com,
shining.oasis.com,game.oasis.com 等域名的正向解析(所有域名对应的 IP 地址都
指向 192.168.56.101)。同时提供对上述域名的反向域名解析功能。
操作过程记录
sudo apt update
sudo apt install bind9
#打开Bind9主配置文件 /etc/bind/named.conf.local
sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak
sudo vim /etc/bind/named.conf.local
#添加内容,配置DNS服务器的时候,文件里的一个标点符号都不要错啊,不然都不成功
#这些配置指定了我们将要使用的两个区域:oasis.com和反向区域 192.168.56.in-addr.arpa
zone "oasis.com" {
type master;
file "/etc/bind/db.oasis.com";
};
zone "56.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.56";
};
#创建正向区域文件,在 /etc/bind/ 目录下创建一个名为 db.oasis.com 的文件
#这个文件指定了oasis.com区域的各种主机名和它们的IP地址
sudo vim /etc/bind/db.oasis.com
#添加以下内容:
;
; BIND data file for oasis.com
;
$TTL 604800
@ IN SOA ns.oasis.com. admin.oasis.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.oasis.com.
@ IN A 192.168.56.101
mail IN A 192.168.56.101
web IN A 192.168.56.101
ns IN A 192.168.56.101
race IN A 192.168.56.101
shining IN A 192.168.56.101
game IN A 192.168.56.101
#创建反向区域文件,在 /etc/bind/ 目录下创建一个名为 db.192.168.56 的文件
#这个文件指定了反向区域的各种IP地址和它们对应的主机名
sudo vim /etc/bind/db.192.168.56
#添加以下内容:
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.oasis.com. admin.oasis.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.oasis.com.
101 IN PTR oasis.com.
#重启bind9服务
sudo systemctl restart bind9
#查看域名解析结果
nslookup race.oasis.com
#结果为52.128.23.153
sudo vim /etc/resolv.conf
#第一行添加ens33网卡的IP地址,谁在前谁优先级高
nameserver 192.168.126.XXX
#保存退出
nslookup race.oasis.com
#结果为192.168.56.101 DNS域名正向解析配置成功
nslookup 192.168.56.101
#结果为oasis.com. DNS域名逆向解析配置成功
Nginx服务器配置
题目要求
安装部署一个 Nginx Web 服务器;要求 Nginx 可以通过域名构建虚拟主机的方
式同时对外提供 http://race.oasis.com, http://shining.oasis.com,
http://game.oasis.com 三个网站的访问。其中访问 http://race.oasis.com 网站返回
的 HTML 代码内容是 “ <h1> race.oasis.com </h1>
” (后面两个网站的内容在其
后的题目中指定);【其实只用单独配置race.oasis.com这个文件,其余两个使用hosts解析域名到192.168.56.101即可,在default配置就好】
操作过程记录
#安装nginx服务器
sudo apt update
sudo apt install nginx
这个时候访问http://192.168.126.XXX应该是默认网页界面
由于三个域名解析IP地址都是192.168.56.101,所以nginx服务器监听的应该是192.168.56.101:80。
sudo vim /etc/nginx/sites-available/default
#修改 listen 80 default_server;
# listen [::]:80 default_server;
listen 192.168.56.101:80 default_server;
listen [::]192.168.56.101:80 default_server;
#重启nginx服务
sudo systemctl restart nginx
创建etc/nginx/sites-availabl:e下创建race.oasis.com,shining.oasis.com,game.oasis.com三个文件分别配置三个网站。
sudo vim /etc/nginx/sites-available/race.oasis.com
#写入内容:
server {
listen 192.168.56.101:80;
server_name race.oasis.com;
root /var/www/race.oasis.com/html;
location / {
index index.html; #默认首页
}
}
sudo ln /etc/nginx/sites-available/race.oasis.com /etc/nginx/sites-enabled/
#然后进入/var/www/race.oasis.com/html下配置index.html文件输入如下内容
<html>
<head>
<title>Welcome to race.oasis.com!</title>
</head>
<body>
<h1> race.oasis.com </h1>
</body>
</html>
#重启nginx服务
sudo systemctl restart nginx
记得去配主机的DNS服务器,地址为192.168.126.XXX,保证nslookup race.oasis.com解析地址为192.168.56.101。
还可以在/windows/system32/drivers/etc/hosts文件中增添一条 IP 域名即可:192.168.56.101 race.oasis.com。记得重启,他才有效。不配置行不行,我不确定,没试过。(有兴趣的话可以自己试一下)
然后出现了这个问题。
突然发现和之前配置的hosts文件冲突了,现在删除重新试一遍。
其余两个想要这类静态网页同理,这里不做演示。
SSL安全认证
题目要求
配置 Nginx 服务器,使得网站支持 443 端口的 https 加密数据传输。并使得可以通过加密协议通道 https://race.oasis.com 来访问该网站。
操作过程记录
- 创建SSL证书, 使用OpenSSL创建自签名密钥和证书对
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
#输出Output,这里填写的内容就是最后证书上的信息
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:XXXXX
Locality Name (eg, city) []:XXXXX
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXXXX
Organizational Unit Name (eg, section) []:Computer Science and Technology
Common Name (e.g. server FQDN or YOUR name) []:192.168.126.XXX
Email Address []:admin@your_domain.com#自己填可用邮箱即可
- 创建的密钥对被放入/etc/ssl下的相应子目录,同时创建Diffie-Hellman组(用于与客户协商完全前向保密),放入/etc/ssl/certs/dhparam.pem中,这一项时间会有点长。
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
- 将nginx配置为使用SSL, 创建指向SSL密钥和证书的配置片段/etc/nginx/snippets。
sudo vim /etc/nginx/snippets/self-signed.conf
#内容修改为如下内容,即将指令设置为我们的证书文件和关联的密钥
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
- 创建具有强加密设置的配置代码段,为Nginx设置一个强大的SSL密码套件,并启用一些有助于确保我们的服务器安全的高级功能。
sudo vim /etc/nginx/snippets/ssl-params.conf
##修改内容
# from https://cipherli.st/
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
- 调整nginx配置以使用SSL
sudo cp /etc/nginx/sites-available/race.oasis.com /etc/nginx/sites-available/race.oasis.com.bak
sudo vim /etc/nginx/sites-available/race.oasis.com
##修改文件内容:
server {
# SSL configuration
listen 192.168.56.101:443 ssl# http2 default_server;
#listen [::]192.168.56.101:443 ssl http2 default_server;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
root /var/www/race.oasis.com/html;
location /{
index index.html;
}
}
server {
listen 192.168.56.101:80 default_server;
server_name race.oasis.com;
return 302 https://$server_name$request_uri;
}
- 调整防火墙,也可以选择直接关闭,并重启nginx服务器。
#查看状态
sudo systemctl status ufw
#关闭防火墙
sudo systemctl stop ufw
#
sudo ufw app list
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
- 如果重启失败,使用sudo systemctl status nginx他会给你报错信息,跟着修改就可以了,或者使用nginx -t,一般都是文件内容的问题,只要内容正确,其他的报错可以先忽略,最后sudo systemctl restart nginx就好了。
8. 高级-继续访问,如下图,https:设置成功。
php文件解析
题目要求
在 Nginx 服务器中安装 PHP FastCGI Process Manager 软件,让服务器实现对
PHP 语言的解析。为 http://shining.oasis.com 网站编写一个 index.php 首页文件。
该文件内容为【这里我没有单独去配置shining.oasis.com文件,直接在default文件里进行修改】
操作过程记录
sudo apt update #要是更新不成功,直接去看路由表信息,大概率是默认路由又变了
sudo apt-get install php-fpm php-mysql
配置php
sudo vim /etc/php/7.0/fpm/php.ini
#修改内容
cgi.fix_pathinfo=0
#重启
sudo systemctl restart php7.0-fpm
在nginx上配置php解析。
sudo vim /etc/nginx/sites-available/default
#修改内容
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
server {
listen 192.168.56.101:80 default_server;
listen [::]192.168.56.101:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;#增加index.php
server_name shining.oasis.com;#增加shining.oasis.com
location / {
try_files $uri $uri/ =404;
}
#增加如下内容
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
#重启nginx
sudo systemctl restart nginx
tomcat配置
题目要求
在服务器上安装部署 Java 开发环境;再部署一个 Tomcat 服务器,端口 8080,
支持 JSP 文件的解析(能打开缺省的 tomcat 首页);在 Nginx 服务器上添加一个对
http://game.oasis.com 的代理访问节点(不直接访问 tomcat 服务器, 而是通过
game.oasis.com 域名访问 Nginx 对外的 80 端口做代理访问内部 tomcat 的 8080 端
口)。
操作过程记录
sudo apt update
sudo apt install default-jdk
sudo apt install axel
##安装tomcat
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
sudo axel https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.89/bin/apache-tomcat-8.5.89.tar.gz
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-8.5.89.tar.gz -C /opt/tomcat --strip-components=1
#更新权限
cd /opt/tomcat
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R g+r conf
sudo chmod g+x conf
sudo chown -R tomcat webapps/ work/ temp/ logs/
#创建systemd 服务文件
sudo update-java-alternatives -l
#output
#java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
sudo vim /etc/systemd/system/tomcat.service
#输入内容
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
#重新加载
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat
#关闭防火墙,或者允许8080端口通过
sudo ufw allow 8080
#最后访问http://game.oasis.com:8080就好了
邮件服务器配置
题目要求
安装部署一个 Postfix 邮件服务器。支持通过 SMTP 协议进行电子邮件发送;通
过命令行邮件客户端工具 mail, 发送一封电子邮件电子邮件给 neo@oasis.com
用户(使用系统默认的邮件存储位置,不要修改。统一把邮件存放在/var/mail
目录下。发送命令为 echo ‘it is only a test’ | mail -s “test eamil” neo@oasis.com);
操作过程记录
sudo apt-get update
sudo apt install mailutils
之后会进入下面这个网页,回车。
然后另一个窗口输入的内容就是你发邮件@后面的后缀名,这里没有要求,自己设置吧。
sudo vim /etc/postfix/main.cf
#进入文件,重点将postfix配置为仅侦听环路接口,即下面这个内容
inet_interfaces = loopback-only
#然后就是指定通过邮件传递传输的与列表,这里没太搞明白,之后学习笔记的时候填坑吧
#增加,我是这么配置,应该没有问题
mydomain=oasis.com
mydestination = $myhostname, localhost.$mydomain, $mydomain, ubuntu, localhost.localdomain, , localhost
#退出
sudo systemctl restart postfix
echo 'it is only a test' | mail -s "test eamil" neo@oasis.com
没有报错后,进入/var/mail文件夹下会发现一个名为neo的文件,打开可以看到如下内容,发件人yiyi@ubuntu,如果在最开始安装那个页面输入oasis.com,操作用户是neo的话就是neo@oasis.com:
mysql安装
题目要求
安装部署一个 Mysql 数据库服务器;修改 root 用户的密码为 oracle;修改服
务器的端口号为 3366; 进入数据库后,创建一个名叫 zion 的数据库;可以使
用如下命令登录数据库;
mysql -u root -P 3366 -h localhost -D zion -poracle
操作过程记录
这里注意SQL语句别忘记最后的;就好。
sudo apt install mysql-server
#配置root用户密码,但他好像刚开始就可以自动设置,所以没有弹框的就用下面这个设置就好
mysql -u root
ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'oracle';
exit
#修改端口号为3366
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#修改port = 3366
sudo service mysql restart
mysql -u root -P 3366 -h localhost -poracle
CREATE DATABASE zion;
exit
#之后就可以使用上述命令登录数据库了
mysql -u root -P 3366 -h localhost -D zion -poracle
防火墙通过端口设置
题目要求
启动 UFW 防火墙程序;配置防火墙访问规则,只允许 22, 25, 80, 443,
110, 143 端口对外可以访问。
操作过程记录
#查看防火墙状态,允许访问的端口
sudo ufw status
#关闭则打开
sudo ufw enable
#允许端口访问
sudo ufw allow 22
sudo ufw allow 25
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 110
sudo ufw allow 143
#再查看应该就有相应内容了
RAID1磁盘配置
题目要求
在虚拟机上添加两块 100M 的新磁盘,把两个新磁盘做成 RAID1,实现对
数据的冗余备份存储。RAID 磁盘被 mount 到 /mnt/md0 节点下。
操作过程记录
- 创建磁盘,关闭虚拟机-编辑虚拟机设置-添加-硬盘-一直下一步-最大磁盘大小0.09766GB
- 打开虚拟机,进行如下配置:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
#output
NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 20G disk
├─sda1 16G ext4 part /
├─sda2 1K part
└─sda5 4G swap part [SWAP]
sdb 100M disk
sdc 100M disk
sr0 1024M rom
#看到新建磁盘为sdb sdc,创建一个新的RAID设备并将两个新磁盘添加到RAID中。将命令中的设备名称替换为sdb sdc,这将创建一个名为 /dev/md0 的RAID设备,使用两个磁盘(/dev/sdb和/dev/sdc)并设置RAID级别为1。
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
#进度监视,当进度达到100%并且RAID设备处于活动状态时,表示RAID设备创建成功。
cat /proc/mdstat
#使用以下命令格式化RAID设备,这将使用ext4文件系统对RAID设备进行格式化。
sudo mkfs.ext4 /dev/md0
#创建一个目录用于挂载RAID设备:
sudo mkdir /mnt/md0
#将RAID设备挂载到/mnt/md0目录
sudo mount /dev/md0 /mnt/md0
#使RAID设备在系统启动时自动挂载,需要更新 /etc/fstab 文件
sudo vim /etc/fstab
#文件末尾添加
/dev/md0 /mnt/md0 ext4 defaults 0 0
#完成后,使用以下命令检查挂载状态,看到 /dev/md0 设备已挂载到 /mnt/md0 目录,配置成功。
df -h
结束语
肝了一天写完了,主要是学习笔记的坑还没填完,害怕考完试忘记了,就先写一个总的攻略,内容都是自己做过一遍的,如果报错常去看看/var目录下的各个log或者sudo systemctl status $service,里面一般都有比较详细的报错,上面这些内容让我比较迷惑的还是php那个,为什么单独配置shining.oasis.com这个文件他就不行,一到default里面就成功了,坑先放在这里,希望有人能在评论区里面填,阿里嘎都。
最后,内容且先这样,后面写学习笔记的时候再慢慢更新吧,排版很乱,凑活着看,引用也没有标的特别细致,主要是digitalocean 上的内容,里面一些术语可能不太准确,后面再修改,大家凑活看叭。好了,去写课设了,期末要人命啊!