在使用Windows 10開發的過程之中避免不了使用Linux環境,比如裝個資料庫、裝個docker跑開發環境、比如做一些實驗、裝一些雜七雜八的軟體不影響宿主機環境、甚至僅僅是學習Linux
此時有幾個選擇
買臺新電腦裝Linux放區域網裡面使用
虛擬機裡面裝Linux,虛擬機又有兩個選擇,Windows10自帶的Hyper-V或者Vmware
裝個Win10的docker,Win10上的docker其實也是基於Linux虛擬機
當然經濟划算加上對Vmware最熟悉所以本文選擇在Win10上安裝Vmware,在Vmware中安裝配置Linux虛擬機,具體選擇如下:
宿主機系統:Windows10 19042.685
VMware:VMware® Workstation 15 Pro,安裝可參考:https://www.cnblogs.com/mr-xiong/p/12468280.html
Linux發行版:CentOS 7
安裝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配置文件 > /etc/ssh/sshd_config`
SSH修改以下幾個地方,第一個是允許root用戶登錄
允許root用戶登錄PermitRootLogin yes
關閉GSSAPI和DNS,這可能會導致SSH登錄緩慢,參考:http://blog.useasp.net/archive/2014/05/19/solved-the-problem-of-ssh-client-such-as-putty-remote-login-linux-very-slowly.aspxGSSAPIAuthentication no
UseDNS no
修改完成後保存退出重啟SSH服務
service sshd restart
在宿主機上telnet 192.168.137.129 22如果埠通,IP即上一步驟設置的IPADDR欄位,即可用SSH工具連接
安裝Vmware ToolsVmware 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/看看是否有最開始設置的文件夾即可!
可能出現的問題如果出現bash:./vmware-install.pl :/usr/bin/perl:bad interpreter:No such file or directory.現象,需要安裝Perl支持
yum groupinstall "Perl Support"
The path "" is not a valid path to the 3.8.13-44.1.1.el6uek.x86_64 kernel
可能的原因是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
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的話,可以看之前的文章:都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
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
多次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是谷歌出品的解決TCP擁堵一定程度上提升網速的算法
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
參考VMware Workstation 15中文破解版 下載與安裝(附密鑰):https://www.cnblogs.com/mr-xiong/p/12468280.html
CentOS Mirrors List
SSH客戶端(如PuTTY)ssh遠程登錄Linux非常慢的解決方法
VMware Tools 簡介
Linux安裝Vmware-tools步驟(命令行)+The path is not valid path to...排錯
安裝vmware-tools遇The path "" is not a valid path to the 3.8.13-44.1.1.el6uek.x86_64 kernel問題解決