vmware虚拟机(ubuntu)远程开发golang、python环境安装

目录

  • 1. 下载vmware
  • 2. 下载ubuntu镜像
  • 3. 安装
  • 4. 做一些设置
    • 4.1 分辨率设置
    • 4.2 语言下载
    • 4.3 输入法设置
    • 4.4 时区设置
  • 5. 直接切换管理员权限
  • 6. 网络
    • 6.1 看ip
    • 6.2 ssh
  • 7. 本地编译器连接远程服务器
    • 7.1 创建远程部署的配置
    • 7.2 文件同步
    • 7.3 远程启动项目
  • 8. ubuntu安装golang环境
    • 8.1 安装golang
    • 8.2 启动golang项目
  • 9. 使用docker部署
    • 9.1 Dockerfile
    • 9.2 执行的命令
    • 9.3 一些参考的命令
  • 10. 安装python虚拟环境
    • 10.1 安装虚拟环境与生成requirements.txt
    • 10.2 部署flask项目bug解决

参考鱼皮的视频:服务器很贵?搞台虚拟机玩玩!保姆级 Linux 远程开发教程_哔哩哔哩_bilibili

1. 下载vmware

链接:https://www.vmware.com/cn/products/workstation-player.html
image.pngimage.png

2. 下载ubuntu镜像

链接:https://releases.ubuntu.com/
image.png
image.png

3. 安装

安装vmware,并将iso镜像安装完毕,等待完成。

4. 做一些设置

4.1 分辨率设置

按win键输入【resolution】
image.png

4.2 语言下载

按win键输入【language】,按照如下过程安装完毕之后,可以注销登录,重新登录系统就生效了。
image.png
image.png
image.png
image.png

4.3 输入法设置

按win键输入【language】
image.png
image.png

4.4 时区设置

按win键输入【time】
在这里插入图片描述

5. 直接切换管理员权限

sudo su - root

6. 网络

安装命令

# 更新安装包信息
sudo apt update# 比如如果使用ifconfig命令,可以先安装
apt install net-tools# 安装vim
apt install vim# 试试安装docker
apt install docker.io
docker -v
docker run hello-world# 安装java8环境
apt install openjdk-8-jdk
java -version
# 安装maven
apt install maven
mvn -v

6.1 看ip

如果win本地想连接虚拟机,先使用ifconfig查看ip,然后本地看看能不能ping通。
image.png

6.2 ssh

# 安装ssh
sudo apt-get install openssh-server# 使用命令查看ssh服务是否已经开启
ps -ef | grep ssh

image.png
然后远程就可以访问了
image.png

7. 本地编译器连接远程服务器

7.1 创建远程部署的配置

以Goland举例
image.png
image.png
image.png
image.png
image.png

7.2 文件同步


image.png
image.png
image.png
每次手动太麻烦了,点击自动同步
image.png
除此之外,可以做一些同步的设置(例如,可以设置如果删除本地文件,也删除远程文件)
image.png
image.png

7.3 远程启动项目

在本地编译器新建一个远程的终端,就可以直接用命令行启动项目了(注意:服务器需要安装响应的环境才行)
image.png

8. ubuntu安装golang环境

8.1 安装golang

golang安装的包都存在【$HOME/go/pkg】目录下.

# 先更新一下
sudo apt update# 方式1:安装golang,这种方式安装的版本太老了
sudo apt install golang
# 方式2:可以用这种方式,安装指定版本
wget https://golang.org/dl/go1.19.linux-amd64.tar.gz	# 这个连接失败,用下面这个
wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
tar -xvf go*.tar.gz
sudo mv go /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
source ~/.profile# 查看版本
go version# 设置代理(重要,不然go get 的时候总是失败)
go env -w GOPROXY=https://goproxy.io,direct# 卸载golang
sudo apt remove golang
sudo apt purge golang-go

8.2 启动golang项目

# build
go build liuyaohui.lyh/remoteProject# 运行
./remoteProject

9. 使用docker部署

9.1 Dockerfile

项目根目录下新建Dockerfile

# 使用官方的 Golang 镜像作为基础镜像
FROM golang:1.19# 镜像作者
MAINTAINER tdfxlyh# 设置工作目录
# 容器内创建 myproject 文件夹
ENV APP_HOME=/home/lyh/code/remoteProject
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME# 给golang设置代理
RUN go env -w GOPROXY=https://goproxy.io,direct# 将当前目录加入到工作目录中(. 表示当前目录)
ADD . $APP_HOME# 安装 MySQL 客户端
# RUN apt-get update && apt-get install -y mysql-client# 构建 Go 项目
RUN go build -o main# 暴露一个端口(如果你的应用需要)
EXPOSE 8080# 启动应用程序
CMD ["./remoteProject"]

9.2 执行的命令

# 1.进入项目根目录
# 2.打包成镜像
docker build -t remote-project-test .
# 3.登录dockerhub
docker login -u tdfxlyh
# 4.新建一个tag,名字必须跟你注册账号一样
docker tag remote-project-test tdfxlyh/remote-project-test:latest
# 5.推上去
docker push tdfxlyh/remote-project-test:latest# 远程服务器拉取
docker pull tdfxlyh/remote-project-test:latest
docker run -d -p 8080:8080 tdfxlyh/remote-project-test:latest

9.3 一些参考的命令

# 1.列出本地的镜像
docker images [OPTIONS]
# 2.删除某个镜像
docker rmi [-f] 镜像名字
# 3.查看容器
docker ps -n 15
# 4.启动已经停止运行的容器
docker start 容器ID(容器名)
# 5.重启容器
docker restart 容器ID(容器名)
# 6.停止容器
docker stop 容器ID(容器名)
# 7.强制停止容器
docker kill 容器ID(容器名)
# 8.删除已停止的容器
docker rm [-f] 容器ID(容器名)

10. 安装python虚拟环境

10.1 安装虚拟环境与生成requirements.txt

sudo apt update
# 安装环境
sudo apt install python3
# 安装pip
sudo apt install python3-pip
# 安装虚拟环境
sudo apt install python3-venv# 创建一个虚拟环境并激活 (尽量在项目的根目录下执行下面的命令)
sudo python3 -m venv venv
source venv/bin/activate
# 在有管理员权限的地方执行
pip install -r requirements.txt# 项目生成requirements.txt文件
# 方式一:在有git和虚拟环境的命令行下执行
pip freeze > requirements.txt
# 方式二:推荐使用这个,需要在虚拟环境下执行
pip install pipreqs
pipreqs . --encoding=utf8 --force

10.2 部署flask项目bug解决

问题:使用 flask run运行项目之后,项目在虚拟机上可以访问,但是在windows上不能访问。
解决:使用如下命令进行启动,指定host为"0.0.0.0",而不是默认的"127.0.0.1".

flask run --host=0.0.0.0 --port=5000

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux常用命令及解释大全(二)

目录 前言 一、文件的权限 二、文件的特殊属性 三、打包和压缩文件 四、查看文件内容 五、文本处理 5.1 grep 5.2 sed 5.3 其它 总结 前言 本篇文章接linux常用命令及解释大全(一)继续介绍了一部分linux常用命令,包括文件的权限&a…

OpenCV(二十三):中值滤波

1.中值滤波的原理 中值滤波(Median Filter)是一种常用的非线性图像滤波方法,用于去除图像中的椒盐噪声等离群点。它的原理是基于邻域像素值的排序,并将中间值作为当前像素的新值。 2.中值滤波函数 medianBlur() void cv::medianBl…

WordPress(5)在主题中添加文章字数和预计阅读时间

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 样式图一、添加位置二、找到主题文件样式图 提示:以下是本篇文章正文内容,下面案例可供参考 一、添加位置 二、找到主题文件 在主题目录下functions.php文件把下面的代码添加进去: // 文章字数…

stm32之27.iic协议oled显示

屏幕如果无法点亮,需要用GPIO_OType_PP推挽输出,加并上拉电阻 1.显示字符串代码 2.显示图片代码(unsigned强制转换(char*)) 汉字显示

实现一台电脑登录多个微信账号/一个微信账号在多台电脑登录

一、一台电脑登录多个微信账号 在电脑桌面建立一个txt文档文件。 输入内容: echo off start /d"C:\Program Files\Tencent\WeChat\" WeChat.exe start /d"C:\Program Files\Tencent\WeChat\" WeChat.exe exit 如下图,/d"引号内容写微信安…

【STM32学习】——SPI通信协议SPI时序W25Q64存储芯片软件SPI读写

目录 前言 一、SPI通信协议 1.概述​ 2.硬件电路 3.移位示意图 二、SPI时序 1.时序基本单元 2.完整时序波形 三、W25Q64存储芯片 1.芯片简介 2.硬件电路&引脚定义 3.芯片框图 4.Flash操作注意事项 四、软件SPI读写W25Q64 五、SPI通信外设 总结 前言 声明&…

Seata 笔记

Seata 笔记 分布式事务理论基础 CAP 定理 Consistency 一致性:用户访问分布式系统中的任意节点得到的结果都是一致的Availability 可用性:用户和访问任意健康节点都必须得到响应而不是超时拒绝Partition tolernance 分区容错性:出现独立分…

单片机第三季-第一课:STM32基础

官方网址:STMCU中文官网 STM32系列分类: 型号命名原则: STM32F103系列: 涉及到的几个概念: DMA:Direct Memory Access,直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间&…

Credo推出业界首款单片集成CMOS VCSEL驱动器的800G光DSP芯片

针对AOC及短距(SR)光模块优化的新型Credo DSP,适用于下一代超大规模数据中心/AI应用 加州圣何塞和中国深圳,2023年9月6日——Credo Technology(纳斯达克股票代码:CRDO)今日发布两款新品&#x…

远程管理通道安全SSH协议主机验证过程

可以使用SSH协议进行远程管理通道安全保护,其中涉及的主要安全功能包括主机验证、数据加密性和数据完整性保护。 这里要注意的是【主机验证】和【身份验证】的区别,主机验证是客户端确认所访问的服务端是目标访问对象,比如从从客户端A(192.16…

七、Linux中一些符号的含义和宿主目录的介绍

1、Linux中一些符号的含义 在Linux命令行中,会看到如下一些符号,含义如下。 符号含义. 代表当前目录..代表上一层目录,当前目录的父目录-代表前一个目录,刚才从哪个目录cd过来~代表当前用户的宿主目录/代表根目录$普通用户的命…

nginx-带宽限制-令牌桶算法

nginx的令牌桶算法 客户请求nginx时,通过给每个请求授予令牌,来给予每个请求响应的带宽,当令牌全部授予完了,后面的请求就处于等待中。 假如一个令牌给100M带宽,那么两个令牌就是200M。有多少牌子,就有多少…