VPS(Virtual Private Server)是一種虛擬化技術,可以將一臺物理服務器分成多個虛擬服務器,每個虛擬服務器都有獨立的操作系統和資源,相互之間互不影響。VPS可以提供類似于獨立服務器的功能,但價格更便宜,適合中小企業和個人用戶使用。VPS可以用于網站托管、應用程序部署、游戲服務器、數據備份等各種場景。
國內常見的VPS服務提供商
阿里云-計算,為了無法計算的價值 (aliyun.com)
騰訊云-產業智變·云啟未來 - 騰訊 (tencent.com)
華為云-共建智能世界云底座- (huaweicloud.com)
總的來說,根據自己的需求進行選擇
PS:圖為阿里云實例創建界面截圖
我個人習慣使用 Ubuntu,版本選擇最新版即可
有些會提供自動安裝指定應用的服務器,如果單純只是運行指定應用服務,那么可以選擇,個人覺得沒有必要
一般選擇基礎操作系統,然后所有的應用都是可以自己手動安裝的
1.SSH服務允許root登錄
# 編輯SSH服務配置文件
vim /etc/ssh/sshd_config
# 添加以下內容,允許root登錄
PermitRootLogin yes
# 重啟SSH服務
systemctl restart ssh
2.SSH登錄工具
WindTerm、MobaXterm
使用SSH連接工具,連接VPS,一般SSH連接工具需要我們輸入以下三個部分的內容:
cat /etc/apt/sources.list
一般國內VPS,都默認配置了國內鏡像源,因此無需進行配置
# 更新源
apt update
如果默認不是國內鏡像源,可以采用以下國內APT軟件源:
Ubuntu 軟件倉庫(tsinghua.edu.cn)
Ubuntu鏡像(aliyun.com)
Ubuntu 源使用幫助(ustc.edu.cn)
注意:修改完軟件源后需要執行apt update更新軟件源
安全組是一種虛擬防火墻,具備有狀態的數據包過濾功能,用于設置云服務器、負載均衡、云數據庫等實例的網絡訪問控制,控制實例級別的出入流量,是重要的網絡安全隔離手段。
可以通過配置安全組規則,允許或禁止安全組內的實例的出流量和入流量。
阿里云添加安全組規則
騰訊云添加安全組規則
華為云添加安全組規則
建議:學習階段,可以把安全組規則限制放開,允許所有主機對VPS所有端口的訪問,避免操作過程中出現因為安全組規則問題導致操作無法實現
注意:當你碰到VPS服務端口無法訪問時,記得檢查以下安全組規則是否允許訪問對應端口
在Ubuntu上安裝Docker引擎
1.運行以下命令卸載所有沖突的包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
2.添加Docker的官方GPG密鑰
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
3.將存儲庫添加到APT源
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
4.安裝 Docker 軟件包
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5.驗證 Docker 是否成功安裝
docker --version
Metasploit 安裝
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
官方提供的安裝方式十分緩慢
推薦采用如下方式
1.添加Kali軟件源
cat >> /etc/apt/sources.list << EOF
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
EOF
2.更新軟件源
apt update
出現如下錯誤:
解決方法:
wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add
3.安裝
apt install metasploit-framework
安裝過程中如果出現如下問題:
執行如下命令:
apt --fix-broken install
apt install metasploit-framework
系統自帶python3
python3 -V
1.安裝miniconda3
通過安裝 Miniconda3,用戶可以方便地創建自己的 Python 開發環境,而無需一次性安裝大量不必要的軟件包。同時,通過 Conda 包管理器,用戶可以輕松地安裝、更新和管理 Python 包及其依賴項。
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /miniconda.sh
bash /miniconda.sh -b -p /miniconda3
rm -rf /miniconda.sh
將miniconda3添加到環境變量:
-bash
cat >> ~/.bashrc << EOF
export PATH=/miniconda3/bin:\$PATH
EOF
-zsh
cat >> ~/.zshrc << EOF
export PATH=/miniconda3/bin:\$PATH
EOF
2.啟動conda虛擬環境
conda activate
問題:執行后報錯
解決方法:
獲得環境路徑
conda info | grep -i 'base'
base environment : /miniconda3 (writable)
加載conda.sh腳本
source /miniconda3/etc/profile.d/conda.sh
-bash
cat >> ~/.bashrc << EOF
source /miniconda3/etc/profile.d/conda.sh
EOF
-zsh
cat >> ~/.zshrc << EOF
source /miniconda3/etc/profile.d/conda.sh
EOF
vim ~/.condarc
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
# 清除索引緩存
conda clean -i
# 查看配置
conda config --show
4.conda使用
# 列出所有Conda環境
conda env list
# 列出當前環境中安裝的所有包
conda list
# 創建一個名為 "py39" 的虛擬環境,并指定使用 Python 3.9 版本
conda create -n py39 python=3.9
# 激活名為 "py39" 的虛擬環境
conda activate py39
# 退出當前的虛擬環境
conda deactivate
# 在當前 Conda 環境中安裝 requests 包
conda install requests
# 刪除名為"py39"的虛擬環境以及其所有安裝的包
conda remove -n py39 --all
# 刪除指定虛擬環境中安裝的特定包
conda remove -n <env name> <package name>
OpenJDK 是一個開源的、免費的 Java 開發工具包,適合于大多數的開發需求。
OracleJDK 包含了一些額外的商業功能和工具,同時在商業環境下需要考慮相關的許可證費用。
OpenJDK 和 Oracle JDK 在基本的 Java 核心功能上是一樣的,但是在一些高級功能和工具上可能存在一些差異,例如一些特定于 Oracle 的工具和功能可能只包含在 Oracle JDK 中。
1.下載JDK安裝包
這里以JDK8u333為例:
下載JDK: https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
需要登錄Oracle賬號,Oracle賬號共享: http://bugmenot.com/view/oracle.com
下載后壓縮包名字為:jdk-8u333-linux-x64.tar.gz,上傳壓縮包到VPS
2.創建目錄解壓文件
sudo mkdir -p /usr/local/java
sudo cp jdk-8u333-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar -zxf jdk-8u333-linux-x64.tar.gz
3.通知系統Java的位置
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_333/bin/java" 1112
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_333/bin/javac" 1112
1.搜索軟件包列表中的OpenJDK
# 通過 apt-cache search 命令搜索包含 "java" 的軟件包列表
apt-cache search java | grep jdk
2.apt安裝openjdk-11
apt install openjdk-11-jdk
安裝后的路徑:/usr/lib/jvm/java-11-openjdk-amd64/bin/java
3.通知系統Java的位置
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-11-openjdk-amd64/bin/java" 1113
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-11-openjdk-amd64/bin/javac" 1113
# apt安裝openjdk-17
apt install openjdk-8-jre-headless
apt install openjdk-8-jdk-headless
update-alternatives:是一個在Debian和Ubuntu系統中用于管理系統中軟件的符號鏈接的命令。它允許系統管理員將系統中的軟件鏈接到不同的位置,從而允許在不同的軟件之間進行切換或選擇默認的軟件。
# 列出系統中所有可用的Java運行時環境的符號鏈接
update-alternatives --list java
# 選擇默認的Java運行時環境
update-alternatives --config java
https://go.dev/dl/
這里以版本go1.20.11、go1.21.4為例
wget https://go.dev/dl/go1.20.11.linux-amd64.tar.gz
mkdir -p /usr/local/go1.20
tar -C /usr/local/go1.20 -xzf go1.20.11.linux-amd64.tar.gz
wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
mkdir -p /usr/local/go1.21
tar -C /usr/local/go1.21 -xzf go1.21.4.linux-amd64.tar.gz
sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go1.21/go/bin/go" 1114
sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go1.20/go/bin/go" 1115
update-alternatives --list go
update-alternatives --config go
GOPATH 是 Go語言中使用的一個環境變量,它使用絕對路徑提供項目的工作目錄。
從 github 下載別人的包:
go get github.com/jmoiron/sqlx
這個包會下載到我們本地 GOPATH 目錄下的 src/github.com/jmoiron/sqlx
GOPATH 可以設置多個,其中,第一個將會是默認的包目錄,使用 go get 下載的包都會在第一個path中的src目錄下,使用 go install 時,在哪個GOPATH中找到了這個包,就會在哪個GOPATH下的bin目錄生成可執行文件
# 查看 Go 環境變量
go env
go env -w GO111MODULE=on
GO111MODULE 有三個值:off、on、auto(默認值)
go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。
go命令行會使用modules,而一點也不會去GOPATH目錄下查找。
執行如下命令生成 go.mod 文件
go mod init
go mod tidy
默認值,go 命令行將會根據當前目錄來決定是否啟用 module 功能。這種情況下可以分為兩種情形:
當 modules 功能啟用時,依賴包的存放位置變更為 $GOPATH/pkg ,允許同一個 package 多個版本并存,且多個項目可以共享緩存的 module。
1.使用了相對路徑:
import "./models"
報錯:build command-line-arguments: cannot find module for path /D/dev這里后面一堆本地路徑
這是因為在 go module 下 你源碼中 impot …/ 這樣的引入形式不支持了, 應該改成 impot 模塊名/ 。 這樣就ok了
2.使用結合了GOPATH的形式:
import "Go-Player/src/ademo/models"
于是我們把上面的import改成了結合GOPATH的如上形式
報錯:package Go-Player/src/ademo/models is not in GOROOT D:/development/go/src/GPlayer/src/ademo/models
3.徹底解決方法
用 go env -u 恢復初始設置,不再使用 go mod:
# 設置env
go env -w GO111MODULE=off
go env -w GO111MODULE=auto
# 取消設置env
go env -u GO111MODULE
區別在于,如果 GO111MODULE=on 或者auto,在go get下載包時候,會下載到GOPATH/pkg/mod,引入時也是同樣的從這個目錄開始。如果運行了上述命令,那么在go get下載包時候,會下載到 GOPATH/src 目錄下
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
go env -w GOPROXY=https://goproxy.io/,direct
bug: 啟動一個Bug報告
build: 編譯包和依賴,編譯指定源碼文件、代碼包以及它們的依賴包
clean: 移除對象文件和緩存文件,刪除執行其他命令時產生的一些文件和目錄
doc: 顯示包或符號的文檔,打印go語言程序實體的文檔
env: 打印Go環境變量信息
fix: 更新包以使用新的API,把指定代碼包的所有go語言源碼文件中的舊版本代碼修正為新版本代碼
fmt: 重新格式化包源代碼
generate: 通過處理源代碼生成Go文件
get: 將依賴項添加到當前模塊并安裝它們,從互聯網下載或更新代碼包及其依賴,并對它們進行編譯和安裝
install: 編譯并安裝包和依賴項,用于編譯并安裝指定的代碼包及它們的依賴包
list: 列出包或模塊
mod: 模塊維護
work: 工作區維護
run: 編譯并運行Go程序
test: 測試包,對go語言編寫的程序進行測試
tool: 運行指定的go工具
version: 打印Go版本
vet: 報告包中可能的錯誤,用于檢查go語言源碼中靜態錯誤的簡單工具
使用例子
首先,你需要選擇一個適合你編程需求的Linux發行版。Ubuntu、Fedora和Arch Linux是一些流行的選擇。例如,Ubuntu以其用戶友好性而聞名,適合初學者和專業開發者。
# 安裝Ubuntu
sudo apt update
sudo apt install ubuntu-desktop
安裝完成后,更新你的系統包,確保所有軟件都是最新的。
sudo apt update && sudo apt upgrade
安裝一些基礎的開發工具,如文本編輯器、版本控制系統等。
sudo apt install vim git
根據你的編程語言和個人偏好,選擇一個IDE或代碼編輯器。例如,Visual Studio Code是一個功能強大的編輯器,支持多種編程語言。
# 安裝Visual Studio Code
sudo snap install --classic code
根據你的項目需求,安裝相應的編程語言環境。例如,如果你是一個Python開發者,你需要安裝Python和pip。
sudo apt install python3 python3-pip
Git是目前最流行的版本控制系統。配置你的Git用戶名和郵箱,以便能夠提交代碼。
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
根據你的編程語言,安裝必要的構建工具和包管理器。例如,Node.js開發者可能需要npm或yarn。
# 使用nvm安裝Node.js和npm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
nvm install node # 安裝最新版本的Node.js
nvm use node
npm install -g npm # 更新npm
為了保持代碼的一致性和可讀性,使用代碼格式化工具,如Prettier或Black。
# 安裝Prettier
npm install -g prettier
根據你的應用需求,可能需要安裝數據庫系統。例如,PostgreSQL是一個廣泛使用的開源數據庫。
sudo apt install postgresql
為了能夠無密碼登錄到你的服務器或使用Git,配置SSH密鑰。
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
# 按照提示操作,將公鑰添加到相應的服務器或Git賬戶
Docker和Kubernetes等容器化工具可以幫助你創建一致的開發、測試和生產環境。
# 安裝Docker
sudo apt install docker.io
# 啟動Docker服務
sudo systemctl start docker
如果你在某些地區工作,可能需要配置網絡代理來訪問外部資源。
# 配置git代理
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
git config --global https.proxy https://proxyuser:proxypwd@proxy.server.com:8080
定期清理不再使用的依賴和包,以保持你的系統整潔。
# 清理Docker鏡像和容器
docker system prune -a
配置Linux編程環境是一個持續的過程,隨著項目需求的變化,你可能需要不斷調整和更新你的工具和設置。記住,最佳實踐是不斷學習和適應新技術,以保持你的開發環境現代化和高效。
網源碼下載編譯都不說了,網上都有
...:\osg_oe\osg365\include
...:\osg_oe\osg365\lib
【path】
...:\osg_oerdparty\bin
...:\osg_oe\osg365\bin
...:\osg_oe\osg365\share\OpenSceneGraph\bin
osg.lib
基本數據類庫,負責提供基本場景圖類,構建場景圖形節點,如節點類、狀態類、繪制類、向量和矩陣數學計算以及一般的數據類。
osgGA.lib
用于改寫界面事件庫
osgViewer.lib
視窗管理庫,可以集中各種窗體系統,提供OSG與各種GUI的結合。因此,它是跨平臺的3D管理窗口庫
osgUtil.lib
工具類庫,提供通用的公用類,用于操作場景圖形及內容,如更新、裁剪、遍歷、數據統計及場景圖的一些優化
osgDB.lib
數據讀寫庫,負責提供場景中數據的讀寫工作,提供了一個文件工具類
osgd.lib
osgGAd.lib
osgViewerd.lib
osgUtild.lib
osgDBd.lib
osgTextd.lib
#include <osg/Geode>
#include <osg/Geometry>
#include <osgViewer/Viewer>
int main()
{
// 創建一個幾何體
osg::ref_ptr<osg::Geometry> geometry=new osg::Geometry;
// 創建一個四邊面的頂點數據
osg::ref_ptr<osg::Vec3Array> vertices=new osg::Vec3Array;
vertices->push_back(osg::Vec3(-0.5f, -0.5f, 0.0f));
vertices->push_back(osg::Vec3(0.5f, -0.5f, 0.0f));
vertices->push_back(osg::Vec3(0.5f, 0.5f, 0.0f));
vertices->push_back(osg::Vec3(-0.5f, 0.5f, 0.0f));
geometry->setVertexArray(vertices);
// 創建一個四邊面的顏色數據
osg::ref_ptr<osg::Vec4Array> colors=new osg::Vec4Array;
colors->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f));
geometry->setColorArray(colors, osg::Array::BIND_OVERALL);
// 創建一個圖元集合
osg::ref_ptr<osg::DrawElementsUInt> primitiveSet=new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
primitiveSet->push_back(0);
primitiveSet->push_back(1);
primitiveSet->push_back(2);
primitiveSet->push_back(3);
geometry->addPrimitiveSet(primitiveSet);
// 創建一個Geode節點
osg::ref_ptr<osg::Geode> geode=new osg::Geode;
geode->addDrawable(geometry);
// 創建一個查看器并設置場景數據
osgViewer::Viewer viewer;
viewer.setSceneData(geode);
// 運行查看器
return viewer.run();
}