【Linux 之二】Ubuntu下开发环境的搭建(NFS \ SSH \ FTP \ Smba \ ...)

news2024/10/4 20:25:29

  目前正在进行Linux相关项目的开发,而我的Linux开发是在Ubuntu(版本20.04)下进行的,为此需要搭建很多Linux相关的开发环境,方便工作的进行。这里主要是对各种开发环境的搭建做一个总结记录,方便后面查阅,也方便在Linux开发之路上遇到困难的各位同仁。好了,废话不多说,直接罗列各种开发环境的安装步骤等。

FTP

  在开发过程中可能会频繁的在 Windows 与 Ubuntu 下进行文件传输,比如在 Windows 下进行代码的编写,然后将编写好的代码传递到 Ubuntu 下进行编译,这时我们可以使用 FTP 服务实现 Windows 与 Ubuntu 之间的文件互传(当然也可以使用Samba)。

FTP服务端(Ubuntu)

  1. 打开 Ubuntu 的一个终端窗口,然后执行如下命令安装 FTP 服务:
sudo apt-get install vsftpd
  1. FTP 服务安装完成之后,打开 vsftpd.conf 文件,修改配置,如下:
sudo vi /etc/vsftpd.conf

打开后,修改如下两行:
在这里插入图片描述
5. 修改完成之后,保存退出,使用如下命令重启 FTP服务:

sudo /etc/init.d/vsftpd restart

至此,Ubuntu 上的 FTP 的 Server 已经开启。

FTP客户端(Windows)

  Windows 端的 FTP 客户端有很多,可以根据自己的爱好选一个即可。我使用的 FTP 客户端是 XFTP。关于FTP客户端的介绍,可以参考这篇文章:https://zhuanlan.zhihu.com/p/301653835。
在这里插入图片描述
在这里插入图片描述

NFS

  在Linux开发时,一般都绕不过网络挂载(NFS),通过 NFS 可以大大提高我们开发调试的效率,为此必须首先在Ubuntu上安装并开启 NFS 服务,使用如下命令安装 NFS 服务。

  1. 安装 NFS 服务器
sudo apt-get install nfs-kernel-server rpcbind 

  安装nfs-kernel-server时,apt会自动安装nfs-common和portmap

  1. 创建 NFS 共享目录
    在自己想要设置的路径下创建共享文件夹,例如我的共享文件夹为:
jack-virtual-machine:~/linux_imx6ull/nfs$ pwd
/home/jack/linux_imx6ull/nfs
  1. 修改共享目录的权限
jack@jack-virtual-machine:~/linux_imx6ull/nfs$ chmod 777 . -R
  1. 修改配置文件 (/etc/exports)
    打开配置文件(sudo vi /etc/exports),在最后一行添加自己的共享目录,如下:
/home/jack/linux_imx6ull/nfs *(rw,async,no_root_squash)
  • /home/jack/linux_imx6ull/nfs:nfs服务端的共享目录,需要通过nfs挂载的文件都放在此目录下即可
  • * :表示所有网段都可以网段都可以访问(也可以指定具体的IP)
  • rw:指定挂载共享目录的客户端具有读写权限
  • sync:资料同步写入内存或者硬盘
  • no_root_squash:客户机用root访问共享文件夹时,不映射root用户
  1. 修改配置文件(/etc/default/nfs-kernel-server )
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

在这里插入图片描述
  Ubuntu18.04之后的版本应该是只支持 nfs3 和 nfs4,而uboot中默认使用的是 nfs2,所以为了使uboot的nfs命令正常使用,必须添加上述的一句话,使Ubuntu兼容 2、3、4版本。

  1. 重启 NFS 服务
sudo /etc/init.d/nfs-kernel-server restart
  1. 验证 NFS 是否配置成功
$ sudo mount -t nfs 192.168.100.113:/home/jack/linux_imx6ull/nfs /mnt
$ showmount -e
Export list for jack-virtual-machine:
/home/jack/linux_imx6ull/nfs *
$ sudo umount /mnt
  1. sudo mount -t nfs 192.168.100.113:/home/jack/linux_imx6ull/nfs /mnt

    • 192.168.100.113:共享 NFS 目录的主机地址(若为本机挂载,可以写为 localhost)
    • /home/jack/linux_imx6ull/nfs:共享 NFS 的路径
    • /mnt:挂载点(可以任意指定)
  2. showmount -e:显示配置的共享目录(该命令其实是读取了 /etc/exports 文件进行解析的)

  3. sudo umount /mnt:取消挂载

SSH

  开启 SSH 服务之后,我们可以在Windows下使用终端软件登录到 Ubuntu,比如使用Xshell 等,在 Ubuntu 下使用如下命令开启 SSH 服务。
4. 通过如下命令查询是否已安装 SSH
通过如下命令查询是否已安装 SSH,若出现openssh-client和openss-server,则说明系统已经安装 OpenSSH。

$ dpkg --list | grep ssh
ii  libssh-4:amd64                             0.9.3-2ubuntu2.3                    amd64        tiny C SSH library (OpenSSL flavor)
ii  openssh-client                             1:8.2p1-4ubuntu0.9                  amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                             1:8.2p1-4ubuntu0.9                  amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server                        1:8.2p1-4ubuntu0.9                  amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines
ii  ssh-import-id                              5.10-0ubuntu1                       all          securely retrieve an SSH public key and install it locally
  1. 安装 SSH
    在Ubuntu下可以使用如下命令安装SSH:
sudo apt-get install ssh
  1. 查看SSH服务端是否已启动
$ ps -auxf | grep ssh
root         891  0.0  0.1  12192  7148 ?        Ss   9月21   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root       20934  0.0  0.2  14004  8848 ?        Ss   9月21   0:00  \_ sshd: jack [priv]
jack       21012  0.0  0.1  14004  6044 ?        S    9月21   0:00      \_ sshd: jack@notty
jack       21013  0.0  0.1   5892  4104 ?        Ss   9月21   0:00          \_ /usr/lib/openssh/sftp-server
jack        1609  0.0  0.0   6040   100 ?        Ss   9月21   0:00              \_ /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
jack       23312  0.0  0.0  17672   716 pts/1    S+   13:49   0:00  |       \_ grep --color=auto ssh

交叉编译工具链

  1. 在Ubuntu上创建一个目录,用于存放“交叉编译工具链”,我创建的目录为:/usr/local/arm
  2. 将交叉编译工具链复制到目录(/usr/local/arm)中,我的工具链为:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz;
  3. 解压
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

  解压完成后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf”的文件夹,该文件夹下就是我们的交叉编译工具链。

  1. 修改环境变量
//打开配置文件
sudo vi /etc/profile
// 在配置文件中添加如下一行内容
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

在这里插入图片描述

  1. 重启Ubuntu系统,交叉编译工具链就安装成功了。
  2. 安装其它相关库
sudo apt-get install lsb-core lib32stdc++6
  1. 查询版本,验证是否安装成功
arm-linux-gnueabihf-gcc -v

在这里插入图片描述

samba

下面是 samba 服务器环境的搭建过程:

  1. sudo apt-get update
sudo apt-get update
  1. 安装 samba 服务器
sudo apt-get install samba samba-common
  1. 创建共享目录,并设置共享目录的权限
sudo mkdir samba 	// 创建完成之后,我的目录为 /home/jack/linux_imx6ull/samba
sudo chmod 777 . -R	// 将samba目录的权限修改为 777
  1. 修改配置文件
    打开配置文件(vi /etc/samba/smb.conf),并进行如下修改:
[myshare]
comment=my share directory
path=/home/jack/linux_imx6ull/samba
browseable=yes
public=yes
writable=yes

在这里插入图片描述

  1. 设置密码
$ sudo smbpasswd -a jack	// 添加一个用户,jack
New SMB password: 			// 创建一个密码
Retype new SMB password:	// 再次确认密码
Added user jack.			// jack用户添加成功
  1. 重启samba服务器
sudo service smbd restart
  1. 在Windows上执行win+R,输入Ubuntu的IP地址,如我的IP是192.168.100.113
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

彻底解决win11系统0x80070032

经过各种尝试,终于找到原因。第一个是电脑加密软件,第二个是需要的部分功能没有开启,第三个BIOS设置。个人觉得第三个不重要。 解决方法 笔记本型号 笔记本型号是Thinkpad T14 gen2。进入BIOS的按键是按住Enter键。 1、关闭山丽防水墙服务…

AI AIgents时代 - (四.) HuggingGPT MetaGPT

🟢 HuggingGPT HuggingGPT是一个多模型调用的 Agent 框架,利用 ChatGPT 作为任务规划器,根据每个模型的描述来选择 HuggingFace 平台上可用的模型,最后根据模型的执行结果生成总结性的响应。 这个项目目前已在 Github 上开源&am…

【暴力DP】CF1409 F

Problem - F - Codeforces 题意: 思路: 首先有个很明显的结论是:替换的字符一定是那两个字符之一 那么替换成哪个字符贡献更大不确定,因此考虑DP 因为有操作次数限制,直接把操作放进状态里 为了计算贡献&#xff…

Go语言高级特性解析与实践

1. 并发模型与goroutine Go语言以其强大的并发模型而闻名,它的核心机制是goroutine。goroutine是一种轻量级线程,由Go运行时负责调度。我们可以通过go关键字创建goroutine,而不需要像传统的线程编程那样关注底层的线程管理。 示例代码&…

Spring boot:解决@RequestBody失效问题:传入的实体类为NULL

1.问题描述 使用springboot写了一个controller类, 在使用postman测试用户注册功能的时候, 出现了传入实体类user,没有被读取的问题(即requestbody注解失效)。 2.解决方法 1.用户请求方式问题 在请求时&#xff0c…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

java框架-Springboot3-数据访问

整合SSM SpringSpringMVCMybatis 整合步骤 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

k8s master 是如何进行pod的调度的

Master 节点将 Pod 调度到指定的 Node 节点的原理 该工作由 kube-scheduler 来完成&#xff0c;整个调度过程通过执行一些列复杂的算法最终为每个 Pod 计算出一个最佳的目标 Node&#xff0c;该过程由 kube-scheduler 进程自动完成。常见的有轮询调度&#xff08;RR&#xff09…

用HTML、CSS和JavaScript制作的通用进制转换器

随着编程和计算机科学越来越受欢迎&#xff0c;我们经常需要进行进制转换。本文将介绍一个简洁、美观、适用于移动设备的进制转换工具&#xff0c;并详细讨论其实现。 目录 &#x1f30d; 用HTML、CSS和JavaScript制作的通用进制转换器 1.项目图片展示 2. 技术栈 3. 主要功…

Unity Bolt模块间通信

使用Bolt无代码设计开发的时候&#xff0c;我们不能简单的认为只需要一个FlowMachine就可以完成所有流程的开发。我们需要不同的模块进行拆分&#xff0c;以便更好的管理和协作。这就需要不同模块之间的通信处理。经过研究与使用&#xff0c;将常用的通信方式总结如下&#xff…

React中setState的原理及深层理解

1.为什么使用setState React并没有实现类似于Vue2中的Object.defineProperty或者Vue3中的Proxy的方式来监听数据的变化 我们必须通过setState来告知React数据已经发生了变化 setState方法是从Component中继承过来的。 2.setState异步更新 setState设计为异步&#xff0c;可…

23. 图论 - 图的由来和构成

文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…

【react】使用useEffect操作dom

简言 在学习react时&#xff0c;需要了一个需要在useEffect里操作dom的用法。 一般不推荐这么干&#xff0c;如果是函数组件在一渲染已挂载后立即需要操作dom绑定事件等可以参考下面解决方法。 描述 官网交错运动示例这个示例中&#xff0c;usePointerPosition() Hook 追踪当…

【前段基础入门之】=>初识 HTML

文章目录 前言HTML的详情简介HTML 发展史HTML 入门1. HTML 标签元素2. HTML标签属性3. HTML的标准结构 总结 前言 在整个前端开发中&#xff0c;必须掌握的技术栈为&#xff1a; HTML &#xff0c;CSS&#xff0c;JavaScript&#xff0c;它们三者&#xff0c;共同组成了前端开发…

华为云云耀云服务器L实例评测|认识redis未授权访问漏洞 漏洞的部分复现 设置连接密码 redis其他命令学习

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到过MySQL数据库被攻击的情况&#xff0c;数据丢失&#xff0c;还好我有几份备份&#xff0c;没有造成太大的损失。昨天收到华为云的邮箱提醒&#xff0c;我的redis数据库没有设置密码&…

MySQL高级语句 Part2(视图表 +存储过程+条件语句+循环语句)

这里写目录标题 一、视图表 create view1.1 视图表概述1.2 视图表能否修改&#xff1f;&#xff08;面试题&#xff09;1.3 基本语法1.3.1 创建1.3.2 查看1.3.3 删除 1.4 通过视图表求无交集值 二、case语句三、空值(null) 和 无值( ) 的区别四、正则表达式4.1 基本语法和匹配模…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止&#xff0c;我们学习了机器人学&#xff0c;学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上&#xff0c;我们最终要做的&#xff0c;是一个手眼机器人系统。在这个系统里&#xff0c…

数据仓库整理

数仓 olap vs oltp OLTP主要用于支持日常的业务操作&#xff0c;如银行交易、电子商务等&#xff0c;强调数据的准确性、实时性和并发性。OLAP主要用于支持复杂的数据分析&#xff0c;如数据仓库、决策支持等&#xff0c;强调数据的维度、聚合和可视化。 将OLTP数据库的数据…

接入国家能源平台MQTT应用案例

一、项目介绍 随着国家对节能环保措施的力度不断加大&#xff0c;基于物联网技术搭建的国家能源平台在国家相关部门的建设下逐渐成熟。致力于利用实际能耗数据建立能效仿真模型&#xff0c;通过实时寻优运算&#xff0c;获得当前的最优化运行策略&#xff0c;并将控制指令下发…

从Langchain到ReAct,在大模型时代下全新的应用开发核心

简介&#xff1a; 什么是ReAct框架关于什么是langchain&#xff0c;可以参考&#xff1a;https://ata.alibaba-inc.com/articles/266839?spmata.23639420.0.0.1dea7536uD7yhh在使用langchain的过程中&#xff0c;大模型给人留下最深刻的印象无疑是Agent功能。大模型会自己分析…