一、搭建虚拟机
本次使用VMARE进行虚拟环境的搭建,首先要下载需要的操作系统镜像文件,该项目中使用的是Centos7(当时因为网络原因选择了最小的mini版,很多linux系统自带的命令和依赖都没有,如果是第一接触,建议选择完整一点的镜像)。
步骤1:点击【创建虚拟机】,选择自定义。

步骤2:根据服务器选择硬件兼容的版本

步骤3:选择稍后安装操作系统。

- 稍后安装操作系统
- 灵活规划:当你还未确定要安装哪种操作系统,或者需要先对虚拟机进行一些特定配置(如调整硬件参数、安装特定驱动等)后再安装操作系统时,这种方式非常有用。
- 多系统测试:如果你需要在同一台物理机上创建多个不同操作系统的虚拟机进行测试、对比,选择稍后安装操作系统可以更灵活地安排每个虚拟机的安装时间和顺序。
- 安装程序光盘映像文件
- 快速部署:当你已经明确要安装的操作系统,并且希望尽快完成虚拟机的创建和操作系统的安装,使用这种方式可以节省时间,一步到位完成虚拟机和操作系统的部署。
- 自动化安装:对于一些支持自动化安装的操作系统,通过提供相应的安装程序光盘映像文件,可以实现无人值守的自动安装,提高部署效率。
步骤4:选择安装的操作系统

步骤5:命名虚拟机并选择虚拟机安装的位置。

步骤6:处理器设置2(如果担心不够可以设大一点)

步骤7:内存设置

步骤8:选择NAT网络连接方式。

桥接模式
- 原理:桥接模式就如同在物理网络中添加了一台新的计算机,虚拟机通过虚拟网桥与宿主机的物理网卡相连,直接接入到宿主机所在的局域网中。虚拟机可以被看作是局域网中的一台独立设备,拥有自己独立的 IP 地址,与宿主机处于同等地位。
- 通信特点:虚拟机可以与局域网内的其他设备直接通信,包括访问局域网内的服务器、共享资源等。同时,外部网络设备也可以直接访问虚拟机。
- 适用场景:当你需要将虚拟机作为局域网中的一台独立设备使用,与其他设备进行直接通信时,桥接模式是一个不错的选择。例如,在开发和测试网络应用程序时,需要让虚拟机与局域网内的其他服务器进行交互。
- 示意图
+----------------+ +----------------+ +----------------+
| 物理网络设备 | <----> | 宿主机物理网卡 | <----> | 虚拟机虚拟网卡 |
+----------------+ +----------------+ +----------------+
NAT 模式
- 原理:NAT(Network Address Translation,网络地址转换)模式下,虚拟机通过宿主机的 NAT 服务访问外部网络。虚拟机使用的 IP 地址是由虚拟机软件(如 VMware Workstation)创建的虚拟网络分配的,这个虚拟网络与宿主机所在的物理网络是隔离的。当虚拟机访问外部网络时,NAT 服务会将虚拟机的 IP 地址转换为宿主机的 IP 地址,从而实现与外部网络的通信。
- 通信特点:虚拟机可以访问外部网络,但外部网络设备无法直接访问虚拟机。因为外部网络只能看到宿主机的 IP 地址,而看不到虚拟机的 IP 地址。
- 适用场景:当你只需要让虚拟机访问外部网络,而不需要外部网络设备直接访问虚拟机时,NAT 模式是比较合适的选择。例如,在虚拟机中进行普通的上网浏览、软件下载等操作。
- 示意图
+----------------+ +----------------+ +----------------+
| 外部网络 | <----> | 宿主机物理网卡 | <----> | 虚拟机虚拟网卡 |
| | | (NAT服务) | | |
+----------------+ +----------------+ +----------------+
仅主机模式
- 原理:仅主机模式下,虚拟机只能与宿主机进行通信,与外部网络完全隔离。虚拟机和宿主机通过虚拟机软件创建的虚拟网卡进行连接,形成一个独立的虚拟网络。
- 通信特点:虚拟机可以访问宿主机,宿主机也可以访问虚拟机,但虚拟机无法访问外部网络。这种模式提供了一个相对安全的环境,适合进行一些对网络安全性要求较高的操作。
- 适用场景:当你需要在虚拟机中进行一些与外部网络无关的开发、测试工作,或者需要在虚拟机和宿主机之间进行数据交换和共享时,仅主机模式是一个很好的选择。例如,在虚拟机中开发一些单机应用程序,或者进行数据备份和恢复操作。
- 示意图
+----------------+ +----------------+
| 宿主机物理网卡 | <----> | 虚拟机虚拟网卡 |
+----------------+ +----------------+
步骤9:选择I/O控制器类型

-
- LSI Logic 并行:是一种较早的虚拟 SCSI 控制器类型,兼容性较好,适用于多种操作系统。例如,在 Windows 2000 Server 系统中,如果要使用 MSCS(Microsoft Server Cluster Service),通常会选择 LSI Logic 并行控制器。
- LSI Logic SAS:从 ESXi 4.0 和虚拟硬件版本 7 开始可用。它无需安装额外驱动程序即可被大多数操作系统识别,适用于几乎所有没有大量 I/O 要求的工作负载,也是 Windows 2008 默认的 SCSI 控制器类型,并且是支持 Windows 2008 集群的必要条件之一,因为它支持 SCSI - 3 Persistent Reservation 功能。
步骤10:选择磁盘类型

IDE(Integrated Drive Electronics)
- 特点:
- 历史悠久:IDE 是一种较为传统的 I/O 控制器类型,在早期的计算机系统中广泛使用。它是一种并行接口标准,数据传输通过并行线路进行。
- 兼容性好:由于其历史较长,大多数操作系统和虚拟机软件都对 IDE 控制器提供了良好的支持。这使得使用 IDE 控制器的虚拟机能够兼容各种操作系统,尤其适合运行一些较旧的操作系统,如 Windows 98、Windows 2000 等。
- 性能较低:IDE 控制器的数据传输速率相对较低,采用并行传输方式,存在信号干扰和同步问题,限制了数据传输的速度。随着计算机技术的发展,其性能逐渐无法满足现代应用的需求。
- 适用场景:适用于对性能要求不高、需要兼容旧操作系统或旧应用程序的虚拟机。例如,在进行一些早期软件的测试、旧系统的模拟等场景下,可以选择 IDE 控制器。
SATA(Serial Advanced Technology Attachment)
- 特点:
- 高速串行传输:SATA 是一种串行接口标准,采用串行传输方式,克服了 IDE 并行传输的局限性,能够提供更高的数据传输速率。它的传输速度随着技术的发展不断提高,目前已经发展到了 SATA 3.0,理论传输速率可达 6Gbps。
- 热插拔支持:SATA 接口支持热插拔功能,允许在不关闭虚拟机的情况下连接或断开存储设备,提高了使用的便利性。
- 兼容性良好:大多数现代操作系统和虚拟机软件都对 SATA 控制器提供了很好的支持,能够与各种存储设备(如硬盘、固态硬盘等)兼容。
- 适用场景:适用于大多数普通应用场景的虚拟机,特别是对存储性能有一定要求的场景。例如,在虚拟机中运行数据库、文件服务器等应用时,SATA 控制器可以提供较好的性能表现。
SCSI(Small Computer System Interface)
- 特点:
- 高性能和可靠性:SCSI 是一种高性能的 I/O 接口标准,具有较高的数据传输速率和可靠性。它支持多个设备同时连接,并且可以通过菊花链方式连接多个设备,适用于多设备的应用场景。
- 多命令队列:SCSI 控制器支持多命令队列技术,能够同时处理多个 I/O 请求,提高了系统的并发处理能力。
- 可定制性强:SCSI 接口可以支持多种类型的设备,包括硬盘、磁带机、光驱等,并且可以通过设置不同的参数来满足不同应用的需求。
- 适用场景:适用于对性能和可靠性要求较高的企业级应用场景,如企业级数据库服务器、虚拟化环境中的关键业务系统等。在这些场景中,SCSI 控制器能够提供稳定的性能和可靠的数据传输,确保系统的正常运行。
NVMe(Non-Volatile Memory Express)
- 特点:
- 超高速度:NVMe 是专门为固态硬盘(SSD)设计的一种高性能接口标准,它利用了 SSD 的高速读写特性,能够提供比 SATA 和 SCSI 更高的数据传输速率。NVMe SSD 的读写速度可以达到数 GB 每秒,大大缩短了数据的访问时间。
- 低延迟:NVMe 协议优化了 I/O 指令集,减少了 I/O 操作的延迟,提高了系统的响应速度。这对于对延迟敏感的应用,如实时数据分析、人工智能等具有重要意义。
- 多队列支持:NVMe 支持多队列技术,允许主机同时发起多个 I/O 请求,进一步提高了系统的并发处理能力。
- 适用场景:适用于对存储性能要求极高的场景,如大数据分析、人工智能训练、高性能计算等。在这些场景中,NVMe 控制器能够充分发挥 SSD 的性能优势,提高系统的整体性能。
步骤11:选择虚拟磁盘
步骤12:磁盘大小根据需要设置。

管理便捷性
- 单个文件:虚拟磁盘以单个文件的形式存在,便于管理。例如在迁移虚拟机时,只需复制或移动这一个文件即可,无需担心文件分散导致遗漏或混乱,备份操作也相对简单,只需对该文件进行备份。
- 多个文件:虚拟磁盘被分割成多个文件,管理起来相对复杂。迁移时需要确保所有相关文件都被正确复制或移动,任何一个文件的缺失都可能导致虚拟磁盘无法正常使用,备份时也需要对多个文件进行操作。
性能表现
- 单个文件:在某些情况下,单个文件的读写性能可能更好。因为操作系统在访问单个连续的文件时,不需要频繁地在多个文件之间切换寻道,减少了寻道时间,提高了数据传输效率。例如,在进行大数据量的顺序读写操作时,单个文件的优势较为明显。
- 多个文件:当虚拟磁盘被分割成多个文件时,在文件系统中分布较为分散,可能会增加磁盘寻道时间,降低读写性能。不过,在一些文件系统对小文件的管理优化较好的情况下,多个文件的性能影响可能并不显著。
磁盘空间利用
- 单个文件:使用单个文件存储虚拟磁盘时,可能会出现磁盘空间碎片化的问题。如果虚拟磁盘文件所在的磁盘分区剩余空间不连续,可能无法为其分配足够的连续空间,导致文件创建失败或需要进行磁盘碎片整理。
- 多个文件:多个文件的存储方式可以更灵活地利用磁盘空间。每个小文件可以分散存储在磁盘的不同位置,只要磁盘总剩余空间足够,就可以正常创建虚拟磁盘,减少了因空间不连续而导致的问题。
容量扩展性
- 单个文件:对于一些文件系统,单个文件的大小可能会受到限制。如果需要创建大容量的虚拟磁盘,可能会受到文件系统最大文件大小的制约。例如,某些 FAT32 文件系统最大只支持 4GB 的单个文件。
- 多个文件:多个文件的存储方式不受单个文件大小的限制,可以通过增加文件数量来扩展虚拟磁盘的容量,更适合创建大容量的虚拟磁盘。
在选择虚拟磁盘存储为单个文件还是多个文件时,需要综合考虑管理便捷性、性能需求、磁盘空间利用和容量扩展性等因素。如果注重管理便捷性和读写性能,且磁盘空间较为连续,单个文件可能是更好的选择;如果需要更灵活地利用磁盘空间和扩展容量,多个文件的方式可能更合适。
步骤13:编辑虚拟机设置
步骤14:选择下载好的镜像文件。
步骤15:开启虚拟机,设置语言中文
步骤16:配置磁盘自动分区,开始安装

步骤17:设置系统的ROOT账号密码

二、虚拟机网络搭建
步骤1:点击【编辑】-【虚拟机网络编辑器】-【更改设置】-选择VMnet8

步骤2:点击NAT设置,右侧子网IP、掩码,网关IP后续会用到。

步骤3:修改网络配置文件,在命令行中输入以下指令
cd /etc/sysconfig/network-scripts #进入到网络配置目录
ls #查看目录下文件
vi ifconf-ens33 #修改网络配置文件
步骤4:键盘点击I即刻编辑。

步骤5:添加如下内容
IPADDR=192.168.26.128
#IP地址,范围是192.168.26.1和192.168.26.1 和192.168.26.3>>192.168.26.254 。因为192.168.26.2是网关IP,可用的 IP 地址范围是从网络地址加 1 到广播地址减 1,因此192.168.26.255也不可选用。
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.26.2 #网关IP
#DNS1 和 DNS2:这两个参数分别指定了首选 DNS 服务器和备用 DNS 服务器的 IP 地址。当首选 DNS 服务器无法正常工作时,系统会自动使用备用 DNS 服务器进行域名解析。
DNS1=8.8.8.8
DNS2=114.114.114.114

步骤6:ESC,然后输入:wq,保存并退出。
systemctl restart network #重启网络服务
重启完成后,ping一下是否网络配置成功。

三、使用MobaXterm连接
# 在虚拟机中查看SSH服务状态
systemctl status sshd
# 若未运行,使用以下命令启动
systemctl start sshd
# 设置SSH服务开机自启
systemctl enable sshd
SSH 服务虽然通常会被安装,但防火墙默认会阻止外部对 22 端口的访问,需要手动配置防火墙规则来允许 22 端口的流量通过,或者直接关闭防火墙(不推荐在生产环境中这样做)。
systemctl status firewalld #检查防火墙状态
systemctl start firewalld #如果防火墙没有运行可以启动它
systemctl enable firewalld #设置防火墙开机自启
firewall-cmd --permanent --add-port=22/tcp #设置防火墙22端口开放
四、安装wget命令
前面有提到,我本次安装的镜像是mini版本,缺少很多命令和依赖,为了方便后续部署所以需要配置外部Yum源来下载wget命令。
步骤1:一般情况下,先备份自己本地的Yum源。
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
步骤2:可以使用国内的镜像源,如阿里云、网易等,以此提升下载速度。以阿里云 Yum 源为例:

步骤3:清理并生成 Yum 缓存
sudo yum clean all
sudo yum makecache
(操作这一步的时候,我这里由于80端口没打开报错了,打开就好了)

步骤4:安装wget命令
yum install wget

这样就可以使用wget命令直接安装部署后续要用到的应用以及依赖。如果是内网条件下进行安装或者无法安装wget命令,只能将后续需要的软件、依赖的安装包上传至服务器,会非常麻烦,如果不是没办法还是建议wget安装。
五、安装数据库5.7
步骤1:下载mysql到usr路径下
#从这个链接下载mysql
wget -P /usr http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
步骤2:解压安装
cd /usr/ #进入到该路径
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz #解压该文件
mysql-5.7.36-linux-glibc2.12-x86_64 mysql #重命名为mysql

步骤3:创建data文件夹,给数据目录赋予权限,创建用户组
cd /usr/mysql
mkdir data
chmod -R 777 /usr/mysql/data
groupadd mysql
useradd -g mysql mysql #新创建的用户的名称,也就是要创建一个名为 mysql 的用户。
步骤4:修改mysql配置文件
#备份配置文件
mkdir /etc/mysqlbackup
cp my.cnf mysqlbackup/my.cnf.backup
#修改配置文件
vi /etc/my.cnf
#配置文件如下内容
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/mysql
datadir=/usr/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/mysql/data/mysql.err
pid-file=/usr/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
步骤5: 进入mysql的bin文件夹进行安装
./mysqld --initialize --user=mysql --datadir=/usr/mysql/data/ --basedir=/usr/mysql/

步骤6:查看mysql初始密码,为一串代码
cat /usr/mysql/data/mysql.err

步骤7:启动mysql
/usr/mysql/support-files/mysql.server start
步骤8:设置环境变量
#编辑环境变量
vi /etc/profile
#在文件最后面加入下面配置
export MYSQL_HOME=/usr/mysql
export MYSQL_PATH=${MYSQL_HOME}/bin:${MYSQL_HOME}/lib
export PATH=$PATH:/usr/mysql/bin
#保存后刷新环境变量
source /etc/profile
步骤9:登录mysql修改密码,并开放远程连接
mysql -uroot -pfz=yfhY_=3ll
set password for root@localhost = password('root');
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
步骤10: 设置开机自动启动
#将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/mysql/support-files/mysql.server /etc/init.d/mysqld
#赋予可执行权限
chmod +x /etc/init.d/mysqld
#添加服务
chkconfig --add mysqld
#显示服务列表
chkconfig --list
#查看mysql服务状态
service mysqld status
#开启3306端口
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
步骤11:创建库,导入.sql文件。
CREATE DATABASE ERP; #创建库
SHOW DATABASES; #查看是否创建成功
EXIT; #退出mysql客户端
#将.sql文件上传到服务器/usr/mysql/路径下,然后通过下列命令将表结构导入至ERP库
mysql -u root -p ERP < /usr/mysql/jsh_erp.sql
六、安装JDK环境
wget -P /usr/local --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.rpm"
#安装JDK
sudo rpm -ivh /usr/local/jdk-8u141-linux-x64.rpm
#编辑配置文件
vi /etc/profile
#增加配置文件内容
export JAVA_HOME=/usr/java/jdk1.8.0_141/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
#重新加载配置文件
source /etc/profile
#验证JDK是否成功安装
java -version
七、安装tomacat
wget -p /usr https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.77/bin/apache-tomcat-8.5.77.tar.gz
#解压
tar -zxvf apache-tomcat-8.5.77.tar.gz
#重命名
mv /usr/apache-tomcat-8.5.77 /usr/tomcat
#创建用户组
sudo groupadd tomcat
sudo useradd -s /sbin/nologin -g tomcat -d /usr/tomcat tomcat
#设置权限
sudo chown -R tomcat:tomcat /usr/tomcat
sudo chmod -R 755 /usr/tomcat
#为了能够在任意位置使用catalina.sh等脚本,需要配置环境变量
export CATALINA_HOME=/usr/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
#使配置生效
source /etc/profile
#启动tomcat
/usr/tomcat/bin/startup.sh
#创建新的服务文件,方便设置开机自启动
sudo vi /etc/systemd/system/tomcat.service
#文件中增加
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/usr/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/tomcat
Environment=CATALINA_BASE=/usr/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/usr/tomcat/bin/startup.sh
ExecStop=/usr/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
#重新加载服务并重启tomcat服务
systemctl daemon-reload
systemctl restart tomcat.service
#查看tomcat服务状态
service tomcat status
#启动 Tomcat 服务并设置为开机自启:
systemctl start tomcat
systemctl enable tomcat
八、安装Redis
wget --no-check-certificate https://download.redis.io/releases/redis-6.2.1.tar.gz
#解压
tar -zxvf redis-6.2.1.tar.gz
#重命名
mv /usr/redis-6.2.1 /usr/redis
#redis是c语言编写的,所以我们需要先安装gcc
yum install gcc-c++
#进入redis目录,编译
cd /usr/redis
make
#安装redis
make install
#修改配置文件
cd /usr/redis
vi redis.conf
#如果需要远程连接可以取消保护模式,将protected-mode设置为no,同时将bind注释
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 123321
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名,开始记录日志
logfile "redis.log"
#按指定配置文件开启redis
cd /usr/redis/bin/
./redis-server /usr/redis/redis.conf
#查看redis的状态
ps -ef | grep redis
#关闭redis
cd /usr/redis/bin/
./redis-cli
shutdown
#设置开机自启动
vi /etc/systemd/system/redis.service
#配置文件内容
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/redis/bin/redis-server /usr/redis/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#执行后即可开机自启
systemctl daemon-reload
systemctl enable redis.service
九、安装nginx
#下载依赖
wget -P /usr http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
tar -zxvf pcre-8.37.tar.gz
cd pcre-8.37
./configure
make install
pcre-config --version
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
#下载nginx
wget -P /usr http://nginx.org/download/nginx-1.12.2.tar.gz
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure
make install
#启动nginx
cd /usr/nginx/sbin
./nginx
#查看开放端口号
firewall-cmd --list-all
#设置开放的服务或端口号
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=3000/tcp --permanent
#重启防火墙
firewall-cmd --reload
#配置环境变量
vi /etc/profile
export PATH=“/usr/local/nginx/sbin/:$PATH”
#使配置生效
source /etc/profile
echo $PATH
#创建一个新的服务单元文件 nginx.service
sudo vi /etc/systemd/system/nginx.service
[Unit]
Description=Nginx - high performance web server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#重新加载配置文件
sudo systemctl daemon-reload
#启动 Nginx 服务
systemctl start nginx
# 使服务在开机时自动启动。
systemctl enable nginx
#检查服务状态
systemctl status nginx
十、安装应用
#修改应用配置文件
vi /usr/jshERP-master/jshERP-boot/jshERP/config/application.properties
#启动后端服务(先赋予权限)
cd /usr/jshERP-master/jshERP-boot/jshERP/
chmod 755 stop.sh
./start.sh
1156

被折叠的 条评论
为什么被折叠?



