介绍
本文将搭建如上三台服务器,跟着下面一步步操作,完全可以复现出来,对初学者友好。
前期准备
学习IT必备的软件
软件:
1、VMware Workstation官方下载
2、Xshell+Xftp官方下载
镜像这里使用红帽和Oracle的
镜像文件:
1、rhel-baseos-9.1-x86_64-dvd.iso
2、rhel-baseos-9.1-x86_64-boot.iso
3、OracleLinux-R9-U1-x86_64-boot.iso
下载Redhat镜像
由于商业盈利,要注册账号(后面的操作不会涉及到收费)
登录Redhat开发者网站,并注册账号;最好不要选择学生身份,不然信息填写方面有些麻烦。
然后在红帽发行版下载页面中,下载指定镜像文件:
国外网站,下载确实有点慢...
下载Oracle镜像
此Oracle非彼Oracle,它也有自己的liunx发行版
登录Oracle发行版下载页面中,下载指定镜像文件:
虚拟网卡设置
如果有网络方面的基础并且自己的虚拟网卡配置已经配置好了,那就可以自己定义IP。
进入虚拟网络编辑器
更改设置
选择VMnet8,分别设置NAT和DHCP
这里虚拟出一个网关;注意IP不要设置成VMnet虚拟网卡的IP了
地址分配池,尽量与规划的服务器IP错开,避免产生冲突
此时,如果你的VMware上有现成的虚拟机,可以设置成nat模式,看看能否正确分配IP
一、Web服务器
1、创建虚拟机
这里使用自定义(高级)的方式创建,因为可以精准控制配置信息,建议初学者从这种创建方式开始学习
采用缺省(默认)的兼容性即可
选择下载好的红帽的boot镜像文件
版本,如果你使用的是最新的软件就选择对应的版本,不然就择高选取
该虚拟机就是模拟的一个服务器,所以标识了一下服务器的型号,这里以R4900G6为例
CPU配置为1颗 * 1核足够,可适当增加
内存1G足够,虚拟机的运行会立即占用物理机的内存,所以谨慎增加
使用NAT模式,通俗地说这种模式可以使虚拟机与物理机互联、也可以使虚拟机与Internet互联
I/O控制类型采用缺省配置即可
磁盘类型采用缺省配置即可
创建新的虚拟磁盘
分配100G的磁盘空间,并选择将虚拟机磁盘存储为单个文件,不要立即分配
指定磁盘文件也采用缺省配置
点进自定义硬件,去掉不需要的硬件,如USB控制器、声卡、打印机(后面需要的话还能添加)
开启此虚拟机
选择第一个
实际生产环境中,一般是采用英语的方式;这里为了方便学习,先就使用简体中文
接下来出现了安装信息摘要,这里简要引导一下
本地化 (由于上一步的语言选择已经缺省配置了)
键盘:汉语
语言:简体中文
时间和日期:亚洲/上海(如果不是这个时区,一定要手动修改)
软件
连接到红帽:这里需要用到事先在Redhat开发者网站注册的账户
这里如果出错,一是检查用户名与密码;二是检查VMnet8配置是否正确
安装源:后面会使用本地软件源的方式,这里不管
(如果想使用在线源的方式下载软件,需要订阅)
软件选择:“最小安装”(提高安全性和稳定性),更贴切实际的生产要求
系统
安装目的地:使用为虚拟机分配的那100G,直接进入在点击左上角的“完成”即可
KDUMP:缺省配置
网络和主机名:设置域名,并手动修改IP
安全配置文件:缺省配置
用户设置
root密码:自定义
创建用户:用户名和密码自定义。实际生产环境中不会给你root账号,所以后面的操作 就模拟普通用户的操作,这里勾选“将此用户设为管理员”
所有摘要完成后,所有感叹号提示消失,自然就能点击开始安装了
安装完成后重启
(重启后,建议此时为虚拟机拍摄一个快照,以防后面操作出错不至于重装系统)
2、初始配置
登录进去使用"ip address"命令可以查看到IP地址
使用Xshell软件连接服务器:先ping一下地址,再使用ssh命令进行登录,"ssh 用户名@IP地址"
- ssh ctod@10.33.90.10
sudo免密:
在命令前加sudo并输入密码可以执行root权限的命令,但输入过一次密码后过一会儿又得再次输入,修改sudoers文件即可解决
- sudo vi /etc/sudoers
注释第107行,并删除第110行的注释(wq!强制写入并退出)
文件编辑的三种模式:
设置DNF本地软件源:
在自己用户目录下,创建一个新目录
- mkdir /home/ctod/dnf
- ls /home/ctod
查看指定目录,看看dnf文件是否成功创建
在物理机打开之前下载好的rhel-baseos-9.1-x86_64-boot.iso镜像文件,电脑会出现一个驱动器,点击去可以看到AppStream和BaseOS,这两个就是部署本地软件源的需要用到的。
这时,你就应该明白为什么dvd要比boot大那么多了
使用Xftp将这两个文件上传到创建的目录里
上传完成后,编辑redhat.repo文件
- sudo vi /etc/yum.repos.d/redhat.repo
shift+g定位到文件末尾,添加如下内容:
[BaseOS] name=BaseOS baseurl=file:///home/ctod/dnf/BaseOS enabled=1 gpgcheck=0 [AppStream] name=AppStream baseurl=file:///home/ctod/dnf/AppStream enabled=1 gpgcheck=0
编辑完成后,安装一个vim看看能否成功
- sudo dnf install vim -y
(-y表示自动确认)
如果报错了,着重检查一下编辑redhat.repo文件是否有误o
3、服务部署
- sudo dnf install httpd (-y)
httpd是apache超文本传输协议服务器的主程序,是一个独立运行的后台进程,他会建立一个处理请求的子进程或线层的池 - sudo systemctl enable --now httpd
开启并运行httpd服务
- systemctl status httpd
查看服务的状态
- sudo firewall-cmd --permanent --add-service=http (或 sudo firewali-cmd --permnanent --add-port=80/tcp)
使防火墙放行http服务 或 80端口
- sudo firewall-cmd --reload
重新加载防火墙
- sudo firewall-cmd --list-services (或 sudo firewall-cmd --list-ports)
查看放行的服务
- sudo touch /var/www/html/index.html
创建web主页文件 - sudo vim /var/www/html/index.html
编辑一下主页文件,然后使用物理机的浏览器访问web服务
此时web服务已经部署完成了。我们知道http的默认端口是80,接下来拓展一下怎么更改缺省端口和资源目录
- sudo setenforce 0
临时关闭SELinx(Linux操作系统的一种安全机制)
sudo vim /etc/httpd/conf/httpd.conf
将监听修改为自己定义的端口号,我这里修改为60080
- apachectl configtest
检查配置
- sudo systemctl restart httpd
重启httpd服务 - sudo firewall-cmd --permanent --add-port=60080/tcp
放行tcp协议的60080端口 - sudo firewall-cmd --reload
重新启动防火墙,此时可以使用新的端口访问网站了
- cat -n /etc/selinux/config
查看SELinux配置文件,“sudo setenforce 0”命令只能临时关闭这种安全机制 - sudo grubby --update-kernel ALL --args selinux=0
禁用SELinux,实际生产环境也一般会禁用的 - sudo reboot
服务器重启中...
再次登录服务器
- getenforce
查看是否开启了SELinux (disable表示已禁用)
- mkdir /home/ctod/html
创建自定义的网站目录(缺省目录) - sudo vim /etc/httpd/conf/httpd.conf
修改httpd主配置文件,更改web服务资源路径
- apachectl configtest
- sudo systemctl restart httpd
- chmod +005 /home/ctod
设置权限 - systemctl status httpd
此时再次访问web站点,由于没有主页文件,所以出现的是红帽测试页面
二、数据库服务器
1、创建虚拟机
镜像文件使用之前下载好的Oracle镜像文件
目前VMware Workstation Pro还不支持OL9,这里选OL8即可
每次创建虚拟机,都要将其安装在一个新的文件夹里,千万不要直接与之前的混合
CPU:1颗 * 1核
内存:1G
Disk:20G 单一磁盘,不立即分配
网卡:NAT模式
其他的采用缺省配置或参考web虚拟机的创建
注意:去掉不需要的硬件(安全性、稳定性)
可以看到Oracle的安装信息再要跟红帽的几乎一模一样,下面列出需要注意的步骤:
因为Oracle是开源、免费的,所以可以直接设置在线软件源,只要后面能联网就能下载软件啦
安装源:https://yum.oracle.com/repo/OracleLinux/OL9/baseos/latest/x86_64/
依然是最小安装
安装目的地同样地选择自动分区
主机名请参考我的,这里我们先不修改IP,在后面使用命令图形化方式进行修改
用户设置就参考之前的,然后就可以安装了
2、初始配置
先试试能不能安装vim软件(请确保网络畅通)
- sudo dnf install vim -y
sudo免密:
- sudo vim /etc/sudoers
numtui工具的使用:
- sudo nmtui
选择第一个选项,然后直接编辑ens160网卡
展示IPv4配置
选择手动(Manual)配置方式
分别添加并配置ip地址、网关,根据提示完成配置
- sudo nmcli connection up ens160
使ens160网卡配置立即生效
此时窗口没有反应,因为IP改变了,只需要要重新使用新的IP登录就可以了
其实使用命令或文件配置的方式配置是更加快捷的(实际当中一般建议使用命令的方式,因为具有更好的容错性),如域名的设置:
- hostname
查看域名 - sudo hostnamectl set-hostname 主机名
命令方式修改域名 - vim /etc/hostname
文件编辑方式修改域名
请确保一、二级域名是和web服务器域名的是一样的
3、服务部署
- sudo dnf install mysql-server (-y)
安装mysqld - sudo systemctl status mysqld
- sudo systemctl enable --now mysqld
启动mysqld服务
需要重启
- sudo reboot
- sudo systemctl status mysqld
- sudo firewall-cmd --permanent --add-service=mysql
放行mysql服务 - sudo firewall-cmd --reload
- sudo firewall-cmd --list-services
- sudo reboot
- sudo mysql_secure_installation
初始配置
密码至少8位
此时mysql基本框架已经部署好了
- mysql -u root -p 进入mysql
使用root账户登录mysql
不要把这个roo跟linux的root搞混了,一个是服务的root用户、另一个是操作系统的root用户
熟悉sql命令操作(有基础的话可以不用做):
show databases; //显示数据库
use mysql; //进入名叫mysql的数据库
show tables; //显示所在数据库的数据表
select * from 表名; //查看指定表的所有内容
create database book; //创建名叫book的数据库
show databases; //查看有没有
use book; //进入book数据库
show tables; //空的
create table os(name char(20),price int); //创建一个叫os的表,并设定属性
describe os; //查看字段属性
insert into os(name,price) values('Unix 设计艺术','120'); //添加记录
insert into os(name,price) values('Linux 内核分析,'80'); //添加记录
select * from os; //查看表内容
select * from os where price > 100; //条件查看
update os set price=118 where name='Unix 设计艺术'; //更新表
select * from os;
exit; //断开mysql服务连接(退出)
- mysql -u root -p
创建普通用户:
- show variables like 'validate_password%';
查看密码设置等级
- set global validate_password.policy=0;
将密码设置等级配置为0(这样就可以创建低强度密码)
- show variables like 'validate_password%';
- create user 'ctod'@'%' identified by 'ctod1234';
创建名为‘ctod’、密码为‘ctod1234’的普通用户,‘%’表示允许该用户远程登录mysql- grant all privileges on book.* to 'ctod'@'%';
将book数据库所有操作权限给cotd用户,并能远程登录操作- exit
- mysql -u ctod -p
用ctod进入mysql,试试操作book数据库- show databases;
- use book;
- show tables;
- select * from os;
- ...
这里推荐四款数据库可视化操作工具:
DBeaver Download | DBeaver Community
Navicat下载 Navicat | 下载 Navicat Premium 14 天免费 Windows、macOS 和 Linux 的试用版
SQLyog下载 Download SQLyog - free - latest version
MySQL-Front下载 Herzlich Willkommen!
三、web服务动态升级
动态网页的“动”,简单地说是指人能够与web进行交互。交互过程中可能会产生数据需要存储,这就需要用到数据库,所以我们利用前面部署好的mysql服务器就可以将web服务器升级为动态的了。
进入web服务器(10.33.90.10)
- sudo dnf install php php-mysqlnd -y
安装php服务与php-mysqlnd插件(用于连接数据库) - sudo systemctl restart httpd
要启动动态网页服务就得重启一下httpd - cd /home/ctod/html
- vim test.php
编写php测试脚本,写入如下内容:
<?php phpinfo(); ?>
使用浏览器访问:10.33.90.10:60080/test.php
此时加载出的是php系统信息就表示PHP没问题
进入DB服务器(10.33.90.11)
创建动态网页服务需要使用的后台数据库
- mysql -u root -p
- create database wordpress;
- grant all privileges on wordpress.* to 'ctod'@'%';
进入web服务器(10.33.90.10)
- rm -rf ~/html/*
删除网页资源目录下的所有文件
-r表示删除包括文件与目录;-f表示提前确定直接执行(强制删除)
~所登用户的目录,这里即表示删除ctod目录下html目录里的所有文件与目录 - sudo dnf install wget -y
wget是用于下载文件的工具 - wget https://cn.wordpress.org/wordpress-latest-zh_CN.zip
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MYSQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个(CMS)来使用。 - sudo dnf install unzip
unzip命令用于解压缩zip文件 - unzip wordpress-latest-zh_CN.zip
- mv wordpress/* ~/html
将刚刚解压出来的所用文件都移至html文件目录下 - cp ~/html/wp-config-sample.php ~/html/wp-config.php
wp-config-sample.php只是配置文件模板,真的配置文件叫wp-config.php,所以得以模板文件复制一个配置文件 - vim ~/html/wp-config.php
编辑如下内容:
设置并安装wordpress
安装完成后,重新访问网页查看
登录WordPress站点后台管理页面(10.33.90.10:60080/wp-admin)
此时还没有权限使用wordpress平台设置网页
- sudo chown -R apache:apache /home/ctod/html
把/home/ctod/html及其目录下得所有文件得所有者设为apache
这样就可以了
四、DNS服务器
1、创建虚拟机
参考web服务器的步骤
注意这次使用dvd镜像
2、初始配置
sudo 免密
- sudo vi /etc/sudoers
本地软件源设置
在安装操作系统的时候使用过一次rhel-baseos-9.1-x86_64-dvd.iso文件,它就相当于光盘。那么在linux操作系统中挂载它的话就可以直接使用里面的文件了。
- mkdir /home/ctod/dnf
创建存放RPM的文件目录 - sudo mount /dev/sr0 /home/ctod/dnf
将光盘文件挂载到dnf目录 - ll dnf
此时能看到光盘里的内容
- df -Th
查看挂载点
永久挂载,不然下次重启系统又要手动挂载
- sudo vi /etc/fstab
在末尾添加以下内容
/dev/sr0 /home/ctod/dnf iso9660 default 0 0
- sudo mount -a
同样的,又是编辑redhat.repo文件
- sudo vi /etc/yum.repos.d/redhat.repo
[BaseOS] name=BaseOS baseurl=file:///home/ctod/dnf/BaseOS enabled=1 gpgcheck=0 [AppStream] name=AppStream baseurl=file:///home/ctod/dnf/AppStream enabled=1 gpgcheck=0
安装vim看看能够成功
3、服务部署
- sudo dnf install bind -y
- sudo vim /etc/named.conf
编辑主配置文件
- sudo vim /etc/named.rfc1912.zones
编辑域配置文件
末尾添加如下内容,建议复制文件上边内容的作为模板然后再修改标记内容
复制一个自己设定的域名文件
- sudo ls -al /var/named/named.localhost
- sudo cp -a /var/named/named.localhost /var/named/ctod3.cn.zone
-a将文件元素也一对一复制,这里是必要的 - sudo ls -al /var/named/
- sudo vim /var/named/ctod3.cn.zone
编辑数据配置文件
- sudo systemctl start named
!如果有报错,一定要认真检查上面编辑的三个文件
- sudo systemctl status named
- sudo systemctl enable named
- sudo firewall-cmd --permanent --add-port=53/tcp
- sudo firewall-cmd --permanent --add-port=53/udp
dns协议要同时使用tcp与udp的53端口
- sudo firewall-cmd --reload
在物理PC里设置vmnet8网卡的DNS服务器地址
此时就可以使用域名代替IP访问个人站点了
当然,传统数据中心不仅仅是上面的那几种服务器,其中还包括存储、APP...,而且会在一台服务器上安装多个服务。现在更多的场景其实已经向着“云”发展了,以后虚拟化将越来越广泛。