最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用VSCode進(jìn)行遠(yuǎn)程Linux服務(wù)器、容器開發(fā),達(dá)到ide開發(fā)項(xiàng)目的效果(最新推薦)

 更新時(shí)間:2022年12月05日 11:12:43   作者:Sintol·D·Kevin  
最方便、最開始的開發(fā)方式當(dāng)然是在本地ide中,比如初學(xué)者在Windows電腦上使用pycharm來學(xué)習(xí)python、深度學(xué)習(xí),或者使用devc++、visual?studio等來編寫c++項(xiàng)目,在本地ide中,可以瀏覽文件夾、查看文本和圖片等,進(jìn)一步還可以運(yùn)行調(diào)試python、C++等項(xiàng)目

本文將介紹“局域網(wǎng)下遠(yuǎn)程ide式開發(fā)”、“公網(wǎng)下遠(yuǎn)程ide式開發(fā)”、“局域網(wǎng)下遠(yuǎn)程容器的ide式開發(fā)”、“公網(wǎng)下遠(yuǎn)程容器的ide式開發(fā)”這四種開發(fā)流程,讓你無論在工位上還是在家中,都可以像打開本地ide那樣進(jìn)行遠(yuǎn)程的項(xiàng)目開發(fā)。

0 本地ide式開發(fā)

最方便、最開始的開發(fā)方式當(dāng)然是在本地ide中,比如初學(xué)者在Windows電腦上使用pycharm來學(xué)習(xí)python、深度學(xué)習(xí),或者使用devc++、visual studio等來編寫c++項(xiàng)目。在本地ide中,可以瀏覽文件夾、查看文本和圖片等,進(jìn)一步還可以運(yùn)行調(diào)試python、C++等項(xiàng)目。這樣的開發(fā)過程稱為“ide式開發(fā)”,初學(xué)者會(huì)覺得這些都是理所當(dāng)然的。

1.0 局域網(wǎng)下遠(yuǎn)程終端開發(fā)

但是隨著能力的提升、需求的擴(kuò)大,我們需要使用Linux系統(tǒng)來進(jìn)行開發(fā),甚至是純服務(wù)器形式的linux,連顯示屏都沒有。此時(shí)我們會(huì)初步接觸ssh,連上linux服務(wù)器的終端,然后通過敲命令的方式來執(zhí)行一些程序的運(yùn)行,查看結(jié)果。注意只連終端是不可能進(jìn)行代碼編寫、調(diào)試等步驟的,更別說看圖片啥的。此時(shí)的做法應(yīng)為在本地機(jī)寫好代碼,再通過ftp傳輸?shù)椒?wù)器上運(yùn)行。不過這也算入門linux中的項(xiàng)目開發(fā)了。

1.1 局域網(wǎng)下遠(yuǎn)程ide式開發(fā)

但是這種方式太low了,就不能實(shí)現(xiàn)windows里ide式開發(fā)的效果嗎?可以的!借助強(qiáng)大的vscode的remote-ssh插件,同樣是ssh連接服務(wù)器的22端口,卻可以實(shí)現(xiàn)ide式開發(fā),這樣就可以愉快的點(diǎn)來點(diǎn)去和調(diào)試代碼了。想實(shí)現(xiàn)這個(gè)功能請(qǐng)搜索“vscode遠(yuǎn)程連接linux”,或“vscode remote-ssh連接linux”等教程。

在這個(gè)環(huán)節(jié),我們應(yīng)該對(duì)ssh的原理、公鑰私鑰的概念與使用有所了解,還需要了解sshd_config中各項(xiàng)配置的含義。

1.2 公網(wǎng)下遠(yuǎn)程ide式開發(fā)

再進(jìn)一步,我們會(huì)有居家辦公的需求,比如現(xiàn)在疫情比較頻繁,在家里沒有了公司wifi,脫離了局域網(wǎng)環(huán)境,我們是無法像以前那樣連接linux服務(wù)器的,因?yàn)閕p是內(nèi)網(wǎng)中的,而我們處在家中的話還去連那個(gè)ip,肯定就不對(duì)了。此時(shí)需要借助“端口轉(zhuǎn)發(fā)”,或者說“內(nèi)網(wǎng)穿透”工具來把處在公司內(nèi)網(wǎng)的linux服務(wù)器的22端口暴露在公網(wǎng)環(huán)境中。對(duì)于計(jì)算機(jī)網(wǎng)絡(luò)不太好的同學(xué)來說不論是理解還是實(shí)現(xiàn)這一功能都是比較困難的。

所謂內(nèi)網(wǎng)穿透,就是借助處在公網(wǎng)中的服務(wù)器作為中介,讓公司的linux服務(wù)器和家里的windows電腦都連接上公網(wǎng)服務(wù)器,windows向中介發(fā)送“sudo apt install vim”命令,中介就把這句話轉(zhuǎn)發(fā)給公司linux服務(wù)器,公司linux服務(wù)器就會(huì)執(zhí)行這個(gè)命令,然后返回“successfully installed vim.”信息給中介,然后中介再把這條信息傳遞給windows電腦,于是整體效果就是win端輸入sudo apt install vim,接著顯示successfully installed vim.這就是內(nèi)網(wǎng)穿透。在內(nèi)網(wǎng)穿透基礎(chǔ)上,通過vscode的remote-ssh配置一下,就能實(shí)現(xiàn)公網(wǎng)下遠(yuǎn)程ide式開發(fā)。

內(nèi)網(wǎng)穿透要注意的細(xì)節(jié)是比較多的,為了方便大家實(shí)現(xiàn),也為了以后自己在新設(shè)備上復(fù)現(xiàn),我做一些詳細(xì)的說明。

整個(gè)內(nèi)網(wǎng)穿透流程如下

在這里插入圖片描述

在具體實(shí)施上,有3個(gè)環(huán)節(jié)要做:
1、購(gòu)買并設(shè)置好擁有公網(wǎng)ip的阿里云服務(wù)器,在控制臺(tái)的安全組中(并非在服務(wù)器內(nèi)部,而是在阿里云控制臺(tái)中)開放相應(yīng)端口
2、在阿里云服務(wù)器上安裝ssh, 安裝frp,完成frps.ini的配置,開啟防火墻,開放相應(yīng)端口,frps服務(wù)添加至自啟動(dòng)并開啟
3、在公司內(nèi)網(wǎng)服務(wù)器上安裝frp,完成frpc.ini的配置,開放相應(yīng)端口,開啟ssh,frpc服務(wù)添加至自啟動(dòng)并開啟。
具體說明:

1、購(gòu)買一個(gè)阿里云服務(wù)器

我買的是1核2g cpu,1Mbps帶寬,100G容量的ecs.n4.small服務(wù)器,1年84元,服務(wù)器會(huì)提供一個(gè)公網(wǎng)ip(無論在哪個(gè)網(wǎng)絡(luò)環(huán)境下都可以憑借公網(wǎng)ip訪問云服務(wù)器,假設(shè)此ip為89.67.45.200)。在阿里云控制臺(tái)的安全組的出和入里面添加服務(wù)端的反向代理監(jiān)聽端口(7000),映射端口(6000),為了后續(xù)的別的設(shè)備的端口轉(zhuǎn)發(fā),可以多開幾個(gè)端口
?

在這里插入圖片描述

2、阿里云服務(wù)器終端內(nèi)

2.1、先開放端口

具體可參考這里

apt install openssh-server
systemctl start firewalld
firewall-cmd --add-port=7000/tcp --permanent
firewall-cmd --add-port=6000/tcp --permanent
firewall-cmd --add-port=6001/tcp --permanent
firewall-cmd --reload

2.2、接下來配置frp

mkdir /root/apps && cd /root/apps
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
tar -xvf frp_0.34.3_linux_amd64.tar.gz
cd frp_0.34.3_linux_amd64

將frps.ini內(nèi)容改為

[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = 1234

frps表示server端的frp,同理frpc表示client端的frp。
其中bind_port表示監(jiān)聽端口。一個(gè)中介服務(wù)器可以同時(shí)完成多個(gè)設(shè)備的端口轉(zhuǎn)發(fā),但是監(jiān)聽端口只能有一個(gè)。
token表示密碼,別的設(shè)備想讓中介轉(zhuǎn)發(fā)端口,得有這個(gè)密碼

2.3、設(shè)置自啟動(dòng)

將sysytemd下的frps.service內(nèi)容改為

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/root/apps/frp_0.34.3_linux_amd64/frps -c /root/apps/frp_0.34.3_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target

然后執(zhí)行

cp ./systemd/frps.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable frps
systemctl start frps

這樣的話中介就配置好了

3、內(nèi)網(wǎng)linux服務(wù)器配置

apt install openssh-server
mkdir /home/user/apps && cd /home/user/apps
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
tar -xvf frp_0.34.3_linux_amd64.tar.gz
cd frp_0.34.3_linux_amd64

將frpc.ini內(nèi)容改為

[common]
server_addr = 89.67.45.200
server_port = 7000
token=1234

[linux_in_company]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

server_addr表示中介的公網(wǎng)ip,server_port 是中介的監(jiān)聽端口,linux_in_company是這臺(tái)linux服務(wù)器在中介那里的命名,如果有多個(gè)設(shè)備要用中介來轉(zhuǎn)發(fā)端口,這個(gè)命名不可以重復(fù)
local_port 表示Linux服務(wù)器中要轉(zhuǎn)發(fā)出去的端口,22表示終端
remote_port 是中介上的映射端口。win電腦訪問中介的6000端口就能起到訪問Linux服務(wù)器22端口的效果
然后做自啟動(dòng),修改systemd下的frpc.service

[Unit]
Description=Frp Client Service
After=network.target
Wants=network.target

[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/home/user/apps/frp_0.34.3_linux_amd64/frpc -c /home/user/apps/frp_0.34.3_linux_amd64/frpc.ini
ExecReload=/home/user/apps/frp_0.34.3_linux_amd64/frpc reload -c /home/user/apps/frp_0.34.3_linux_amd64/frpc.ini

[Install]
WantedBy=multi-user.target

cp ./systemd/frpc.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable frpc
systemctl start frpc

4、Win端ssh連接中介

到這一步就很簡(jiǎn)單了。
ssh user@89.67.45.200 -p 6000即可,想登root就改成ssh root@89.67.45.200 -p 6000,后面相應(yīng)的輸root的密碼即可。有時(shí)記得sudo的密碼卻忘了su的密碼咋整?sudo passwd root重置root密碼即可
此外,還可以通過密鑰對(duì)來進(jìn)行免密登陸,這里不做贅述

4.1 局域網(wǎng)下遠(yuǎn)程容器的ide式開發(fā)

隨著能力的進(jìn)一步提升,我們不得不面臨越來越困難、復(fù)雜的環(huán)境配置過程,比如cuda,tesnorrt的安裝與更換版本等。很多時(shí)候,目的是C,但是為了做C要先把A和B這兩個(gè)配置環(huán)境的環(huán)節(jié)給踩一遍,隨著這種情況的增多,我們就會(huì)發(fā)現(xiàn)原先簡(jiǎn)單的linux服務(wù)器變得越來越龐大復(fù)雜,里面配置了各種各樣的環(huán)境,復(fù)雜到,嘗試更新顯卡驅(qū)動(dòng)失敗了,導(dǎo)致很多東西都得跟著完蛋,最后連pytorch模型都跑不起來。
所以,我們直接在服務(wù)器本體上進(jìn)行各種環(huán)境的配置與項(xiàng)目的開發(fā)有兩個(gè)缺點(diǎn):其一是耗時(shí)間,有的東西的確沒必要搞這么清楚,如果有現(xiàn)成的直接用當(dāng)然最好;其二是環(huán)境間容易相互影響產(chǎn)生依賴,一個(gè)出問題了其他都得完蛋。
在這種問題的驅(qū)動(dòng)下,容器內(nèi)的項(xiàng)目開發(fā)流程應(yīng)運(yùn)而生:我們打開Linux服務(wù)器,并不直接在其上面進(jìn)行環(huán)境配置與代碼編寫調(diào)試,而是再在linux中創(chuàng)建容器并進(jìn)入,在容器中去進(jìn)行開發(fā)。一進(jìn)容器,各種需要的環(huán)境已經(jīng)為你準(zhǔn)備好了,比如英偉達(dá)官方的pytorch容器,里面就配好了cuda,cudnn,pytorch,tensorrt等等,這就為我們節(jié)省了大量寶貴的時(shí)間。再者,在容器里面不管你怎么折騰,只要?jiǎng)e把掛載文件夾里的東西亂刪,那都沒事,絲毫不影響容器外部的linux服務(wù)器。不小心把容器搞壞了,再run一個(gè),一切照常。
而想要實(shí)現(xiàn)遠(yuǎn)程容器的ide式開發(fā)也很簡(jiǎn)單,只要在創(chuàng)建容器時(shí)增加端口映射即可,比如docker run … -p 6666:22 …,然后在容器中安裝好ssh,開啟服務(wù),這樣的話訪問linux服務(wù)器(稱為host)中的6666端口就等同于訪問容器的22端口了。
所以只需把“1.1 局域網(wǎng)下遠(yuǎn)程ide式開發(fā)”中的ssh指令的用戶名改為root,端口改為6666,即可在vscode中通過局域網(wǎng)來實(shí)現(xiàn)遠(yuǎn)程容器的ide式開發(fā)。

4.2 公網(wǎng)下遠(yuǎn)程容器的ide式開發(fā)

有了“1.2 公網(wǎng)下遠(yuǎn)程ide式開發(fā)”和“2.1 局域網(wǎng)下遠(yuǎn)程容器的ide式開發(fā)”的基礎(chǔ),公網(wǎng)下遠(yuǎn)程容器的ide式開發(fā)就變得非常簡(jiǎn)單:在公司linux服務(wù)器中的frpc.ini中增加一個(gè)端口轉(zhuǎn)發(fā)請(qǐng)求,把6666端口轉(zhuǎn)發(fā)到中介的6001端口,這樣的話ssh root@89.67.45.200 -p 6001就會(huì)先轉(zhuǎn)到linux服務(wù)器的6666端口,再轉(zhuǎn)到容器的22端口,成功在家中進(jìn)行公司服務(wù)器中容器的ide開發(fā)

不過要注意,ssh連之前要先在linux服務(wù)器中運(yùn)行該容器,并通過/etc/init.d/ssh start開啟ssh服務(wù)。這個(gè)環(huán)節(jié)可以使用容器的初始腳本來完成,首先在linux服務(wù)器上找個(gè)地方寫一個(gè)腳本~/code/start.sh

#! /bin/bash
if [ -f "/etc/init.d/ssh" ]; then
    echo "ssh OK"
    /etc/init.d/ssh start
else
    echo "ssh not installed. Start intallation."
    /code/install_ssh.sh
fi

/bin/bash

然后chmod 777 ~/code/start.sh

其中安裝ssh的腳本如下,沒個(gè)容器情況不同,所以僅供參考

#! /bin/bash
cd /
echo -e "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse\ndeb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse\ndeb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse\ndeb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse\ndeb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse\ndeb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse\ndeb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse\ndeb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse\ndeb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse\ndeb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse\n" >> sources.list
cp sources.list /etc/apt/sources.list
apt update
apt install -y --allow-downgrades openssh-client=1:7.2p2-4ubuntu2.10
apt install -y openssh-server
echo "ssh installed. Now you need to configure it."

然后chmod 777 ~/code/install_ssh.sh

接下來創(chuàng)建容器!

docker run --gpus all -it -p 6666:22 --name trt -v ~/code:/code nvcr.io/nvidia/tensorrt:21.10-py3 /bin/bash /code/start.sh

我來詳細(xì)解讀一下這條指令:

run就是從鏡像創(chuàng)建容器,–gpus all就是把host的所有g(shù)pu都開放使用權(quán)利,-it就是以交互模式運(yùn)行容器并為其分配一個(gè)終端命令行,-p 6666:22就是把容器的終端端口22映射到host的6666端口,–name trt就是給這個(gè)容器命名為trt,-v ~ /code:/code就是把host的~/code文件夾掛載到容器中的/code文件夾。nvcr.io/nvidia/tensorrt:21.10-py3就是鏡像的名字,/bin/bash /code/start.sh表示一創(chuàng)建容器就用bash執(zhí)行這條start.sh腳本,而且start.sh腳本末尾還有一行“/bin/bash”就是說執(zhí)行完安裝或開啟ssh腳本后,執(zhí)行bash,留著終端這個(gè)程序,不然容器會(huì)自動(dòng)退出。

這樣就可以做到一開啟容器,就能自動(dòng)開啟ssh啦

到此這篇關(guān)于利用VSCode進(jìn)行遠(yuǎn)程Linux服務(wù)器、容器開發(fā),達(dá)到ide開發(fā)項(xiàng)目的效果的文章就介紹到這了,更多相關(guān)VSCode遠(yuǎn)程Linux服務(wù)器開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • CentOS 7下配置ntp服務(wù)的方法教程

    CentOS 7下配置ntp服務(wù)的方法教程

    網(wǎng)絡(luò)時(shí)間協(xié)議(NTP)用來同步網(wǎng)絡(luò)上不同主機(jī)的系統(tǒng)時(shí)間。你管理的所有主機(jī)都可以和一個(gè)指定的被稱為 NTP 服務(wù)器的時(shí)間服務(wù)器同步它們的時(shí)間。這篇文章主要給大家介紹了在CentOS 7下配置ntp服務(wù)并開啟開機(jī)自動(dòng)啟動(dòng)的方法教程,需要的朋友可以參考下。
    2017-05-05
  • zabbix進(jìn)行數(shù)據(jù)庫(kù)備份以及表分區(qū)的方法

    zabbix進(jìn)行數(shù)據(jù)庫(kù)備份以及表分區(qū)的方法

    這篇文章主要介紹了zabbix進(jìn)行數(shù)據(jù)庫(kù)備份以及表分區(qū)的方法,需要的朋友可以參考下
    2015-10-10
  • 教你使用Apache搭建Http下載服務(wù)器

    教你使用Apache搭建Http下載服務(wù)器

    這篇文章主要介紹了使用Apache搭建Http下載服務(wù)器的詳細(xì)過程,Apache2默認(rèn)采用的是80端口號(hào),因此直接通過公網(wǎng)ip或域名就能訪問,需要的朋友可以參考下
    2022-10-10
  • Linux中nohup與&的用法和區(qū)別詳解

    Linux中nohup與&的用法和區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于Linux中nohup與&的用法和區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Linux中的CPU實(shí)現(xiàn)上下文切換

    Linux中的CPU實(shí)現(xiàn)上下文切換

    這篇文章主要介紹了Linux中的CPU實(shí)現(xiàn)上下文切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Linux下制作給ARM開發(fā)板使用的文件系統(tǒng)

    Linux下制作給ARM開發(fā)板使用的文件系統(tǒng)

    今天小編就為大家分享一篇關(guān)于Linux下制作給ARM開發(fā)板使用的文件系統(tǒng),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳解Linux Socket編程(不限Linux)

    詳解Linux Socket編程(不限Linux)

    本篇文章主要介紹了Linux Socket編程,網(wǎng)絡(luò)之間的通信全靠Socket,詳細(xì)的介紹了Socket,有興趣的同學(xué)可以了解一下。
    2016-12-12
  • 詳解linux lcd驅(qū)動(dòng)編寫

    詳解linux lcd驅(qū)動(dòng)編寫

    這篇文章主要介紹了詳解linux lcd驅(qū)動(dòng)編寫,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • linux命令詳解date使用方法(計(jì)算母親節(jié)和父親節(jié)日期腳本示例)

    linux命令詳解date使用方法(計(jì)算母親節(jié)和父親節(jié)日期腳本示例)

    date命令可以用來顯示和修改系統(tǒng)日期時(shí)間,本文對(duì)其做了詳細(xì)說明,最近提供計(jì)算指定年份的母親節(jié)和父親節(jié)的日期腳本示例,大家參考使用吧
    2013-12-12
  • Tomcat中的catalina.bat原理詳細(xì)解析

    Tomcat中的catalina.bat原理詳細(xì)解析

    這篇文章主要給大家詳細(xì)介紹了關(guān)于Tomcat中catalina.bat的原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2017-08-08

最新評(píng)論

马尔康县| 乐安县| 蚌埠市| 汪清县| 昔阳县| 酉阳| 义马市| 会泽县| 武清区| 宁阳县| 察雅县| 东方市| 密云县| 灌南县| 兴安县| 饶平县| 晋宁县| 志丹县| 甘泉县| 鹤庆县| 扬中市| 驻马店市| 成都市| 昭苏县| 乐亭县| 积石山| 秦皇岛市| 东海县| 达日县| 龙州县| 东至县| 普陀区| 南汇区| 大兴区| 永川市| 察隅县| 凤山县| 古交市| 南召县| 台东市| 项城市|