最近在研究项目时,需要在ECS/VPS上搭建一套环境来进行远程操作,通过这几天的重新学习和分析,发现大部分朋友在操作这些项目时都是使用256M/512M的低配机器,然而现在的Firefox越做越大,占用的内存越来越多,故考虑使用轻量级桌面环境xfce和启用2倍内存的SWAP文件来简单缓解下服务器内存紧张的问题。
国内的朋友可以考虑阿里云/腾讯云/华为云一类的厂商,具体的我只用过阿里云,长期使用下来各方面表现还不错,学生机给的内存也大。
现在的轻量应用服务器貌似比ECS划算,大家可以试试。
传送门:https://www.aliyun.com/minisite/goods?userCode=ku8y5qvg
上面的大家看看就好,不要冲动,我身边好多朋友一冲动就买了好多个VPS,然后放着吃灰。。。
在安装Xfce之前,我们要先安装epel-release包
[root@localhost ~]# yum install epel-release -y
或
[user@localhost ~]$ sudo yum install epel-release -y
sudo提权的,还需要输入当前用户密码(PS:当前用户需要在sudo文件内或在wheel组内才可以哦)
首先,我们通过这条命令确定Xfce在yum里的安装名称:
[root@localhost ~]# yum grouplist
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
Cinnamon Desktop
MATE Desktop
Basic Web Server
Virtualization Host
Server with GUI
GNOME Desktop
KDE Plasma Workspaces
Development and Creative Workstation
Available Groups:
Cinnamon
Compatibility Libraries
Console Internet Tools
Development Tools
Educational Software
Electronic Lab
Fedora Packager
General Purpose Desktop
Graphical Administration Tools
Haskell
LXQt Desktop
Legacy UNIX Compatibility
MATE
Milkymist
Scientific Support
Security Tools
Smart Card Support
System Administration Tools
System Management
TurboGears application framework
Xfce
Done
我们在列表的最后找到了Xfce,通过以下命令进行安装:
[root@localhost ~]# yum groupinstall Xfce -y
安装完成后进入下一步。
这里VNC服务器选择tigervnc-server。
[root@localhost ~]# yum install tigervnc-server -y
安装完成后进行配置:
1、复制一份[email protected]到/etc/init.d目录下,并修改名称。
[root@localhost ~]# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
2、配置vncserver@:1.service
[root@localhost ~]# vi /etc/systemd/system/vncserver@:1.service
把里面的 < USER > 改为需要配置远程访问的用户名,这里以root为例。
#源文件
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[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=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"
PIDFile=/home//.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
#修改后
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[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=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/home/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
通过vncpasswd设置当前用户的VNC访问密码
[root@localhost ~]# vncpasswd
Password:(输入你的密码)
Verify:(再输入一遍)
Would you like to enter a view-only password (y/n)? n(不需要只读访问远程桌面的选“n”)
A view-only password is not used
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# vi ~/.vnc/xstartup
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
startxfce4 &
[root@localhost ~]# vncserver :1
修改防火墙以允许VNC数据通过
[root@localhost ~]# systemctl enable firewalld
[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# firewall-cmd --add-service=vnc-server --permanent
[root@localhost ~]# firewall-cmd --reload
或停用防火墙(不建议)
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
这里直接通过epel仓库获取firefox就好了。
[root@localhost ~]# yum install firefox -y
以我正在使用的服务器1U512M10GSSD为例。
通过VNC连接到服务器后,打开Firefox已经很卡了,查看内存使用情况可知:
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 486M 386M 7.5M 9.1M 93M 78M
Swap: 0 0 0
内存使用基本可以说已经用尽了,现在我们引入SWAP缓解下内存使用压力。
一般在云服务器上很难调整硬盘分区结构,故使用swap文件来代替swap分区。
[root@localhost ~]# dd if=/dev/zero of=/home/swapfile bs=1k count=1000000
[root@localhost ~]# chmod 600 /home/swapfile
[root@localhost ~]# chown root:root /home/swapfile
[root@localhost ~]# mkswap /home/swapfile
[root@localhost ~]# swapon /home/swapfile
如此一来,已经配置好swap文件并启用了(临时),现在来看看内存占用。
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 486M 305M 9M 23M 171M 144M
Swap: 976M 384M 592M
虽然内存占用依旧恐怖,但已经可以明显看到,SWAP文件已经帮忙存储了一些数据,在使用体验上也有些许改进。
由于swapfile文件不像swap分区一样不怎么变动,故而我更倾向于把开机启动swap写在rc.local而不是fstab。
[root@localhost ~]# echo "swapon /home/swapfile" >> /etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
DONE.