当前位置 博文首页 > 码农之家:【Linux】【开发环境】【RHEL】开发环境搭建系列之一

    码农之家:【Linux】【开发环境】【RHEL】开发环境搭建系列之一

    作者:[db:作者] 时间:2021-07-30 20:54

    前言

    Linux环境搭建

    在嵌入式开发或学习过程中,经常需要涉及Linux开发环境的搭建。生产环境下,一般都是直接在配置较高的服务器上安装。而对于个人学习而言,没有现成的服务器,无非两个选择:

    • 双系统:经常需要修改启动项,如操作失误,可能会导致windows无法启动;
    • 虚拟机:使用虚拟机的方式,在主机上虚拟另外一台主机。

    本文主要讲解虚拟机VB安装RHEL并将网络接口、IP、DNS、FTP、SAMBA等配置完成的过程。

    虚拟机软件选择

    常用虚拟机软件大概有下面几种:

    • Vmware Workstation
    • Virtual Box
    • Windows Virtual PC
    • VMware Player

    比较常用的是Virtual Box和Vmware Workstation两个软件,但Vmware Workstation是收费的,Virtual Box是免费的,本文主要以Virtual Box 6.16为例来说明具体的操作过程。

    Linux发布版本

    一般来说著名的linux发布版本基本上分两大阵营:

    • RedHat系列:Redhat、Centos、Fedora等;
    • Debian系列:Debian、Ubuntu等;

    RedHat主要集中在企业级服务器版的制作 是推动Linux商业化最成功的公司 RedHat对应的桌面版制作都是由Fedora社区研发。
    RHEL是Red Hat的企业版。
    Ubuntu桌面版适合初学者使用比较简单,桌面用户的首选ubuntu 。

    本文选择RHEL7,因为比较适合企业级别使用。

    具体操作

    1、VirtualBox安装RHEL

    这个流程可参考后文参考资料【1】【2】,比较详细,不再赘述;
    这里主要注意几点:

    • VB的网络模式建议配置为桥接模式,这样,虚拟机和主机会在一个网段中,方便虚拟机上网并和主机交换数据。
    • LOCALIZATION:DATA&TIME选下时区、LANGUAGE SUPPORT选下汉语;
    • SOFTWARE:选“Server with GUI”,千万不要选“Minimal Install”,同时在右边软件列表中,尽量将会用到的软件或服务选中。
    • SYSTEM:“NETWORK&HOSTNAME”,主要把网络配置下。

    经过上述操作,不出意外,RHEL已经拿到IP地址,后续可以使用ssh连接RHEL了,不需要在VB界面里操作了。

    2、IP地址

    上一步如果选择DHCP方式,则默认会在ifcfg-enp0s3文件中写下面的内容:

    [qxhgd@localhost /]$ cat ./etc/sysconfig/network-scripts/ifcfg-enp0s3
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="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="enp0s3"
    UUID="e26ca312-25e6-45de-8a15-7bb03df1ff37"
    DEVICE="enp0s3"
    ONBOOT="yes"
    

    2.1、重命名接口

    这里默认的网卡名为enp0s3,不是通常的eth0,可以通过下面方式修改:

    • 配置文件调整,将其中的NAME和DEVICE都修改为eth0
    [qxhgd@localhost]$ mv ifcfg-enp0s3 ifcfg-eth0
    
    • 禁用网卡命名规则并生成新的grub配置参数
      修改grub引导文件,在GRUB_CMDLINE_LINUX中增加net.ifnames=0 biosdevname=0部分,并使用grub2-mkconfig命令更新grub配置参数
    [qxhgd@localhost ~]$ vi /etc/sysconfig/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
    GRUB_DISABLE_RECOVERY="true"
    
    [qxhgd@localhost ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
    
    • 重启虚拟机

    2.2、配置固定IP

    修改配置文件中的IP地址、掩码、网关、以及获取地址方式等几个字段即可。

    [qxhgd@localhost ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
    BOOTPROTO="static"
    IPADDR=192.168.2.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.2.1
    ONBOOT=yes 
    

    经过上述操作后,已经可以在主机上使用putty软件通过SSH访问RHEL的IP了。

    3、DNS服务器

    如果前两步网络配置的有问题,或者不是DHCP方式获取地址,可能没有生成DNS服务器,则此时可通过下面这个文件进行修改;

    [qxhgd@localhost ~]$cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 192.168.2.1
    

    DNS如果不在这个文件配置,在ifcfg-eth0文件中修改也可以:

    [qxhgd@localhost ~]$cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DNS1=192.168.2.1      //网卡eth0的第一个DNS服务器                                                  
    DNS2=8.8.8.8          //网卡eth0的第二个DNS服务器    
    

    4、SAMBA服务

    4.1 账户添加到smaba协议

    [qxhgd@localhost ~]$ sudo smbpasswd -a qxhgd
    [sudo] password for qxhgd
    New SMB password:
    Retype new SMB password:
    Added user qxhgd
    [qxhgd@localhost ~]$ 
    

    4.2 配置账户的权限目录

    [qxhgd@localhost ~]$ setfacl -m u:qxhgd:rw /home/qxhgd
    

    不建议使用chmod修改目录权限,不安全。

    4.3 修改samba的配置文件

    [qxhgd@localhost ~]$ cat /etc/samba/smb.conf
    [qxhgd]
            path = /home/qxhgd
            browseable=yes
            writeable=yes
            write list = qxhgd
    

    4.4 启动smb服务

    [qxhgd@localhost ~]$ systemctl start smb nmb
    [qxhgd@localhost ~]$ systemctl enable smb nmb
    

    类似的命令还有service smb restart。
    如果需要配置开机自动启动,可执行下面命令:

    chkconfig smb on 
    

    4.5 关闭防火墙

    [qxhgd@localhost ~]$firewall-cmd --permanent --add-service=samba
    [qxhgd@localhost ~]$firewall-cmd --permanent --add-service=rpc-bind 
    [qxhgd@localhost ~]$firewall-cmd --permanent --add-service=mountd 
    [qxhgd@localhost ~]$firewall-cmd --reload
    

    4.6 关闭SELINUX

    [qxhgd@localhost ~]$ cat /etc/sysconfig/selinux
    SELINUX=disabled
    [qxhgd@localhost ~]$ sudo setenforce 0
    

    5、FTP服务

    这里主要以vsftpd为例说明,实际上RHEL上有其他选择。
    另外,ftp账户可以有本地用户、虚拟用户、匿名访问三种,这里只关心本地用户的情况。

    5.1 修改配置文件

    • 在vsftpd.conf中增加下面几项即可:
    [qxhgd@localhost ~]$ cat /etc/vsftpd/vsftpd.conf
    local_root=/home/qxhgd
    chroot_local_user=YES
    userlist_deny=NO
    allow_writeable_chroot=YES
    
    • 在user_list中增加本地账号:
    [qxhgd@localhost ~]$ cat /etc/vsftpd/user_list
    ...
    qxhgd
    

    5.2 启动vsftpd服务

    重启:

    [qxhgd@localhost ~]$ service vsftpd restart
    

    启动:

    [qxhgd@localhost ~]$ service vsftpd start
    

    开机启动vsftpd服务:

    [qxhgd@localhost ~]$ systemctl enable vsftpd
    

    5.3 查看vsftpd服务状态

    本质上下面几条命令都类似:

    [qxhgd@localhost ~]$systemctl status vsftpd
    [qxhgd@localhost ~]$systemctl status vsftpd.service 
    [qxhgd@localhost ~]$systemctl status vsftpd.service -l
    

    5.4 SELinux控制

    [qxhgd@localhost ~]$setsebool -P ftpd_full_access=on
    

    5.5 iptables控制

    [qxhgd@localhost ~]iptables -I IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
    

    如果安装的时候,防火墙默认打开了,则需要将ftp使用的21端口放开。

    相关操作技巧

    1、VB增强工具

    管理——全局设定——扩展中可安装下载好的增强工具。
    注:有的VB版本是“设备——安装增强功能”这个路径。

    2、VB虚拟机备份

    控制——工具——备份【系统快照】(S),可以将某一时刻的虚拟机备份。

    3、RHEL操作细节

    • 在修改ftp、smb、dns等配置文件之前,最好备份一份;
    • 如果忘记备份了,可从下载的iso文件中捞一份。

    参考资料

    【1】VirtualBox安装RedHat7
    【2】电脑安装Linux虚拟机图文教程
    【3】VMWare虚拟机网络配置
    【4】Virtual Box资源
    【5】RHEL7资源:rhel-server-7.7-x86_64-dvd.iso,提取码:iy2b

    cs