环境

CentOS Linux release 7.5.1804

安装docker-machine

base=https://github.com/docker/machine/releases/download/v0.14.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine

docker-machine -v

安装 virtualbox

将ol7_addons(Oracle Linux的源)添加到yum源

cat << EOF | sudo tee /etc/yum.repos.d/ol7_addons.repo
[ol7_addons]
name=Oracle Linux $releasever Add ons (\$basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL7/addons/\$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
EOF
# Verify this manually if you're paranoid like me
sudo rpm --import http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7
sudo yum makecache

安装VirtualBox

yum -y install VirtualBox-5.2
yum -y install kernel-devel kernel-devel-3.10.0-693.el7.x86_64

查看系统内核版本

➜  ~ uname -sr
Linux 3.10.0-862.el7.x86_64

ftp://ftp.riken.jp/Linux/cern/centos/7/updates/x86_64/repoview/kernel-devel.html
下载并安装指定的版本

wget ftp://ftp.riken.jp/Linux/cern/centos/7/updates/x86_64/Packages/kernel-devel-3.10.0-862.el7.x86_64.rpm
yum -y install kernel-devel-3.10.0-862.el7.x86_64.rpm

更新

sudo /sbin/vboxconfig

创建 default machine

创建名为default的machine

docker-machine create --driver virtualbox default

如果提示

Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"

则需要关闭虚拟机,在VMware设置中开启虚拟化
VMware 配置

博客更新地址

环境

CentOS Linux release 7.5.1804

Q

新安装CentOS后,为了方便远程ssh,想设置静态IP,但是在/etc/sysconfig/network-scripts/下面只有ifcfg-lo这张Local Loopback网卡的配置文件,并没有我们想要的enp0s3(不同机器的网卡名不一样,也可能是ens33或其它名字)网卡配置文件,想要配置静态IP根本无从下手。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-lo     ifdown-post      ifup          ifup-plip    ifup-TeamPort
ifdown       ifdown-ppp       ifup-aliases  ifup-plusb   ifup-tunnel
ifdown-bnep  ifdown-routes    ifup-bnep     ifup-post    ifup-wireless
ifdown-eth   ifdown-sit       ifup-eth      ifup-ppp     init.ipv6-global
ifdown-ippp  ifdown-Team      ifup-ippp     ifup-routes  network-functions
ifdown-ipv6  ifdown-TeamPort  ifup-ipv6     ifup-sit     network-functions-ipv6
ifdown-isdn  ifdown-tunnel    ifup-isdn     ifup-Team

A

  • 使用nmcli con show查看网卡的UUID
[root@localhost network-scripts]# nmcli con show
NAME        UUID                                  TYPE      DEVICE  
enp0s3  ad633ea8-e358-255e-a167-6c14742b347d  ethernet  enp0s3 
  • /etc/sysconfig/network-scripts/目录下新建ifcfg-enp0s3(网卡名改成自己机器上的网卡名)
vim ifcfg-enp0s3  # 文件名改为自己的网卡名
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3  # 改为自己的网卡名
UUID=ad633ea8-e358-255e-a167-6c14742b347d  # 改为自己的UUID
DEVICE=enp0s3  # 改为自己的网卡名
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.222  # 改为自己想要的IP,前三段保持和原来的IP一致
NETMASK=255.255.255.0
GATEWAY=192.168.0.1  # 一般为x.x.x.1,具体可在物理机上使用ipconfig命令查看
DNS1=114.114.114.114
DNS2=114.114.115.115
  • 配置文件保存后重启网络服务
systemctl restart network
  • 查看网络信息
[root@localhost network-scripts]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.222  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 de12::f1a4:3694:6189:d250 prefixlen 64  scopeid 0x20<link>
        ether 05:01:24:0a:54:15  txqueuelen 1000  (Ethernet)
        RX packets 221235  bytes 325157863 (310.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 129166  bytes 10537641 (10.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 40  bytes 3528 (3.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40  bytes 3528 (3.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 惯例,调戏下百度
[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data.
64 bytes from 115.239.211.112 (115.239.211.112): icmp_seq=1 ttl=54 time=12.0 ms
64 bytes from 115.239.211.112 (115.239.211.112): icmp_seq=2 ttl=54 time=11.9 ms
  • 搞定

博客更新地址

环境

CentOS Linux release 7.5.1804

脚本完成操作

  • 切换CentOS软件镜像源为中科大软件源
  • 设置防火墙,允许全部端口通过
  • 安装git
  • 安装Pyenv包管理工具,Pyenv使用详见:Python版本管理工具 Pyenv的安装与使用
  • 安装Python 3.6.4
  • 切换pip源为豆瓣
  • 安装Docker
  • 安装MySQL
  • 初始化MySQL(root@localhost的密码为123456,song@%的密码为123456)
  • 设置sshd开机启动
  • 安装ntp时间自动更新工具

使用

  • Github下载部署脚本代码
  • 百度云下载包含MySQL rpm包的required_rpms文件夹(MySQL官网由于国内特殊的网络环境原因,下载很慢,经常中断导致无法安装,因而将安装所需的rpm包单独down了下来,又因为所有MySQL包加起来有200+M,不方便传到Github上,只能传到百度云上单独下载)
  • 将百度云上下载的required_rpms文件夹加入到代码主目录,最终目录如下:
.
├── 0_start.sh
├── 1_shell_init.sh
├── 2_deploy_firewall.sh
├── 3_install_git.sh
├── 4_install_pip.sh
├── 5_install_docker.sh
├── 6_install_mysql.sh
├── 7_enable_sshd.sh
├── 99_shell_finalize.sh
├── deploy_mysql_hook
│   ├── 0_deploy_mysql.sh
│   └── init_mysql.exp
├── post_hook
│   └── 1_test.sh
├── pre_hook
│   └── 1_test.sh
├── README.md
└── required_rpms
    ├── mysql
    │   ├── mariadb-5.5.56-2.el7.x86_64.rpm
    │   ├── perl-5.16.3-292.el7.x86_64.rpm
    │   ├── perl-Carp-1.26-244.el7.noarch.rpm
    │   ├── perl-constant-1.27-2.el7.noarch.rpm
    │   ├── perl-Encode-2.51-7.el7.x86_64.rpm
    │   ├── perl-Exporter-5.68-3.el7.noarch.rpm
    │   ├── perl-File-Path-2.09-2.el7.noarch.rpm
    │   ├── perl-File-Temp-0.23.01-3.el7.noarch.rpm
    │   ├── perl-Filter-1.49-3.el7.x86_64.rpm
    │   ├── perl-Getopt-Long-2.40-2.el7.noarch.rpm
    │   ├── perl-HTTP-Tiny-0.033-3.el7.noarch.rpm
    │   ├── perl-libs-5.16.3-292.el7.x86_64.rpm
    │   ├── perl-macros-5.16.3-292.el7.x86_64.rpm
    │   ├── perl-parent-0.225-244.el7.noarch.rpm
    │   ├── perl-PathTools-3.40-5.el7.x86_64.rpm
    │   ├── perl-Pod-Escapes-1.04-292.el7.noarch.rpm
    │   ├── perl-podlators-2.5.1-3.el7.noarch.rpm
    │   ├── perl-Pod-Perldoc-3.20-4.el7.noarch.rpm
    │   ├── perl-Pod-Simple-3.28-4.el7.noarch.rpm
    │   ├── perl-Pod-Usage-1.63-3.el7.noarch.rpm
    │   ├── perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
    │   ├── perl-Socket-2.010-4.el7.x86_64.rpm
    │   ├── perl-Storable-2.45-3.el7.x86_64.rpm
    │   ├── perl-Text-ParseWords-3.29-4.el7.noarch.rpm
    │   ├── perl-threads-1.87-4.el7.x86_64.rpm
    │   ├── perl-threads-shared-1.43-6.el7.x86_64.rpm
    │   ├── perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
    │   └── perl-Time-Local-1.2300-2.el7.noarch.rpm
    ├── mysql57-community-release-el7-11.noarch.rpm
    ├── mysql-community-server
    │   ├── mysql-community-client-5.7.20-1.el7.x86_64.rpm
    │   ├── mysql-community-common-5.7.20-1.el7.x86_64.rpm
    │   ├── mysql-community-devel-5.7.20-1.el7.x86_64.rpm
    │   ├── mysql-community-libs-5.7.20-1.el7.x86_64.rpm
    │   ├── mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm
    │   └── mysql-community-server-5.7.20-1.el7.x86_64.rpm
    └── mysql-devel
        ├── keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm
        ├── krb5-devel-1.15.1-8.el7.x86_64.rpm
        ├── libcom_err-devel-1.42.9-10.el7.x86_64.rpm
        ├── libkadm5-1.15.1-8.el7.x86_64.rpm
        ├── libselinux-devel-2.5-11.el7.x86_64.rpm
        ├── libsepol-devel-2.5-6.el7.x86_64.rpm
        ├── libverto-devel-0.2.5-4.el7.x86_64.rpm
        ├── mariadb-devel-5.5.56-2.el7.x86_64.rpm
        ├── openssl-devel-1.0.2k-8.el7.x86_64.rpm
        ├── pcre-devel-8.32-17.el7.x86_64.rpm
        └── zlib-devel-1.2.7-17.el7.x86_64.rpm
  • 在主目录运行source 0_start.sh,等待执行完成即可,执行结果如下:
==================================================
shell exec time
1_shell_init.sh      exec time:      0 m  25 s
pre_hook     exec time:      0 m  0 s
2_deploy_firewall.sh     exec time:      0 m  2 s
3_install_git.sh     exec time:      0 m  7 s
4_install_pip.sh     exec time:      4 m  3 s
5_install_docker.sh      exec time:      1 m  2 s
6_install_mysql.sh   exec time:      1 m  6 s
deploy_mysql_hook    exec time:      0 m  3 s
7_enable_sshd.sh     exec time:      0 m  0 s
post_hook    exec time:      0 m  0 s

all_shell        exec time:      6 m  48 s
==================================================

博客更新地址

环境

以下环境仅代表本文测试环境,其它版本应该也可以。
* 虚拟机 Linux: CentOS Linux release 7.4.1708 (Core)
* 物理机 Windows: Windows 10 1709
* 移动端 Android: 7.1.1

CentOS 7 网络配置

虚拟机配置(在物理机 Windows 10 中)

需将网络连接方式改为桥接模式,否则手机端无法连接到虚拟机中的CentOS,Vmware和VirtualBox都有这个功能,不赘述。

查看物理机网络配置(在物理机 Windows 10 中)

右键开始菜单,打开Windows PowerShell(此处为无线连接,有线连接可以去查看有线网卡)

PS C:\Users\smy13> ipconfig
...

无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . : DHCP HOST
   本地链接 IPv6 地址. . . . . . . . : fe80::b441:8184:1b12:d4fb%4
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.111
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.0.1

...

记住以上的子网掩码默认网关,以下会用到

设置静态IP(在CentOS 中)

打开/etc/sysconfig/network-scripts/ifcfg-ens33,最后的ifcfg-ens33为网卡名,不一定是这个名字,一般都以ifcfg-开头。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

将配置文件改为如下(重点为最后六行,说明见注释)

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# BOOTPROTO=dhcp  # 默认IP获取方式为DHCP,需注释掉
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=227a8a72-2a97-468c-91c2-d0851ddec08e
DEVICE=ens33
ONBOOT=yes

# 添加以下内容
BOOTPROTO=static  # 设置IP获取方式为静态
IPADDR=192.168.0.200  # 你想设置的静态IP
NETMASK=255.255.255.0  # 刚在物理机中看到的子网掩码
GATEWAY=192.168.0.1  # 刚在物理机中看到的默认网关
DNS1=192.168.0.1  # 设置为默认网关
DNS2=8.8.8.8  # 勿动

重启网络

systemctl restart network

可以通过ping www.baidu.com查看是否配置成功

[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data.
64 bytes from www.baidu.com (115.239.211.112): icmp_seq=1 ttl=54 time=12.1 ms
64 bytes from www.baidu.com (115.239.211.112): icmp_seq=2 ttl=54 time=8.19 ms
64 bytes from www.baidu.com (115.239.211.112): icmp_seq=3 ttl=54 time=9.76 ms
64 bytes from www.baidu.com (115.239.211.112): icmp_seq=4 ttl=54 time=12.3 ms

防火墙配置

配置firewalld

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

关闭selinux

setenforce 0

打开selinux配置文件

vi /etc/selinux/config

将配置文件中的SELINUX=enforcing改为SELINUX=disabled以禁止selinux开机自启

samba 配置

安装 samba 包及依赖

安装 samba 包

yum install samba -y

开启samba服务并设置为开机自启

systemctl start smb
systemctl enable smb

配置共享文件夹

建立共享目录,(/samba/haha/为将来要共享的文件夹,可自定义)

mkdir /samba/haha/ -p

修改目录用户组及权限

chown -R nobody:nobody /samba/haha/
chmod -R 755 /samba/haha/

修改 samba 配置文件

修改配置文件

vi /etc/samba/smb.conf

配置文件如下(说明见注释)

[global]  # 公共配置
        workgroup = WORKGROUP  # 工作组,建议和宿主机保持一致
        server string = Samba Server Version %v  # samba服务器名称,就这样设置就行,%v表示版本号
        max connections = 0  # 最大连接数,0表示不限制
        log file = /var/log/samba/log.%m  # 日志文件存放路径,%m表示连接设备名
        security = user  # 设置Samba Server共享目录只能被授权的用户访问
        passdb backend = smbpasswd  # 使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码
        encrypt passwords = yes  # 密码加密
        smb passwd file = /etc/samba/smbpasswd  # smbpasswd文件的目录,有些版本的samba可能需要手动创建该文件
        # 以下四行为设置在共享目录创建文件和文件夹的默认权限
        create mask = 0644
        force create mode = 0644
        directory mask = 0755
        force directory mode = 0755

[haha]  # 私有配置,haha这个名字可自定义
        comment = haha  # 共享名,任意字符串
        path = /samba/haha  # 共享目录路径
        writable = yes  # 指定该共享路径为可写

添加账户到 samba 账户中,并配置单独的密码

[root@localhost ~]# smbpasswd -a root
New SMB password:
Retype new SMB password:

重启samba服务

systemctl restart smb

拷贝物理机中的视频

打开文件资源管理器,在地址栏输入\\192.168.0.200(192.168.0.200为 CentOS 中设置的静态IP),就可以看到我们配置的haha共享目录了,将视频文件复制进去即可。

手机端操作

  • 安装ES文件浏览器和MX 播放器,酷安和豌豆荚都有。

  • 安装完之后打开ES文件浏览器,点击左上角的菜单栏中的”我的网络”
    1

  • 点击右上角菜单-新建-局域网,服务器名为在 CentOS 中设置的静态IP,用户名和密码为刚才执行smbpasswd -a root的用户(root)和密码
    2

  • 之后点进去就可以看到我们刚才存在samba服务器中的视频了,选择使用MX播放器播放即可在线播放,加载速度由局域网决定,一般电影都足够了。
    3

博客更新地址