centos7 cp?centos现在哪个版本最流行

如何在VPS上安装和访问CentOS 7远程桌面

我们假设你已经创建了CentOS 7的VPS实例(比如,使用DigitalOcean或者 Amazon EC2)。请确保你的VPS实例有至少1GB的内存。不然,CentOS将会在你访问远程桌面的时候会崩溃。

第一步:安装CentOS桌面

如果你现在安装的CentOS版本是没有桌面的最小版本,你需要先在VPS上安装桌面(比如GNOME)。比如,DigitalOcean的镜像就是最小版本,它需要如下安装桌面GUI

# yum groupinstall"GNOME Desktop"

在安装完成之后重启VPS。

第二步:安装和配置VNC服务器

接下来就是安装和配置VNC服务器。我们使用的是TigerVNC,一个开源的VNC服务实现。

# yum install tigervnc-server

现在创建一个用户账户(比如:xmodulo)用来访问远程桌面。

# useradd xmodulo

# passwd xmodulo

当一个用户尝试使用VNC访问远程桌面时,VNC守护进程就会启动来处理这个请求。这意味着你需要为每个用户创建一个独立的VNC配置文件。

CentOS依靠systemd来管理和配置系统服务。所以我们将使用systemd来为用户xmodulo配置VNC服务器。

首先让我们使用下面任意一条命令来检查VNC服务器的状态。

# systemctl status vncserver@:.service

# systemctl is-enabled vncserver@.service

默认的,刚安装的VNC服务并没有激活(禁用)。

现在复制一份通用的VNC服务文件来为用户xmodulo创建一个VNC服务配置。

# cp/lib/systemd/system/vncserver@.service/etc/systemd/system/vncserver@:1.service

用本文编辑器来打开配置文件,用实际的用户名(比如:xmodulo)来替换[Service]下面的。同样。在ExecStart后面追加"-geometry"参数。最后,要修改下面“ExecStart”和“PIDFile”两行。

# vi/etc/systemd/system/vncserver@:1.service

[Service]

Type=forking

# Clean any existing files in/tmp/.X11-unix environment

ExecStartPre=/bin/sh-c'/usr/bin/vncserver-kill%i>/dev/null 2>&1||:'

ExecStart=/sbin/runuser-l xmodulo-c"/usr/bin/vncserver%i-geometry 1024x768"

PIDFile=/home/xmodulo/.vnc/%H%i.pid

ExecStop=/bin/sh-c'/usr/bin/vncserver-kill%i>/dev/null 2>&1||:'

现在为用户xmodulo设置密码(可选)。首先切换到该用户,并运行vncserver命令。

# su- xmodulo

# vncserver

你会被提示输入用户的VNC密码。密码设置完成后,你下次需要用这个密码来访问你的远程桌面。

最后,重新加载服务来使新的VNC配置生效:

# systemctl daemon-reload

在启动时自动启动VNC服务:

# systemctl enable vncserver@:1.service

检查vnc服务正在监听的端口:

# netstat-tulpn| grep vnc

端口5901是VNC默认的客户端连接到VNC服务器使用的端口。

第三步:通过SSH连接到远程桌面

从设计上说,VNC使用的远程帧缓存(RFB)并不是一种安全的协议,那么在VNC客户端上直接连接到VNC服务器上并不是一个好主意。任何敏感信息比如密码都可以在VNC流量中被轻易地泄露。因此,我强烈建议使用SSH隧道来加密你的VNC流量。

在你要运行VNC客户端的本机上,使用下面的命令来创建一个连接到远程VPS的SSH通道。当被要输入SSH密码时,输入用户的密码。

$ ssh xmodulo@<VPS-IP-address>-L 5901:127.0.0.1:5901

用你自己的VNC用户名来替换“xmodulo”,并填上你自己的VPS IP地址。

一旦SSH通道建立之后,远程VNC流量就会通过ssh通道路由并发送到127.0.0.1:5901。

现在启动你最爱的VNC客户端(比如:vinagre),来连接到127.0.0.1:5901。

你将被要求输入VNC密码。当你输入VNC密码时,你就可以安全地连接到CentOS的远程桌面了。

【UTC】CentOS7修改时区的正确姿势

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。

格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】

夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)

RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。

Centos7修改系统时区timezone ,解决快、慢8小时问题

如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。

服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。

# timedatectl

我们可以看到,服务器使用的CST时间

# timedatectl set-timezone UTC

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"

# timedatectl

我们可以看到,服务器时间类型更改为UTC了

# ll /etc/locatime

lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC

实际上是做了一个将 

 文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC

# ln -s /usr/share/zoneinfo/UTC  /etc/localtime

ln:无法创建符号链接"/etc/localtime":文件已存在

# ln -sf /usr/share/zoneinfo/UTC   /etc/localtime

做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"   //只设置时分秒

# timedatectl

# clock -w

# date -u  //显示UTC时间

CentOS7修改时区的正确姿势

CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。

正确的修改CentOS7时区的姿势:

#  ln -sf/usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

其他系统的修改文件可能是/var/etc/localtime.

错误的姿势:通过cp命令覆盖/etc/localtime时间

 # cp-f /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。

具体原因在于Java访问系统时区的方式上,可参见文章:

Java TimeZone和 Linux TimeZone问题

该文章很好的说明了Java访问系统时区的方式:

1.如有环境变量 TZ设置,则用TZ中设置的时区

2.在/etc/sysconfig/clock文件中找“ZONE”的值

3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。 

问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。

/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!

如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。

/cp rfv mnt opt centos报错

关闭防火墙和selinux和主机映射(须双节点都操作)

#compute

[root@compute~]# setenforce 0

[root@compute~]# getenforce

Permissive

[root@compute~]# systemctl stop firewalld&& systemctl disable firewalld

#controller

[root@compute~]# setenforce 0

[root@compute~]# getenforce

Permissive

[root@compute~]# systemctl stop firewalld&& systemctl disable firewalld

#主机映射(这里就放一个节点的示例)

[root@controller~]# cat/etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168..10 controller

192.168..20 compute

配置yum(我所配置的是http服务yum,如果配置ftp服务的可以参考其他作者文章)

#controller

[root@controller~]# mv/etc/yum.repos.d/*/home/

[root@controller~]# mkdir/opt/centos

[root@controller~]# mkdir/opt/openstack

[root@controller~]# vi/etc/yum.repos.d/http.repo

[centos]

name=centos

baseurl=

gpgcheck=0

enabled=1

[iaas]

name=iaas

baseurl=

gpgcheck=0

enabled=1

上传1804文件和iaas文件到controller/root/下

[root@controller~]# ll

total 8075368

-rw-------. 1 root root 1836 Dec 15 14:45 anaconda-ks.cfg

-rw-r–r--. 1 root root 4470079488 Oct 30 03:57 CentOS-7-x86_64-DVD-1804.iso

-rw-r–r--. 1 root root 3799093248 Oct 30 11:18 chinaskills_cloud_iaas.iso

将centos文件挂载到/opt/centos下,iaas文件挂载到/opt/openstack下

[root@controller~]# mount-o loop CentOS-7-x86_64-DVD-1804.iso/opt/centos/

mount:/dev/loop0 is write-protected, mounting read-only

[root@controller~]# mount-o loop chinaskills_cloud_iaas.iso/opt/openstack/

mount:/dev/loop1 is write-protected, mounting read-only

检查yum源

[root@controller~]# yum clean all&& yum repolist

安装http服务并在http默认文件中创建centos和openstack文件

[root@controller~]# yum install-y httpd

[root@controller~]# mkdir/var/www/html/centos

[root@controller~]# mkdir/var/www/html/openstack

将挂载的文件cp到http默认访问目录的文件中

centos文件

[root@controller~]#cp-rfv/opt/centos/*/var/www/html/centos/

iaas文件

[root@controller~]#cp-rfv/opt/openstack/*/var/www/html/openstack/

开启http服务

[root@controller~]# systemctl start httpd&& systemctl enable httpd

将controller节点http.repo文件改为http主机名地址

配置compute节点yum

#compute

[root@compute~]# cat/etc/yum.repos.d/http.repo

[centos]

name=centos

baseurl=

gpgcheck=0

enabled=1

[iaas]

name=iaas

baseurl=

gpgcheck=0

enabled=1

检查yum源

[root@controller~]# yum clean all&& yum repolist

#compute分两块空分区作为swift和cinder的分区

[root@compute~]# lsblk-l

[root@compute~]# fdisk/dev/sda

n建立新分区

p primary分区

w写入

[root@compute~]# lsblk-l

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 1.8T 0 disk

sda1 8:1 0 1G 0 part/boot

sda2 8:2 0 857.9G 0 part

centos-root 253:0 0 350G 0 lvm/

centos-swap 253:1 0 7.9G 0 lvm [SWAP]

centos-home 253:2 0 500G 0 lvm/home

sda3 8:3 0 100G 0 part

sda4 8:4 0 100G 0 part

双节点安装iaas-xiandian包(注意配置不能出错,出错后面可能有很多问题)

[root@controller~]# yum install-y iaas-xiandian

[root@compute~]# yum install-y iaas-xiandian

修改openrc.conf文件

INTERFACE_IP=##在那个节点就配置那个节点的IP

INTERFACE_NAME=##外网卡第二张网卡

##依据实际分区填写配置

BLOCK_DISK=sda3

OBJECT_DISK=sda4

接下来就是跑脚本完成openstack搭建

#controller和compute

iaas-pre-host.sh

跑完此脚本ctrl+D重新连接即可

#controller

iaas-instack-mysql.sh&& iaas-instack-keystone.sh&& iaas-instack-glance.sh

#controller和 compute

iaas-instack-nova-controller.sh&& iaas-instack-neutron-controller.sh

iaas-instack-nova-compute.sh&& iaas-instack-neutron-compute.sh

#controller

iaas-instack-dashboard.sh

安装完成后 登录dashboard页面

阅读剩余
THE END