本篇博文是从我的公众号转过来的,请尊重作者的劳动成果,未经允许请勿转载!值得说明的是,本篇博文主要适用于使用Python的同学。
目录
0 引言
因为疫情的关系迟迟没有开学,磕盐和项目的工作都没办法开展。有的同学就说了,可以用Teamviewer、Splashtop之类的软件远程控制实验室电脑来搬砖。当然如果有先见之明,之前在实验室电脑里装了这类软件,可以出门左转回去继续搬砖了。如果很不巧,实验室电脑不能远程控制,然后自己的电脑能力又不够,那么就需要租一台高性能的云服务器来“云搬砖”。
因为我自己有一个阿里云乞丐版ECS云服务器平时在用,就以阿里云ECS云服务器作为例子,其他的云服务器也是大同小异的。
我的服务器操作系统是Linux,发行版本的Ubuntu 16.04LTS(在配置的时候大多数地方与18.04版本没有区别)。如果发行版本是Centos或者Kali的同学,具体的操作会有很多不同,但是大致的思路是一致的。
1 本地PC(windows)如何远程连接云服务器
首先需要下载两个软件:PuTTY、WinSCP
利用PuTTY我们可以远程连接云服务器,并获得一个Terminal,在Terminal中我们可以通过命令行对服务器进行操作。利用WinSCP我们可以很方便地操作云服务器的文件系统,可以很方便地对云服务器里的文件和目录进行下载、上传、重命名、改变属性等等。下面来看一下具体怎么使用。
一打开PuTTY,默认就是第一幅图的位置(Session选项中)。
在“1”位置中填写云服务器的公网IP地址;
在“2”位置中填写云服务器开放的端口号(阿里云ECS默认是22,其他云服务器请自行查看云服务器的远程连接信息)。
然后,点击左侧“Connection”,到了第二幅图的位置。
在“3”位置中填10。这里填10的意思是每隔10秒向云服务器发送一个空数据,保证云服务器与PuTTY的连接一直处于活跃状态,防止长时间没动它就断连了。
做完这些,就可以敲“Open”开始连接云服务器了。
显示这个界面说明你和云服务器的通信应该是没问题的,只要登陆就行了。“login as:”这里输入用户名,具体用户名自行查看云服务器的远程连接信息。接着输入密码就可以访问你的云服务器了。
如果看到这个界面,那么恭喜你,你已经成功连接上了云服务器。现在可以通过命令行来操作服务器了!
请注意一点,当你用完云服务器的时候,请不要暴力的直接右上角叉掉!
正确的关闭方式是在命令行下输入exit。当然有的时候输入一次exit无法直接关闭,需要输入两次exit才能关闭。
如下图所示,有的时候需要输入两次exit,是因为你在前面操作的时候获取了管理员权限,第一次exit的时候是注销管理员,第二次exit才是关闭。
如果嫌输入exit太麻烦的话,可以通过快捷键“Ctrl+D”来注销和关闭。
接下来就是使用WinSCP来操作云服务器的文件系统。
一打开WinSCP会弹出上图这样的窗口,选择“新建站点”。
在“1”位置选择和你云服务器对应的文件协议;
在“2”位置填写云服务器的公网IP地址;
在“3”位置填写云服务器开放的端口号;
在“4”位置填写登陆云服务器的用户名(对应上面PuTTY里“login as:”的位置);
在“5”位置填写云服务器登陆密码。
以上做完以后点击“保存”,就会弹出下图的窗口。
在“7”位置可以设置新建的站点名称;
“8”位置建议两个都勾选,这样下一次直接在桌面双击新建的快捷方式就可以直接连接云服务器的文件系统。
登陆以后看到这个界面,那么恭喜你,你可以操作云服务器的文件系统了!
需要注意的是,如果长时间没有操作的话WinSCP可能会断连。
解决方法是,打开“选项”,选择远程,勾选“刷新远程面板间隔”,设置的时间我这里和PuTTY里的设置一样为10秒。
同样的,用完WinSCP以后,请不要暴力关闭!
正确的关闭方式是点击“会话”,选择“断开连接”。
以上就是本地PC远程连接云服务器的操作方法。
2 刚拿到云服务器以后的一些基本操作
首先说一下,这些仅代表我个人想法,每个人的操作不同,我的分享仅供参考。
一般来说新服务器apt的默认源是国外的,更新起来速度比较慢。
所以拿到新服务器的第一步是:修改默认的国外源为国内源。
首先,备份一下默认源的文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
接着,使用vi打开源的文件:
sudo vi /etc/apt/sources.list
然后,将sources.list的内容更改为国内源的地址。
这里需要特别注意一点,Ubuntu不同版本对应的系统代号不同:
Ubuntu 12.04(LTS)代号为:precise
Ubuntu 14.04(LTS)代号为:trusty
Ubuntu 15.04代号为:vivid
Ubuntu 15.10代号为:wily
Ubuntu 16.04(LTS)代号为:xenial
Ubuntu 18.04(LTS)代号为:bionic
以阿里源为例(其他源地址自己百度),我的版本是Ubuntu 16.04LTS,那么应把sources.list里的内容改为:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
保存后,更新apt源是否配置成功,Terminal中输入:
sudo apt-get update
如果没有报错,并且显示类似下图,说明配置成功了。
接下来,我会选择安装tree,使用tree可以很方便的在Terminal中查看当前文件目录,提高服务器的使用效率。
所以第二步是:安装tree。
在Terminal中输入:
sudo apt-get install tree
云服务器就会自动完成安装。看到类似下图这样的返回,说明安装成功了。
在任意位置输入tree,就以当前文件为父文件夹,以树状结构返回所有子文件夹的信息,如下图所示。
接下来主要是针对python的操作,如果不用python的可以跳过了。
Python绝大多数包我们都是通过pip来完成安装。pip默认的源也是国外的源,速度很慢。所以,我们实际用的时候要用国内的源。
第三步:配置pip源。
首先贴出一些国内源的地址:
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
这里有两种方法:一种临时的,一种永久的。
临时的方法就是每次在使用pip安装的时候,加上“-i 源地址”,例如:
sudo pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/
临时的方法,配置简单,但是每次都要复制一遍地址,挺麻烦的。
所以,使用永久的方法,一劳永逸地解决这个问题。
首先,在云服务器原始目录下创建一个“.pip”的文件夹,然后进到这个文件夹里:
mkdir ~/.pip
cd ~/.pip
然后,在这个文件夹下创建一个“pip.conf”文件,并用vi打开这个文件:
touch pip.conf
sudo vi pip.conf
然后,在“pip.conf”内输入如下内容(以清华源为例):
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
保存后,更新一下pip检查一下是不是成功了:
sudo pip install --upgrade pip
如果返回中出现了对应源的地址说明配置成功了,如下图,以后可以放心地用pip了。
配置好pip源以后,自然而然地就是装各种包。
第四步:pip安装各种包。
输入以下命令:
pip freeze
它会返回现有的python包以及版本,如下图。
常用的python包及其安装如下:
sudo pip install numpy
sudo pip install matplotlib
sudo pip install pandas
sudo pip install scipy
sudo pip install scikit-learn
sudo pip install scikit-image
sudo pip install opencv-python
有很多的包需要外部库的支持,所以不在这里列举过多。像tensorflow、pytorch还有caffe之类的框架安装起来比较麻烦(特别是caffe,坑很多),以后再说,这里就不多说了。
3 如何将项目部署到云服务器上并运行
这里我们只讨论Python项目。但是这个方法对于其他语言的项目部署也是可行的。
我们可以通过WinSCP把python代码文件上传至云服务器中,然后再在PuTTY中用python调用相应的代码文件。
下面这个视频做了一个简单的演示。
演示视频传送门
4 如何使用Pycharm调试云服务器上的代码
写python的同学绝大多数都用Pycharm,但是大家可能不知道,Pycharm其实可以进行远程调试。
使用这个方式,效率上要比使用WinSCP上传代码文件要高一些。但是这个方法只针对Python语言且使用PyCharm的用户。
下面来看具体怎么操作。
首先打开Pycharm,在菜单栏上选择Tools -> Deployment -> Configuration,进行云服务器连接配置。
点击“+”创建一个新的服务器连接,注意这里要选择和你云服务器对应的文件协议。
我的云服务器是SFTP文件协议,就以SFTP为例。
在“1”位置填写云服务器公网IP地址;
在“2”位置填写云服务器开放的端口号;
在“3”位置填写登陆云服务器用户名;
在“4”位置填写云服务器登陆密码;
在“5”位置填写你的项目根目录在云服务器上的地址。
填写完毕后点击“Test Connection”测试和云服务器的连接。
如果弹出这样的提示框,说明PyCharm已经可以连接云服务器了!
然后进入“Mappings”选项配置,检查一些地址映射的配置。
因为我们在前面Root path里面已经填写了项目的根目录地址,所以这里就不用再做其他的配置了,在“Deployment path”和“Web path”里填一个“/”即可。
为了使本地的Python解释器和云服务器的Python解释器一致,接下来我们配置Python解释器。
打开“Setting”找到“Project Interpreter”,点击红色框中的小齿轮,点击“show all”,打开下图界面。
然后点击“+”号添加一个新的Python解释器
为了和云服务器的Python解释器一致,选择“SSH Interpreter”。
在“1”位置填写云服务器公网IP地址;
在“2”位置填写云服务器开放的端口号;
在“3”位置填写登陆云服务器用户名。
填写完后,点击“Next”。
输入密码后点击“Next”。
这里默认红框中是勾选的,我们取消勾选,因为我们要用刚刚在配置连接的时候配置的地址,这里就不用它的默认地址。
这样我们就完成了Python解释器的配置,我们把本地项目的解释器改成这个解释器,就可以让本地使用云服务器的Python解释器了。
现在配置完毕后,我们来检查一下本地项目和云服务器上的项目目录。
可以看到,本地项目目录下有“init.py”文件;
云服务器项目目录下没有“init.py”文件。
点击“Upload to xxx”,将本地项目目录下的“init.py”文件上传至服务器。
可以看到,“init.py”代码文件成功上传到云服务器项目目录下了。
接着,在本地项目目录下创建一个和云服务器项目目录下同名的“hello.py”文件。
可以看到,本地项目的“hello.py”里面是空的,云服务器里的“hello.py”是有内容的。
点击“Download from xxx”,将云服务器里的“hello.py”下载到本地项目目录下。
下载完成后,可以看到云服务器上的“hello.py”覆盖到本地项目了。
现在我在本地对代码进行改动,改动完后点击“Sync with Deployed to xxx”。
会弹出这样一个窗口,左下方是本地改动后的代码,右下方是云服务器上的代码。
“1”按钮是只同步当前代码文件;
“2”按钮是同步所有代码文件(当有多个代码文件的时候慎用)。
完成同步后,看到云服务器上的代码和本地的代码一致了。
通过PyCharm的这些功能,我们完全可以在本地很方便地调试云服务器上的Python项目。
5 如何使用图形桌面访问云服务器
这里绝对是大家最喜欢的东西,因为绝大多数同学不喜欢操作命令行,有图形桌面点起来才香!
首先我们先对云服务器做一些配置。
第一步:在云服务器上安装vncserver
sudo apt-get update
apt-get install vnc4server
第二步:在云服务器上安装桌面软件
apt-get install ubuntu-desktop
第三步:启动vncserver
vncserver :1
这里会让你设置一个密码(最长只能8位),这个密码需要记住,待会儿远程连接的时候要用到。
确认密码以后,看到类似红色框中的“New xxx”的字样就说明vncserver启动成功了。
然后我们关闭刚才启动的vncserver做进一步配置:
vncserver -kill :1
第四步:修改vncserver的启动文件
vi ~/.vnc/xstartup
打开“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 &
# x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# x-window-manager &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
第五步:再次启动vncserver
vncserver :1
第六步:查看vcnserver服务使用的端口号
ps -ef | grep vnc
从返回可以看到,服务使用了TCP 5901端口。
第七步:开放vncserver相应的端口
以阿里云服务器为例,开放端口5901。授权对象这里可以指定某段IP可访问,也可以像我这样设置所有IP可访问。
到这里,云服务器上面的配置基本上是结束了。
接下来是本地PC上的操作。
需要在本地PC上下载一个软件:VNC Viewer
安装完成后,打开VNC Viewer,在红色框中输入“IP:5901”,回车。
弹出这个提示框,告诉你这样的连接是没有加密的。所以使用这种方法,是有风险的。
切忌进行涉密操作,任何涉密的数据、操作都不应该接入网络!!!
在确保没有任何涉密数据和操作的前提下,点击“Continue”,然后输入刚才第一次启动vncserver时设置的密码。
大功告成!!!
最后来个彩蛋,这样的图形桌面是不是更好看一点~
如有误,欢迎批评指正。
参考资料
[1] @dk_0228, 阿里云ECS,Ubuntu Server 16.04安装图形界面远程控制
[2] @dale丶无双, 本地Windows远程连接阿里云服务器图形界面(使用vnc viewer)
联系我
如有疑问,邮件是最快联系我的方式:wm_chen@yeah.net