前言:
如今我们对“idea的项目部署到局域网”大概比较着重,小伙伴们都想要剖析一些“idea的项目部署到局域网”的相关知识。那么小编在网摘上搜集了一些有关“idea的项目部署到局域网””的相关文章,希望看官们能喜欢,朋友们快快来学习一下吧!背景
说起开发工具Goland,做Go语言开发的同学应该都不陌生,但由于大部分同学的电脑资源有限,尤其是公司里配备的电脑,在本地使用Goland多多少少有些不够顺畅。
如果公司内服务器资源充足,再加上容器化技术的加持,把Goland以容器的形式部署在服务器上运行是一个不错的解决方法。带着这个想法搜索资料[1]发现,Goland 官方还真的开发了容器版,并且提供网页和客户端两种登录方式。下面给出内网环境下的配置步骤及踩坑记录:
注:
以下操作同样适用于Jetbrains旗下的其他开发工具,比如IDEA。
Goland的注册方法不在本次教程讨论范围之内,请自行解决。
镜像获取
Goland网页版功能是jetbrains官方[2]提供的Docker镜像,所以内网配置的前提是先从外网拉取到需要的镜像,然后导出镜像包并拷贝到内网中:
docker pull registry.jetbrains.team/p/prj/containers/projector-golanddocker save -o projector-goland.tar registry.jetbrains.team/p/prj/containers/projector-goland
注:如果无法拉取官方的镜像,可以在公众号后台回复 docker goland 即可获取goland 网页版镜像。
服务启动
拿到镜像后,找一个安装了docker的服务器或虚机,使用docker run命令启动:
docker run -itd \ -u root \ -p 8887:8887 \ --net=host \ --privileged \ -v /home/admin/goland-dir:/root \ -v /etc/localtime:/etc/localtime \ -v /home/admin/goland-dir/sources.list:/etc/apt/sources.list \ --name goland \ --restart always \ registry.jetbrains.team/p/prj/containers/projector-goland
(重要)部分参数说明:
指定用户:可选,默认不指定用户,容器启动时会使用一个非root用户projector-user,这里使用root用户启动是为了避免后续操作的权限问题;指定主机网络:可选,方便使用代理拉取代码,没有代理的话先从外网下载也可以;指定特权模式:可选,方便调试,没有开启的话直接使用GoLand调试会提示权限问题;挂载点1:必选,默认用户下,将/home/projector-user挂载到本地,root用户下直接将root目录挂载到本地;挂载点2:可选,保持容器时间与主机时间一致;挂载点3:可选,配置内网依赖源,方便下载gcc等编译所需的依赖;浏览器访问
容器正常启动后,在浏览器中通过地址登录网页版GoLand。
客户端访问
如果不习惯使用浏览器,官方还提供了原生客户端,我们通过地址[3]下载,打开后输入地址即可。
导入项目示例
以导入K8S源码为例,登录到容器内,使用git命令拉取kubernetes源码:
projector-user@storage:~/go/src/github.com$ git clone into 'kubernetes'...fatal: unable to access ';: server certificate verification failed. CAfile: none CRLfile: none
拉取失败,提示CA证书问题,通过以下命令解决:
git config --global http.sslVerify false
又拉取失败:
projector-user@storage:~/go/src/github.com$ git clone into 'kubernetes'...fatal: unable to update url base from redirection: asked for: redirect:
因为未配置代理,通过以下命令解决:
设置:git config --global http.proxy 查看:git config --get --global http.proxy
注:密码中如果存在特殊字符,请先转义。
再次尝试拉取,拉取成功:
projector-user@storage:~/go/src/github.com$ git clone into 'kubernetes'...remote: Enumerating objects: 1258541, done.remote: Counting objects: 100% (316/316), done.remote: Compressing objects: 100% (201/201), done.remote: Total 1258541 (delta 131), reused 150 (delta 111), pack-reused 1258225Receiving objects: 100% (1258541/1258541), 773.55 MiB | 805.00 KiB/s, done.Resolving deltas: 100% (906256/906256), done.Checking out files: 100% (23196/23196), done.常见问题1. 复制粘贴问题
根据参考资料[4],可以通过设置环境变量ORG_JETBRAINS_PROJECTOR_SERVER_SSL_PROPERTIES_PATH解决:
docker run -e ORG_JETBRAINS_PROJECTOR_SERVER_SSL_PROPERTIES_PATH=/root/ssl/ssl.properties ...
ssl的配置文件举例:
STORE_TYPE=JKSFILE_PATH=/root/ssl/keystoreSTORE_PASSWORD=xxxKEY_PASSWORD=xxx
通过查看启动日志确认ssl是否配置成功,如下日志所示,WebSocket SSL is enabled: /root/ssl/ssl.properties表示配置成功,此时在浏览器用访问即可。
Found IDE: golandOpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.[DEBUG] :: IdeState :: Starting attempts to Init ProjectorClassLoader[DEBUG] :: IdeState :: Starting attempts to attach IJ injector agent[DEBUG] :: IdeState :: Starting attempts to initialize IDEA: fix AA and disable smooth scrolling (at start)[DEBUG] :: IdeState :: Starting attempts to Getting IDE colors[DEBUG] :: ProjectorServer :: Daemon thread starts[DEBUG] :: IdeState :: Starting attempts to search for editors[INFO] :: ProjectorServer :: ProjectorServer is starting on host 0.0.0.0/0.0.0.0 and port 8887[INFO] :: HttpWsServerBuilder :: WebSocket SSL is enabled: /root/ssl/ssl.properties[INFO] :: HttpWsServer :: Server started on host 0.0.0.0/0.0.0.0 and port 8887[DEBUG] :: IdeState :: "Init ProjectorClassLoader" is done[DEBUG] :: IdeState :: "search for editors" is done
登录后再次尝试,又可以快乐的Ctrl+C、Ctrl+V了。
2. 自定义Keymap被重置问题
根据参考资料[4],可以通过设置环境变量ORG_JETBRAINS_PROJECTOR_SERVER_AUTO_KEYMAP=false解决:
docker run -e ORG_JETBRAINS_PROJECTOR_SERVER_AUTO_KEYMAP=false ...
登录后再观察,发现自定义的keymap不会神奇的恢复了。
3. 原生客户端全局搜索结果模糊问题
模糊部分刚好是搜索的字符串,使用起来问题也不大,如果忍不了,也可以暂时使用浏览器开心玩耍(浏览器下没有该问题)。
更新:v1.0.2版本已修复该问题
参考资料
标签: #idea的项目部署到局域网 #vue在内网环境如何开发