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页面