5分钟在虚拟机中搭建Linux开发环境
sinye56 2024-12-11 16:55 9 浏览 0 评论
背景
在使用Windows 10开发的过程之中避免不了使用Linux环境,比如装个数据库、装个docker跑开发环境、比如做一些实验、装一些杂七杂八的软件不影响宿主机环境、甚至仅仅是学习Linux
此时有几个选择
- 买台新电脑装Linux放局域网里面使用
- 虚拟机里面装Linux,虚拟机又有两个选择,Windows10自带的Hyper-V或者Vmware
- 装个Win10的docker,Win10上的docker其实也是基于Linux虚拟机
当然经济划算加上对Vmware最熟悉所以本文选择在Win10上安装Vmware,在Vmware中安装配置Linux虚拟机,具体选择如下:
安装CentOS 7虚拟机
镜像获取
镜像要Minimal的,这种无GUI界面的镜像文件小,占用资源少而且稳定,正符合我们的需求,去CentOS官方镜像列表随便找个镜像站点下载
官方镜像列表:http://isoredirect.centos.org/centos/7/isos/x86_64/
随便找个找个镜像站,比如163的:http://mirrors.163.com/centos/7.9.2009/isos/x86_64/
下载镜像文件,类似于CentOS-7-x86_64-Minimal-2003.iso
安装镜像
打开Vmware,我们选择最简单的安装方式
- 点击创建新的虚拟机 ,选择典型 ,这种模式内存自行给出建议值,待创建好后可自行更改内存大小
- 安装程序光盘映像文件(iso),选择刚刚下载的镜像文件 >
- 点击下一步 ,输入虚拟机名称和位置
- 设置合适的磁盘大小,一般默认就好,不够用后面可以手动扩容
- 点击完成,点击界面上的Install
此时进入了CentOS的图形化安装界面,一会会让你选择INSTALLATION DESTINATION,选择刚才在Vmware分配的硬盘,最后点击右下角的Begin Installation,如下图
安装过程之中你需要创建用户和设置root密码,用户可以不创建,但是root密码必须设置,设置完成后点击右下角Finish configuration
最后点击roboot,稍等一会,输入用户名和密码即可登录
配置CentOS 7
网络配置
主角:网络配置文件 > /etc/sysconfig/network-scripts/ifcfg-ens33
为啥最先说网络,因为接下来的内容都是以网络为基础的,如果网没整好,后面就很麻烦,现在你连自己机器的内网IP都不知道,SSH连接都没办法
- 查看Vmware的网关地址,基于VMnet8,一会要用,本例中是192.168.108.2
- 如果是克隆机需要重新生成一下MAC地址(右键刚才安装的虚拟机 > 设置 > 网络适配器 > 高级 > 点击下方生成重新生成MAC地址),因为物理地址不能一样,我们是新装的,不用管。
- 修改网络配置文件,修改前最好备份一下
# 进入网络配置目录
cd /etc/sysconfig/network-scripts
# 修改配置文件,你的可能不一样,本例为ifcfg-ens33
vi ifcfg-ens33
# 修改部分如下,没有的就加上,有的就修改,别的不用管
BOOTPROTO=static # 表示是静态IP
ONBOOT=yes # 开机启动
IPADDR=192.168.108.105 # IP地址,根据网关来,变动最后一位即可
GATEWAY=192.168.108.2 # 网关地址,重要!设置错误不能上网
NETMASK=255.255.255.0 # 掩码
DNS1=192.168.108.2 # DNS设置成和网关一样说明用宿主机的DNS设置
DNS2=8.8.8.8 # 备用DNS
- 重启使配置生效
service network restart
- 最后ping一下百度,看看生效没,如下回显表示成功
[root@192 ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=128 time=38.9 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=2 ttl=128 time=38.8 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=3 ttl=128 time=39.2 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=4 ttl=128 time=39.1 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=5 ttl=128 time=38.8 ms
最后贴一份网络参数的解释
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet #网卡类型(通常是Ethemet以太网)
PROXY_METHOD=none #代理方式:为关闭状态
BROWSER_ONLY=no #只是浏览器:否
BOOTPROTO=static #网卡的引导协议【static:静态IP dhcp:动态IP none:不指定,不指定容易出现各种各样的网络受限】
DEFROUTE=yes #默认路由
IPV4_FAILURE_FATAL=no #是否开启IPV4致命错误检测
IPV6INIT=yes #IPV6是否自动初始化:是(现在还未用到IPV6,不会有任何影响)
IPV6_AUTOCONF=yes #IPV6是否自动配置:是(现在还未用到IPV6,不会有任何影响)
IPV6_DEFROUTE=yes #IPV6是否可以为默认路由:是(现在还未用到IPV6,不会有任何影响)
IPV6_FAILURE_FATAL=no #是否开启IPV6致命错误检测
IPV6_ADDR_GEN_MODE=stable-privacy #IPV6地址生成模型
NAME=ens33 #网卡物理设备名称
UUID=ab60d501-535b-49f5-a76b-3336a4120f64#通用唯一识别码,每一个网卡都会有,不能重复,否则两台linux机器只有一台可上网
DEVICE=ens33 #网卡设备名称,必须和‘NAME’值一样
ONBOOT=yes #是否开机启动,要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes`
IPADDR=192.168.108.105 # 本机IP
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.108.2 #默认网关
DNS1=8.8.8.8
DNS2=8.8.8.5
[root@localhost network-scripts]# service network restart #重启网卡
Restarting network (via systemctl): [ 确定 ]
注意点
上面的网关地址192.168.108.2是基于VMnet8,那我们看看VMnet8这块网卡在宿主机中的地址:192.168.108.1
其实上面的配置中,网关地址你配置成192.168.108.1和192.168.108.2都可以,那这两个有什么区别?
经过我的测试,192.168.108.1不仅仅是一个网关的角色,它还能代表宿主机(在虚拟机环境中),比如宿主机跑了一个代理在1080端口,那么虚拟机在虚拟机中telnet 192.168.108.1 1080端口是通的,而telnet 192.168.108.2 1080端口不通,要设置代理必须指定为:192.168.108.1 1080,所以192.168.108.2仅仅是一个网关,不能代表宿主机。
代理配置
有时候有代理的需求,比如下载一个很慢的软件,可以设置使用宿主机的代理,前提是宿主机已经有代理了。
- 全局代理配置,没用用户密码就不需要username:password@这一串
#打开profile文件
vi /etc/profile
http_proxy=http://username:password@proxy_ip:port
https_proxy=http://username:password@proxy_ip:port
ftp_proxy=http://username:password@proxy_ip:port
export http_proxy
export https_proxy
export ftp_proxy
# 使代理生效
source /etc/profile
# 测试是否生效(有返回为生效)
curl www.google.com
- 取消全局代理
# 打开profile文件
vi /etc/profile
# 去掉上面的配置
# 使生效
source /etc/profile
# unset 一下
unset http_proxy
unset https_proxy
unset ftp_proxy
# 测试是否生效(无返回为生效)
curl www.google.com
SSH配置
主角:SSH配置文件 > /etc/ssh/sshd_config`
SSH修改以下几个地方,第一个是允许root用户登录
UseDNS no
修改完成后保存退出重启SSH服务
service sshd restart
在宿主机上telnet 192.168.137.129 22如果端口通,IP即上一步骤设置的IPADDR字段,即可用SSH工具连接
安装Vmware Tools
Vmware Tools可以允许和宿主机文件共享,具体可参考https://docs.vmware.com/cn/VMware-vSphere/6.0/com.vmware.vsphere.html.hostclient.doc/GUID-28C39A00-743B-4222-B697-6632E94A8E72.html
为什么要放到最后来安装,是因为安装的过程需要一些依赖必须联网之后才能安装
- 先添加一个共享文件夹用于验证VMware Tools是否安装成功,步骤:选中虚拟机 > 右键 > 设置 > 虚拟机设置 > 选项 Tab > 共享文件夹 > 添加 ,随便选择一个文件夹添加,最后点击确认即可
- 在虚拟机下面点击安装Tools,或者点击顶部虚拟机 > 安装VMware Tools
- 安装依赖
yum install -y perl
yum install -y net-tools
yum install -y gcc
yum install -y kernel*
- 执行如下命令
# 挂载cdrom
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
# 复制并解压
cd /mnt/cdrom
cp VMwareTools-10.3.10-13959562.tar.gz /tmp
cd /tmp && tar zxvf VMwareTools-10.3.10-13959562.tar.gz
# 安装
/tmp/vmware-tools-distrib/vmware-install.pl
- 安装过程之中一路回车使用默认选项即可
- 输入df -h如果看到类似如下回显则成功
.host:/ 1.9T 1.4T 473G 75% /mnt/hgfs
或者直接ls /mnt/hgfs/看看是否有最开始设置的文件夹即可!
可能出现的问题
yum groupinstall "Perl Support"
可能的原因是kernel版本不一致的问题,检查一下本机kernel版本:uname -r,再看一下安装的kernel相关组件是否和本机的kernel版本不一致:rpm -qa|grep kernel,对比一下,找到不一致的remove掉:yum remove XXXXX,最后重新安装kernel相关组件:yum install -y kernel*
参考:https://blog.csdn.net/u012820996/article/details/81463535、https://blog.csdn.net/ljunjie82/article/details/48895939
设置系统时间
# 覆盖系统时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 更新系统硬件时间
hwclock
安装常用软件
安装之前先更新一下软件库
yum -y update
yum -y remove epel-release
yum -y install epel-release
iptables
CentOS 7 默认的防火墙是firewall,对于喜欢iptables的老铁可以直接更换成iptables
service iptables status # 先检查是否安装了iptables
yum install -y iptables # 安装iptables
yum update iptables # 升级iptables
yum install -y iptables-services # 安装iptables-services (CentOS 7)
systemctl stop firewalld.service # 停止firewall
systemctl disable firewalld.service # 禁止firewall开机启动
firewall-cmd --state # 查看默认防火墙状态(关闭后显示not running,开启后显示running)
systemctl mask firewalld # 禁用firewalld服务
#规则层级
iptables -P INPUT ACCEPT # 先允许所有,不然有可能会清除后断开连接,无法再连接
iptables -F # 清空所有默认规则
iptables -X # 清空所有自定义规则
iptables -Z # 所有计数器归0
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许本机入站 否则无法联网
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许本机出站 否则无法联网
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#iptables层级
service iptables save
systemctl enable iptables.service # 注册iptables服务 #相当于以前的chkconfig iptables on
systemctl start iptables.service # 开启服务
systemctl status iptables.service # 查看状态
docker
大家对docker肯定是不陌生的,如果还不知道docker的话,可以看之前的文章:都9102年了,还没听过docker?5分钟带你了解docker的前世今生!、史上最全(全平台)docker安装方法!
一键安装
懒人必备官方提供的一键安装脚本:wget -qO- https://get.docker.com/ | bash
标准版
#!/bin/bash
# remove old version
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# remove all docker data
sudo rm -rf /var/lib/docker
# preinstall utils
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# add repository
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# make cache
sudo yum makecache fast
# install the latest stable version of docker
sudo yum install -y docker-ce
# start deamon and enable auto start when power on
sudo systemctl start docker
sudo systemctl enable docker
# add current user
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker
国内镜像版
#!/bin/bash
# 移除掉旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 删除所有旧的数据
sudo rm -rf /var/lib/docker
# 安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加源,使用了阿里云镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置缓存
sudo yum makecache fast
# 安装最新稳定版本的docker
sudo yum install -y docker-ce
# 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
# 启动docker引擎并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker
# 配置当前用户对docker的执行权限
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker
注意:国内访问docker太慢,一般会配置加速器,此处配置的加速器是163的加速器:http://hub-mirror.c.163.com,也可以配置阿里云的加速器。
dockerveth
查看docker容器与网卡的对应关系
rm -rf /usr/local/bin/dockerveth
curl -o /usr/local/bin/dockerveth https://raw.githubusercontent.com/micahculpepper/dockerveth/master/dockerveth.sh
chmod +x /usr/local/bin/dockerveth
Java
这个就不说了,Java环境必备
# 安装java
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel which
# 环境变量设置
cat > /etc/profile.d/java8.sh <<EOF
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile.d/java8.sh
fail2ban
多次SSH登录失败就封禁IP,避免SSH被爆破
yum -y install fail2ban
echo 'fail2ban install complete............'
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
echo 'conf file copy complete.............'
sed -i '/^\[sshd\]/a enabled = true' /etc/fail2ban/jail.local
echo 'sshd has enabled.....'
systemctl restart fail2ban.service
echo 'fail2ban has restart...'
systemctl enable fail2ban.service
echo 'fail2ban has added auto started...'
echo '=========================fail2ban sshd status==============================='
sleep 4
fail2ban-client status sshd
常用小工具
# zip压缩
hash zip 2>/dev/null || {
yum -y install zip
}
# 解压
hash unzip 2>/dev/null || {
yum -y install unzip
}
# GIT
hash git 2>/dev/null || {
yum -y install git
}
# ifconfig命令
hash ifconfig 2>/dev/null || {
yum -y install net-tools
}
# telnet命令
hash telnet 2>/dev/null || {
yum -y install telnet-server
yum -y install telnet
}
# wget命令
hash wget 2>/dev/null || {
yum -y install wget
}
BBR
bbr是谷歌出品的解决TCP拥堵一定程度上提升网速的算法
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
参考
相关推荐
- linux 查看当前应用内存状况,以及内存参数含义
-
1、查看进程号ps-ef|greptomcat2、查看当前内存分配,200ms打印一次jstat-gc进程号2001jstat-gc344802001S0CS1C...
- 如何显示 Linux 系统上的可用内存?这几个命令很好用!
-
在Linux系统中,了解可用内存是优化系统性能、故障排查以及资源管理的重要一环。本文将详细介绍如何在Linux系统上显示可用内存,包括多种方法和工具的使用。在讨论可用内存之前,我们需要了解一些...
- Linux 下查看内存使用情况方法总结
-
Q:我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢?在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内...
- 2、linux命令-用户管理
-
linux命令-用户管理用户切换[root@eric~]#sueric#切换到用户eric[eric@ericroot]$[eric@ericroot]$su#切换到rootPas...
- Centos 7 进入单用户模式详解
-
1、开机在启动菜单按e进入编辑模式找到linux16行,在最后添加init=/bin/sh编辑完后,按ctrl+x退出2、进单用户模式后,使用passwd修改密码,提示以下错误:passwd:Aut...
- 每日一个Linux命令解析——newusers
-
newusers:在Linux系统中,newusers是一个用于批量创建用户的命令。它从一个文件中读取多行用户信息,每行描述一个用户的详细信息,并根据这些信息创建多个用户或对现有用户进行批量修改。一...
- openEuler操作系统管理员指南:管理用户与用户组
-
在Linux中,每个普通用户都有一个账户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义,其中最重要的是管理员账户,默认用户名是root。同时Linux也...
- Linux用户管理
-
1、用户信息文件/etc/passwdroot:x:0:0:root:/root:/bin/bash第一列:用户名第二列:密码位第三列:用户ID0超级用户UID。如果用户UID...
- centos7基础-用户、组、权限管理
-
用户和组(1)用户、组、家目录的概念linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号。组类似于角色,系统可以通过组对有共性的用户进行统一管理。每个用户...
- LINUX基础 ----------组及用户的概念
-
在Linux中,用户和组都是非常重要的概念,可以控制文件访问权限和资源的管理。用户是标识一个进程、应用程序或系统管理员的账号,Linux中每个用户用一个用户ID(UID)来标识。对于一个...
- 从零入门Linux(四)用户与权限管理
-
在Linux系统中,用户和权限管理是系统安全的重要组成部分。通过合理配置用户和权限,可以确保系统的安全性和资源的合理分配。以下是一些与用户和权限管理相关的常用命令和概念。1.用户管理1.1添加...
- 如何在 Linux 中管理用户?
-
在Linux系统中,用户是系统资源的主要使用者,每个用户都有一个唯一的标识符(用户ID)。为了更好地组织和管理用户,Linux还引入了用户组的概念。用户组是用户的集合,有助于更有效地分配权限和资...
- 在 Linux 中将用户添加到特定组的四种方法
-
在Linux多用户操作系统中,用户组管理是系统安全架构的基石。通过合理的组权限分配,管理员可以实现:精确控制文件访问权限(chmod775project/)简化批量用户权限管理(setfacl-...
- 我不是网管 - 如何在Ubuntu Linux下创建sudo用户
-
Sudo用户是Linux系统的普通用户,具有一定的管理权限,可以对系统执行管理任务。在Linux中,root是超级用户,拥有完全的管理权限,但不建议将root凭证授予其他用户或作为r...
- Linux创建普通用户,为密钥方式登录做准备
-
Hi,我是聪慧苹果8,就是江湖上人见人爱、花见花开,土到掉榨的Linux爱好者,一起学习吧!上一篇关于SSH安全加固的文字,有网友点评通过密钥登录更加安全,先创建一个普通用户,拒绝直接使用密码登录,这...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)