:
前言
前几天,需要出去办事,正好某个项目出现了严重的BUG,但当时我没有电脑,就借了朋友的电脑并使用它是因为它没有我通常使用的IDE。没有相关环境,修复过程可谓极其痛苦,只能在宝塔编辑器中完成……此时我不禁想,是否可以搭建这样一套基于WEB的开发全家桶,让开发者可以随时随地用浏览器进行开发?去做就对了!
:
正文
既然想要打造这样一个家庭桶,那么需要准备以下物品:
一台VPS服务器有一个域名(直接记住IP就可以了)。首先是VPS服务器,就像我们的标题一样,轻量级折腾方案,所以我们这里选择的服务器是腾讯云的轻量级应用服务器Lighthouse。腾讯云轻量级服务器因其活动多、折扣大、性价比高而在国内中小型站长群体中广为人知。虽然没有弹性网卡等部分CVM功能,但最近推出了VPC内网互联。一个很大的缺陷已经被填补了。可以说基本满足了我们这些需求不大的小站长的需求,而且对CPU没有任何限制。一个核心比某些灵车的四核更强。
而且已经活跃很久了(https://cloud.tencent.com/act/new),99/1年,这个价格算是性价比之王了,有兴趣的同学不要错过。
:
零、基础准备
既然是全家桶,肯定需要安装多个应用,并且苦于口袋里钱包的厚度,必须是一台机器来完成所有的工作。然后需要安装以下环境:
宝塔面板(方便管理,如果你是老板可以忽略) Nginx(主要用于反生成,如果是国产机+未注册的域名,则不需要反生成,只需解析IP并添加端口) Docker(快速安装一些应用):
(0)宝塔面板
宝塔面板的安装可以说非常简单,根据官网的这个帖子:https://www.bt.cn/bbs/线程-19376-1-1.html
Centos安装命令:
yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh copyUbuntu/Deepin安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh sudo bash install.sh 复制Debian安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh bash install.sh 复制Fedora安装命令:
wget -O install.sh http://download.bt.cn/install/install_6.0.sh bash install.sh 根据您服务器的操作系统复制并选择不同的安装命令并执行。您想立即将Bt-Panel 安装到/www 目录吗? (y/n) 输入y回车,稍等片刻,安装成功:
=====================================================================恭喜!安装成功!==========================================================================外网面板地址:http://xxx.xxx.xxx.xxx:8888/6e21e07d 内网面板地址:http://10.0.8.17: 8888/6e21e07d用户名:gunftd4a密码:f92c3dd4如果无法访问面板,请在安全组中释放以下面板端口[8888] 有释放面板[8888]端口============================================================================耗时:0分钟![root@VM-8-17-centos ~]# 复制我们打开浏览器访问上面的外部网络面板地址(轻度用户记得去防火墙添加端口8888),填写随机生成的用户名和密码,同意用户协议后进入面板。进入面板后首先要做的是修改面板设置,修改默认端口8888(提前注意防火墙/安全组放行),修改用户名、密码、安全入口,启用BasicAuth认证(推荐),这里我们就考虑安装宝塔面板了。
:
(1)Nginx
上一步我们安装了宝塔面板,所以这一步很简单,只需点击宝塔面板左栏的软件商店,找到Nginx,点击安装即可:
点击确定,稍等片刻即可安装:
:
(2)Docker
Docker是一种容器化技术,可以利用容器来快速构建我们想要的环境/应用,类似于虚拟机,但比虚拟机轻得多。
关于Docker的安装,我们可以直接使用官方的一键安装脚本。安装命令如下:
卷曲-fsSL https://get.docker.com | bash -s docker --mirror 阿里云copy也可以使用国内的daocloud一键安装命令:
卷曲-sSL https://get.daocloud.io/docker | sh 复制这两个命令,可以选择任意一个,复制到服务器终端,粘贴,回车,等待一会就安装成功了。
docker安装成功后,执行以下命令启动docker:
service docker start 复制并启动docker后,尝试运行:docker ps看看是否有错误。
最后我们修改一下docker镜像源,保证docker镜像能够拉取成功;编辑文件/etc/docker/daemon.json(如果不存在,可以新建一个),内容如下:
{'registry-mirrors': [ 'https://hub-mirror.c.163.com', 'https://mirror.baidubce.com']} 复制如果读者也使用轻量级服务器,可以使用腾讯内网的加速源:镜像.ccs.tencentyun.com。
编辑文件并保存后,输入命令:service docker restart 重启docker来加载配置文件。重启完成后,输入docker info查看是否设置成功:
注册表镜像:https://mirror.ccs.tencentyun.com/Live Restore Enabled:false[root@VM-8-17-centos ~]# 复制到这里后,我们的系列准备过程就结束了。
:
一、在线IDE
既然要编程,那肯定离不开IDE。如今,没有人真正使用记事本进行编程。
经过一段时间的搜索,我们打算使用vscode的官方WEB类vscode:https://github.com/cdr/code-server。从外观上来看,可以说和桌面版的vscode一样。
接下来是代码服务器的安装。首先我们新建一个配置项目录:
mkdir ~/.config mkdir /project 复制然后直接使用docker安装:
docker run -itd --name code-server -p 127.0.0.1:8080:8080 \ -v '$HOME/.config:/home/coder/.config' \ -v '/project:/home/coder/project ' \ -u '$(id -u):$(id -g)' \ -e 'DOCKER_USER=$USER' \ codercom/code-server:latest Copy 如您所见,我们将容器中的端口8080 映射到本地端口8080(如果直接使用端口,可以将这里的127.0.0.1改为0.0.0.0),并且我们将新建的两个目录挂载到容器中,这样我们就可以直接在容器外修改文件容器。
使用命令docker ps 查看我们的容器正在运行:
[root@VM-8-17-centos ~]# docker psCONTAINER ID 图像命令已创建状态端口名称51fb2363150e codercom/code-server:latest '/usr/bin/entrypoint.' 45 秒前44 秒127.0.0.1: 8080- 8080/tcp code-server[root@VM-8-17-centos ~]# 复制然后反向代理,将我们的域名(这里用test.com进行演示)和容器的环境结合起来。
在宝塔中添加一个网站(ide.test.com):
添加完成后,点击设置添加反向代理:
由于我们需要使用websocket,因此我们还需要修改配置文件,添加以下配置项:
proxy_http_版本1.1; proxy_set_header 升级$http_upgrade; proxy_set_header 连接升级;复制并打开浏览器,输入我们的网站:ide.test.com
输入cat ~/.config/code-server/config.yaml 查看随机生成的密码:
[root@VM-8-17-centos ~]# cat ~/.config/code-server/config.yamlbind-addr: 127.0.0.1:8080auth: 密码password: 352e558396b4688211258ebdcert: false[root@VM-8-17-centos ~]# 复制并输入密码即可进入。如果想修改密码,可以直接修改这个文件中的密码,然后重启容器。
:
二、GIT平台
既然我们有了自己的IDE,直接使用整个git平台作为我们平时项目的记录库岂不是很好。说做就做,因为我们希望在同一个服务器上构建多个应用,所以这里我们不选择gitlab(配置很少),而是选择相对精简的gogs(https://github.com/gogs/gogs)。
也是用docker部署的。在这种同时部署多个应用的环境下,不同的应用使用不同的容器直接隔离,互不影响,减少了直接干扰,可以说是一个巨大的优势。
首先,创建一个新目录作为挂载点,以便容器中的数据可以与外部数据进行通信:
Midir /gogs 复制然后运行命令:
docker run -p 3022:22 -p 3000:3000 --name=gogs \-v /gogs:/data \-d gogs/gogs copy 使用命令docker ps 查看部署情况:
[root@VM-8-17-centos ~]# docker psCONTAINER ID 图像命令已创建状态端口名称529a758630a8 gogs/gogs '/app/gogs/docker/st.' 10 秒前向上10 秒0.0.0.0:3000- 3000/tcp,3000-3000/tcp, 0.0.0.0:3022-22/tcp,3022-22/tcp Gogs 复制也是老规矩了,我们把3000 端口反过来,这里我们用git。 test.com 进行演示。逆向生成过程指的是codeserver的安装。由于不需要websocket,因此无需编辑配置文件。
反向生成后,访问我们的域名:
这里为了方便,我们直接选择使用sqlite作为数据库。
在应用程序的基本设置中,除了我们将应用程序URL修改为:http://git.test.com外,其余保持默认即可:
在可选设置中设置管理员:
点击立即安装后,GIT平台搭建完成:
我们看一下我们的资源使用情况(2核4G内存):
可以看到4G内存目前占用不到1G,可以说是相当精简了,小主机也能轻松运行,为后续应用程序的安装腾出了很大的空间。
:
后话
现在,我们已经有了自己的在线IDE和自己的GIT平台,已经可以完成日常开发中经常需要的大部分功能,但这还不够。由于篇幅限制,我们会在下一篇文章中继续带大家完善我们的开发者全家桶包,继续完成我们的浏览器编程部分~