OpenStack Mitaka for Ubuntu 16.04 LTS 部署指南

1. 硬件服务器

  • 名称:浪潮P8000工作站
  • CPU:Intel Xeon CPU E5-2620 v3 2.40GHz * 2,共12个物理核,24个逻辑核
  • 内存:16 * 8 = 128GB
  • 存储:SAS 300GB * 3 = 900GB
  • 网络:千兆网卡 * 6
  • 操作系统:Windows Server 2012 R2 DataCenter

2. OpenStack部署分析及规划

2.1 目的

  • 部署一个OpenStack测试环境
  • 硬件虚拟化,提供一个Infrastructure-as-a-Service (IaaS)解决方案
  • 基于OpenStack云计算平台提供 MapReduce、Spark等计算服务
  • 提供OpenStack开源云计算学习平台

2.2 OpenStack网络模型选择

官方文档中OpenStack提供了两种网络模型架构

  • Provider Networks
    OpenStack最简单的部署方式,主要利用二层网络服务(Layer-2 Services)(通过网桥和交换机连接不同网络)和VLAN划分,其本质上是将虚拟机网络(Virtual Networks)通过桥接物理网络(Physical Networks)并利用物理网络设施提供三层网络服务(Layer-3 Services);此外,通过DHCP服务向虚拟网络实例提供IP地址。
    注:该方式不支持私有自服务网络(Private Self-Service Networks),如三层路由服务(Layer-3 Routing Services)。
    此处输入图片的描述

  • Self-Service Networks
    该方式和Provider Networks方式相比,通过诸如VXLAN方式在自服务网络中支持三层路由服务
    此处输入图片的描述
    本文采用Provider Networks网络模型设计

2.3 OpenStack节点硬件需求

此处输入图片的描述

2.4 OpenStack服务组件选择

本文选择OpenStack Mitaka版本

  • Compute-Focused OpenStack Design
    根据OpenStack官方文档,以计算服务为主的OpenStack私有云计算平台可选取以下组件:

    For a compute-focused OpenStack design architecture, the following components may be present:
    Identity (keystone)
    Dashboard (horizon)
    Compute (nova)
    Object Storage (swift)
    Image (glance)
    Networking (neutron)
    Orchestration (heat)
  • OpenStack服务组件选择:
    注:本文选择MariaDB(MySQL的一个分支,完全兼容MySQL)开源数据库为OpenStack组件提供后端数据访问服务。

    Service Name Component Name Brief Description
    Identity Service Keystone 身份服务,提供单点集成方式管理身份认证、授权、服务目录服务
    Image Service Glance 镜像服务
    Compute Service Nova 计算服务
    Networking Service Neutron 网络服务
    Dashboard Service Horizon 仪表盘,访问OpenStack服务的图形化接口
    Block Storage Service Cinder 块存储服务
    Shared File Systems Service Manila 共享文件系统服务,用于文件存储
    Object Storage Service Swift 对象存储服务,用于对象存储和检索
    Orchestration Service Heat 编排服务,基于模板创建管理云资源
    Telemetry Data Collection Service Ceilometer 计量服务
    Telemetry Alarming Service Aodh 警报服务
    Database Service Trove 数据库服务,用于云部署关系型和非关系性数据库引擎
    Data Processing Service Sahara 数据处理服务,提供一个数据处理框架,如Hadoop、Spark、Storm

2.5 OpenStack节点网络设计

  • OpenStack官方文档建议网络布局如下:
    此处输入图片的描述

  • 本文采用如下网络设计
    总共3个子网:
    ① 互联网连接/对外出口(External)
    ② Openstack管理网络(Management)
    ③ VM虚拟机内网连接(Data)
    此处输入图片的描述
    注:此外,本文将Block Storage NodeObject Storage Node加入Management Network

2.6 OpenStack节点服务器规划

  • 服务器配置:

    Node CPU 内存 存储
    Controller 4核 16GB 100GB
    Network 2核 8GB 100GB
    Compute 16核 64GB 300GB
    BlockStorage 2核 8GB 100GB+100GB+100GB
    ObjectStorage1 2核 8GB 100GB+100GB+100GB
    ObjectStorage2 2核 8GB 100GB+100GB+100GB

    注:此处资源分配超出了实际物理资源,可根据实际分配资源。

  • 网络配置:

    Node eth0 eth1 eth2
      External Network Management Network Data Network
    Controller 192.168.1.11 10.0.0.11  
    Network 192.168.1.21 10.0.0.21 10.0.1.21
    Compute 192.168.1.31 10.0.0.31 10.0.1.31
    BlockStorage 192.168.1.41 10.0.0.41  
    ObjectStorage1 192.168.1.51 10.0.0.51  
    ObjectStorage2 192.168.1.52 10.0.0.52  
    Subnet Mask 255.255.255.0 255.255.255.0 255.255.255.0
    Gateway 192.168.1.1 10.0.0.1 10.0.1.1

    注:由于实际网络限制, External Network通过虚拟网卡192.168.1.1共享主机网络来访问外网

  • 物理主机端口映射信息:

    物理机端口 虚拟机IP 虚拟机端口 服务描述
    11122 192.168.1.11 22 Controller SSH 服务
    12122 192.168.1.21 22 Network SSH 服务
    13122 192.168.1.31 22 Compute SSH 服务
    14122 192.168.1.41 22 BlockStorage SSH 服务
    15122 192.168.1.51 22 ObjectStorage1 SSH 服务
    15222 192.168.1.52 22 ObjectStorage2 SSH 服务
    11180 192.168.1.11 80 OpenStack Dashboard 服务
    6080 192.168.1.11 6080 OpenStack Compute Service of Nova Proxy

    注:将虚拟机SSH端口映射到物理主机特定端口,以便外网通过物理主机访问虚拟机。
    物理主机端口:为方便管理,针对SSH服务,将物理主机映射端口设计如下,前三位表示对应虚拟机地址末两字节,最后两位表示对应虚拟机端口。

  • OpenStack服务密码要求:
    根据OpenStack官方文档
    此处输入图片的描述

2.7 OpenStack各节点组件规划

  • 节点组件信息:

    Node OpenStack Service
    Controller mariadb-server、mongodb-server、rabbitmq-server、memcached、keystone、apache2、glance、nova-api、nova-conductor、nova-consoleauth、nova-novncproxy、nova-scheduler、neutron-server、neutron-plugin-ml2、horizon(dashboard)、cinder-api cinder-scheduler、manila-api、manila-scheduler、python-manilaclient、swift、swift-proxy、python-swiftclient、heat-api、heat-api-cfn、heat-engine、ceilometer-api、ceilometer-collector、ceilometer-agent-central、ceilometer-agent-notification、python-ceilometerclient、python-ceilometermiddleware、aodh-api、aodh-evaluator、aodh-notifier、aodh-listener、aodh-expirer、python-trove、python-troveclient、python-glanceclient、trove-common、trove-api、trove-taskmanager、trove-conductor、sahara-api、sahara-engine、sahara-templates、sahara-wsgi-api
    Network neutron-linuxbridge-agent、neutron-l3-agent、neutron-dhcp-agent、neutron-metadata-agent
    Compute nova-compute、neutron-linuxbridge-agent、kvm、ceilometer-agent-compute
    BlockStorage lvm2、cinder-volume、manila-share、neutron-plugin-linuxbridge-agent
    ObjectStorage xfsprogs、rsync、swift、swift-account、swift-container、swift-object
  • 各节点功能可参考下图
    注:仅供参考理解,具体根据实际情况而定
    此处输入图片的描述
    此处输入图片的描述

2.8 用户、密码、地址、端口信息登记

注:
① 请提前设计好所需密码并登记存档,并及时登记用到的服务地址&端口信息。
② 根据实际情况,将下面Password列替换为实际密码。
(若为测试环境,建议密码采用一定规则,方便记忆,但数据库等服务密码不要包含一些特殊字符,如:/+@

  • OpenStack节点主机用户&密码:

    Node Hostname User Password
    Controller controller controller your_password
    Controller controller root your_password
    Network network network your_password
    Network network root your_password
    Compute compute compute your_password
    Compute compute root your_password
    BlockStorage blockstorage blockstorage your_password
    BlockStorage blockstorage root your_password
    ObjectStorage1 objectstorage1 objectstorage your_password
    ObjectStorage1 objectstorage1 root your_password
    ObjectStorage2 objectstorage2 objectstorage your_password
    ObjectStorage2 objectstorage2 root your_password
  • OpenStack服务用户&密码:

    Name User Password
    Database_PASS(MariaDB/MySQL) root your_password
    RABBIT_PASS openstack your_password
    KEYSTONE_DBPASS keystone your_password
    ADMIN_PASS admin your_password
    DEMO_PASS demo your_password
    GLANCE_DBPASS glance your_password
    GLANCE_PASS glance your_password
    NOVA_DBPASS nova your_password
    NOVA_PASS nova your_password
    NEUTRON_DBPASS nuetron your_password
    NEUTRON_PASS nuetron your_password
    METADATA_SECRET   your_password
    CINDER_DBPASS cinder your_password
    CINDER_PASS cinder your_password
    MANILA_DBPASS manila your_password
    MANILA_PASS manila your_password
    SWIFT_PASS swift your_password
    HASH_PATH_PREFIX   your_password
    HASH_PATH_SUFFIX   your_password
    HEAT_DBPASS heat your_password
    HEAT_PASS heat your_password
    HEAT_DOMAIN_PASS heat_domain_admin your_password
    CEILOMETER_DBPASS ceilometer your_password
    CEILOMETER_PASS ceilometer your_password
    AODH_DBPASS aodh your_password
    AODH_PASS aodh your_password
    TROVE_DBPASS trove your_password
    TROVE_PASS trove your_password
    SAHARA_DBPASS sahara your_password
    SAHARA_PASS sahara your_password
  • OpenStack各节点服务地址&端口
    参考:Firewalls and default ports
    注:可执行sudo netstat -tnlp查看

    节点 IP地址 端口 服务描述
    Controller 192.168.1.11 22 SSH
    Controller 10.0.0.11 3306 MariaDB(MySQL)
    Controller 10.0.0.11 27017 MongoDB
    Controller 10.0.0.11 5672、25672 RabbitMQ
    Controller 10.0.0.11 4369 Erlang端口映射守护进程(Erlang Port Mapper Daemon)
    Controller 10.0.0.11 11211 Memcached
    Controller 10.0.0.11 35357 OpenStack Identity Service of Apache HTTP Server(Admin)
    Controller 10.0.0.11 5000 OpenStack Identity Service of Apache HTTP Server(User)
    Controller 10.0.0.11 9191 OpenStack Image Service of Glance Registry
    Controller 10.0.0.11 9292 OpenStack Image Service of Glance API
    Controller 10.0.0.11 8774、8775 OpenStack Compute Service of Nova API
    Controller 10.0.0.11 6080 OpenStack Compute Service of Nova Proxy
    Controller 10.0.0.11 9696 OpenStack Networking Service of Neutron Server
    Controller 10.0.0.11 80 OpenStack Dashboard Service of Apache HTTP Server
    Controller 10.0.0.11 8776 OpenStack Block Storage Service of Cinder API
    Controller 10.0.0.11 8786 OpenStack Shared File Systems Service of Manila API
    Controller 10.0.0.11 8080 OpenStack Object Storage Service of Swift Proxy
    Controller 10.0.0.11 8000 OpenStack Orchestration Service of Heat API (CloudFormation)
    Controller 10.0.0.11 8004 OpenStack Orchestration Service of Heat API
    Controller 10.0.0.11 8777 OpenStack Telemetry Alarming Service of Ceilometer API
    Controller 10.0.0.11 8042 OpenStack Telemetry Alarming Service of Aodh API
    Controller 10.0.0.11 8779 OpenStack Database Service of Trove API
    Controller 10.0.0.11 8386 OpenStack Data Processing Service of Sahara API
    Network 192.168.1.21 22 SSH
    Compute 192.168.1.31 22 SSH
    Compute 192.168.122.1 53 Libvirt Dnsmasq
    BlockStorage 192.168.1.41 22 SSH
    BlockStorage 10.0.0.41 3260 OpenStack Block Storage Service of Tgtd(iSCSI target后台服务)
    ObjectStorage 192.168.1.51/52 22 SSH
    ObjectStorage 10.0.0.51/52 873 OpenStack Object Storage Service of Remote Sync
    ObjectStorage 10.0.0.51/52 6000 OpenStack Object Storage Service of Object
    ObjectStorage 10.0.0.51/52 6001 OpenStack Object Storage Service of Container
    ObjectStorage 10.0.0.51/52 6002 OpenStack Object Storage Service of Account

3. 环境准备

3.1 物理主机基本配置

  • 物理机基本配置
    ① 开启物理主机虚拟化功能
    ② 在物理主机上安装VMware Workstation 12.1 Pro

  • VMware虚拟机配置
    ① 配置虚拟机网络
    虚拟机网络连接方式图解:
    此处输入图片的描述
    打开VMware Workstation虚拟网络编辑器,添加如下虚拟网卡:
    其中VMnet0用于配置External Network,VMnet1用于配置Management Network子网, VMnet2用于配置Data Network子网。如下图:
    此处输入图片的描述
    ② 创建虚拟机,按前面要求设置CPU、内存大小,并新建网络适配器同时指定网络连接方式,各节点对应名称如下表:

    Node VMnet0 VMnet1 VMnet2
    Controller 网络适配器 网络适配器2  
    Network 网络适配器 网络适配器2 网络适配器3
    Compute 网络适配器 网络适配器2 网络适配器3
    BlockStorage 网络适配器 网络适配器2  
    ObjectStorage1 网络适配器 网络适配器2  
    ObjectStorage2 网络适配器 网络适配器2  

    注:虚拟机中添加网络适配器的顺序跟系统内默认网卡名eth0eth1eth2对应。
    ③ 开启虚拟机CPU虚拟化功能
    对于每个虚拟机,虚拟机设置–>处理器设置–>虚拟化引擎,选择Intel VT-x/EPT或AMD-V/RVI,如下图:
    此处输入图片的描述
    ④ 各节点虚拟机配置如下图:
    Controller节点:
    此处输入图片的描述
    Network节点:
    此处输入图片的描述
    Compute节点:
    此处输入图片的描述
    BlockStorage节点:
    此处输入图片的描述
    ObjectStorage1节点:
    此处输入图片的描述
    ObjectStorage2节点:
    此处输入图片的描述

3.2 节点系统安装

在VMware中创建虚拟机,安装Ubuntu 16.04 LTS

  • 创建虚拟机,设置CPU核心数、内存大小、存储大小。
  • 添加两块(或三块)虚拟网卡
  • 加载Ubuntu Server 16.04 LTS系统镜像
  • 启动系统,选择时区、语言,设置主机名和用户名、密码。
  • Partition disks配置步骤:
    ① 单独设置分区/dev/sda1,大小200MB,用于挂载/boot
    选择手动配置–>选择硬盘–>创建新的分区表–>选择空闲空间–>新建分区–>设置大小200MB–>选择主分区–>选择开始位置–>设置文件系统格式Ext4–>设置挂载点/boot–>设置分区。
    ② 设置LVM,方便扩展存储,挂载/swap
    配置逻辑卷LVM–>将修改写入磁盘并配置LVM–>新建卷组–>卷组名称:vg_system–>按空格键选中剩余空闲空间/dev/sda–>将修改写入磁盘并配置LVM–>新建逻辑卷–>选择卷组vg_system–>逻辑卷名:lv_root–>设置逻辑卷大小:91GB–>新建逻辑卷–>选择卷组vg_system–>逻辑卷名:lv_swap–>设置逻辑卷大小为剩余空间–>完成。
    ③ 分别对每一个逻辑卷进行配置
    磁盘格式:lv_root选择ext4,lv_swap选择swap area。
    挂载点:lv_root选择”/”。
    最后选择完成分区并将更改写入磁盘,点击确定即可。
  • 选择服务器默认安装软件包
    空格键选择OpenSSH Server,方便使用SSH传输文件。
  • 安装Grub。
    按照上述步骤,创建其他节点服务器并安装Ubuntu 16.04 LTS系统

3.3 节点系统基本环境配置

  • 启用root用户,设置root密码

    sudo passwd root
  • 为普通用户添加sudo权限
    只需修改/etc/sudoers文件
    切换到root用户,输入命令su -,输入root用户密码。
    输入命令vi /etc/sudoers编辑/etc/sudoers文件,在下面内容下添加一行your_username ALL=(ALL:ALL) ALL,输入w!强制保存,退出vi。

    
    # User privilege specification
    
    root    ALL=(ALL:ALL) ALL
    
    # controller
    
    controller ALL=(ALL:ALL) ALL

    注:如没有修改权限,则为/etc/sudoers文件添加写权限chmod u+w /etc/sudoers,修改后撤销权限chmod u-w /etc/sudoers

  • 修改网卡命名方式
    输入ifconfig -a查看,发现网卡名称由udev管理命名为ens33ens38,为了方便,将网卡名称修改为上述表格所示eth0eth1eth2
    sudo vi /etc/default/grub把/etc/default/grub中

    GRUB_CMDLINE_LINUX_DEFAULT=""
    GRUB_CMDLINE_LINUX=""

    改成:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

    ② 重新生成grub文件

    sudo update-grub
    sudo grub-mkconfig -o /boot/grub/grub.cfg  

    ③ 重启系统,发现网卡名称已经改回eth0eth1eth2命名格式。
    注:以上步骤在Controller节点、Compute节点、Network节点配置方法相同

  • 修改各节点网卡和VMware虚拟网卡绑定关系
    可选环节:若网卡和虚拟网卡绑定关系不同,可手动指定
    按照前面表格所示,修改各节点网卡名称为对应的eth0eth1eth2
    以Controller节点为例
    将默认网卡名eth0eth1修改为eth0eth2

    sudo vi /etc/udev/rules.d/70-persistent-net.rules
    //如无该文件,新建一个即可

    添加如下内容,其中00:0c:29:a9:66:8c00:0c:29:a9:66:96为网卡MAC,可执行ifconfig -a查看,根据情况自行设定:

    
    # eth0
    
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:a9:66:8c", NAME="eth0"
    
    # eth2
    
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:a9:66:96", NAME="eth2"

    保存并重启电脑sudo reboot
    注:配置完成后,不能虚拟机设置-->网络适配器-->高级中点击生成MAC,否则上面MAC地址需要修改配置。
    注:Compute节点、Network节点配置方法类似

  • 设置静态IP/DNS
    以Controller节点为例
    ① 修改文件sudo vi /etc/network/interfaces,将默认生成的(下面内容可能没有,可能不一样,配置时视自己情况而定):

    auto ens33
    iface ens33 inet dhcp

    改为:

    
    #eth0 config (connect to internet)
    
    auto eth0
    iface eth0 inet static
    address 192.168.1.11 #IP地址
    netmask 255.255.255.0 #子网掩码
    gateway 192.168.1.1 #网关
    dns-nameserver 192.168.1.1 #DNS
    
    
    # eth1 config (connect to openstack management network)
    
    auto eth1
    iface eth1 inet static
    address 10.0.0.11 #IP地址
    netmask 255.255.255.0 #子网掩码

    ② 重启网卡,使配置生效:

    sudo /etc/init.d/networking restart
    sudo service networking restart

    注:若找不到上述命令或重启无效可尝试下面命令:

    sudo ifdown eth0
    sudo ifdown eth1
    sudo ifup eth0
    sudo ifup eth1

    注:若提示ifdown: interface eth0 not configured,可换下面命令尝试:

    sudo ifconfig eth0 down
    sudo ifconfig eth1 down
    sudo ifconfig eth0 up
    sudo ifconfig eth1 up

    ③ 运行ifconfig -a查看网络配置信息。
    ④ 通过ping www.baidu.com测试能否正常访问外网。若不能,可sudo reboot重启节点试试。
    注:Compute节点、Network节点配置方法类似

  • //配置端口映射
    netsh interface portproxy add v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=11122 connectaddress=192.168.1.11 connectport=22
    //或者
    netsh interface portproxy add v4tov4 listenport=11122 connectaddress=192.168.1.11 connectport=22
    
    //查看已配置的端口映射
    netsh interface portproxy show v4tov4  // all
    
    侦听 ipv4:                 连接到 ipv4:
    
    地址            端口        地址            端口
    --------------- ----------  --------------- ----------
    xxx.xxx.xxx.xxx 11122       192.168.1.11     22
    *               11122       192.168.1.11     22
    
    //删除端口映射
    netsh interface portproxy delete v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=11122
    netsh interface portproxy delete v4tov4 listenport=11122

    ② 在系统防火墙高级设置中配置入站规则
    新建规则–>端口–>特定本地端口:11122–>允许连接–>选择域/专用/公用–>名称:VMware OpenStack Controller SSH、描述:用于VMware中OpenStack云计算平台Controller节点SSH连接
    ③ 配置完成后,可在外网主机,通过Xshell连接Controller节点,如下图:
    :若XShell连接失败,提示Xshell no matching outgoing encryption,可升级Xshell版本,在链接的属性(SSH–>安全性)的加密算法列表中选择aes256-ctr,mac加密列表中选择hmac-sha2-256,保存即可。
    此处输入图片的描述

注:其他节点配置方法类似

  • 配置hosts文件
    以Controller节点为例
    OpenStack要求所有的节点主机之间都是通过host互信的,编辑所有节点主机的/etc/hosts文件,注意将YOUR_HOST_NAME替换成本节点主机名称。配置完成后在每台主机上ping通3个主机名。此外,通过配置hosts文件,可在网络环境发生变化时提供可扩展性且便于迁移。
    可参考:OpenStack Doc : Controller hosts文件配置 
    ① 执行sudo vi /etc/hosts,添加如下内容

    
    # config all nodes
    
    10.0.0.11       controller
    10.0.0.21       network
    10.0.0.31       compute
    10.0.0.41       blockstorage
    10.0.0.51       objectstorage1
    10.0.0.52       objectstorage2

    ② 注释掉除127.0.0.1之外的环回地址项,如下:

    
    #127.0.1.1      controller`
    

    注:其他节点配置方法类似
    至此,节点网络配置完成:
    ① Controller、Network、Compute等节点可互相ping通;
    ② Controller、Network、Compute等节点均可访问外网和进行地址解析。

  • 配置ubuntu的更新源
    使用阿里云的更新源,修改配置文件sudo vi /etc/apt/sources.list,添加:

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  • 更新系统
    ① 更新系统

    sudo apt update
    sudo apt upgrade
    sudo apt dist-upgrade
    sudo apt autoremove

    可能遇到的问题:
    Ubuntu系统/boot容量不足引起的无法更新系统
    解决方法:
    查看/boot分区容量df -h /boot;查看当前使用内核版本号uname -a;删除旧内核,输入sudo apt-get remove linux-image-,接着按两下tab键,将显示所有的内核版本,把目前使用的版本之前的版本全部删除。最后执行

    sudo update-grub
    sudo grub-mkconfig -o /boot/grub/grub.cfg

    ② 查看系统发行版本和内核版本

    network@network:~$ sudo lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 16.04 LTS
    Release:    16.04
    Codename:   xenial
    network@network:~$ uname -srpi
    Linux 4.4.0-23-generic x86_64 x86_64
  • 服务器时区设置
    ① 执行sudo tzselect–>选择亚洲(Asia)–>选择中国(China)–>选择北京(Beijing)–>
    ② 复制文件到/etc目录下:
    sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    注:若在系统安装时已设置正确时区,可跳过该步骤。

猜你喜欢

转载自www.linuxidc.com/Linux/2016-09/135488.htm