CentOS如何配置Rust的网络环境
导读:CentOS 配置 Rust 的网络环境 一 基础网络连通与开发工具 确认网络连通与 DNS 正常: 查看地址与路由:ip addr、ip route 测试外网连通:ping -c 4 8.8.8.8 测试 DNS 解析:nslooku...
CentOS 配置 Rust 的网络环境
一 基础网络连通与开发工具
- 确认网络连通与 DNS 正常:
- 查看地址与路由:
ip addr、ip route - 测试外网连通:
ping -c 4 8.8.8.8 - 测试 DNS 解析:
nslookup www.rust-lang.org
- 查看地址与路由:
- 安装编译与网络依赖(Rust 工具链需要本地链接器与基础开发工具):
- CentOS 7/8:
sudo yum install -y gcc make openssl-devel - CentOS Stream 8/9 或新系统:
sudo dnf install -y gcc make openssl-devel
- CentOS 7/8:
- 安装 Rust 工具链(rustup):
- 下载并安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - 使环境变量生效:
source "$HOME/.cargo/env" - 验证版本:
rustc -V、cargo -V
- 下载并安装:
- 说明:若系统缺少 gcc 等编译工具,Rust 的构建与部分网络依赖(如需要本地代码链接)会失败,需先行安装。
二 提升下载速度 国内镜像与代理
- 配置 rustup 国内镜像(安装/更新工具链更快):
- 写入全局环境(对所有用户生效):
echo 'export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static' | sudo tee -a /etc/profile echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup' | sudo tee -a /etc/profile source /etc/profile - 或仅当前用户生效:
~/.bashrc或~/.zshrc中添加相同两行并source对应文件。
- 写入全局环境(对所有用户生效):
- 配置 Cargo 国内索引镜像(依赖下载更快):
- 编辑或创建文件:
${ HOME} /.cargo/config[source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = 'ustc' [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" - 若遇到 Git 协议被限制,可改用 HTTPS 索引或将 Git 替换为 Cargo 稀疏索引(见下文排错)。
- 编辑或创建文件:
- 企业/受限网络使用代理:
- 设置环境变量(示例为 HTTP 代理):
export HTTP_PROXY=http://proxy.example.com:8080 export HTTPS_PROXY=http://proxy.example.com:8080 - 仅对 Cargo 生效可写入
${ HOME} /.cargo/config:[http] proxy = "http://proxy.example.com:8080" [https] proxy = "http://proxy.example.com:8080" - 取消代理:
unset HTTP_PROXY HTTPS_PROXY。
- 设置环境变量(示例为 HTTP 代理):
三 编写与运行一个网络程序
- 使用异步运行时 tokio 编写一个回显服务器(监听 8080 端口):
- 创建项目:
cargo new rust_echo & & cd rust_echo - 添加依赖
Cargo.toml:[dependencies] tokio = { version = "1", features = ["full"] } - 示例代码
src/main.rs:use tokio::net::{ TcpListener, TcpStream} ; use tokio::io::{ AsyncReadExt, AsyncWriteExt} ; #[tokio::main] async fn main() -> Result< (), Box< dyn std::error::Error> > { let listener = TcpListener::bind("0.0.0.0:8080").await?; println!("Server listening on 0.0.0.0:8080"); loop { let (mut socket, addr) = listener.accept().await?; println!("New connection from { :?} ", addr); tokio::spawn(async move { let mut buf = vec![0; 1024]; loop { match socket.read(& mut buf).await { Ok(0) => return, // 对端关闭 Ok(n) => { if let Err(e) = socket.write_all(& buf[..n]).await { eprintln!("write error: { :?} ", e); return; } } Err(e) => { eprintln!("read error: { :?} ", e); return; } } } } ); } } - 运行:
cargo run
- 创建项目:
- 本地或远程测试:
- 本机:
nc -vz 127.0.0.1 8080或telnet 127.0.0.1 8080 - 远程:
nc -vz < 服务器IP> 8080
- 本机:
- 防火墙放行(如启用 firewalld):
sudo firewall-cmd --add-port=8080/tcp --permanent & & sudo firewall-cmd --reload
- 说明:Rust 网络编程常用库包括 std::net(同步)、tokio、async-std 等;示例采用 tokio 异步模型。
四 常见问题与排错
- 索引拉取失败(git:// 被限制或 403/404):
- 将 USTC 索引改为 HTTPS(推荐):
[source.ustc] registry = "https://mirrors.ustc.edu.cn/crates.io-index" - 或使用 Cargo 稀疏索引(更快、更稳定):
[source.crates-io] registry = "sparse+https://github.com/rust-lang/crates.io-index"
- 将 USTC 索引改为 HTTPS(推荐):
- 代理环境下 Git/HTTPS 拉取异常:
- 为 Git 单独设置代理:
git config --global http.proxy http://proxy.example.com:8080 - 取消 Git 代理:
git config --global --unset http.proxy - 在 Cargo 配置
[http]/[https]段落设置代理(见上文)。
- 为 Git 单独设置代理:
- 构建时报错缺少链接器或头文件:
- 安装编译工具与开发库:
sudo yum/dnf install -y gcc make openssl-devel
- 安装编译工具与开发库:
- 端口未监听或被占用:
- 检查监听:
ss -ltnp | grep 8080 - 结束占用:
sudo kill -9 < PID>
- 检查监听:
- 环境变量未生效:
- 重新加载:
source "$HOME/.cargo/env"或重登会话。
- 重新加载:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS如何配置Rust的网络环境
本文地址: https://pptw.com/jishu/776696.html
