一个来自新加坡的重大决定 and why and how
通知&杂谈
自2024-11-21 16:00:00起,所有intmian
旗下服务(含api接口),都将正式迁移至新加坡机房。
对于用户,本次的迁移应该是无感的(不过真的有人在看吗?真的有人在用吗?我持怀疑态度-_-)。迁移后,考虑到大多数用户包含我本人都在中国,本站未开启CloudFlare CDN(俗称减速云)。因此除了极少数网络状况异常的区域(因为接了电信专线,应该不包括中国吧?),访问应较为流畅。同时升级了带宽,加载图片应更为流畅。如果用户感到卡顿可自行选择魔法手段,实测从香港访问极为流畅。
从大学建立了第一个GitHub page开始,intmian这个域名先后经历过多个阶段,可访问性也一度十分存疑。读书时一直用的是阿里云的学生机,不过只是玩玩,基本都是空置的,博客也没怎么更新。当时还写过一个python的爬虫主控,甚至为他开发了一套命令行非阻塞响应按键的ui。虽然现在看来力大砖飞,但是设计也不失巧妙。
在上班后,无意间看见了腾讯云的新用户优惠,一年仅需一百多块钱,就可以享受2C4G-9M-90G
的配置。就搬家到这里了,当时还很兴奋的发了篇博客,感觉还蛮唏嘘了。
转眼间又要到期了,续费的话一年得一千多。其中主要是宽带的费用,这让我觉得中国的服务器费用相当的畸形,ISP凭借垄断地位得到的也太多了。同时还有一些很难以忍受的法律、隐形制度上的问题,不便多说。也许只有做站长的朋友才能感受到个中的难言的酸涩(真不想实名上网啊丢)。
想拓展一下的,写了删删了写,还是算了吧。
还有一个很难说出口的野望,最近连续去了日本和马来玩,发现在国外访问我的网站是基本上延迟带宽丢包都非常高的,基本上不可用。如果有可能,我还是希望我的博客、platform服务、api或者whatever都能够卖出长城走向世界的。
当然客观上也能避免一些别的地方不存在的网络问题。所以就考虑出海算了
当时考虑过新加坡、香港、东京三个区域,香港贵一些而且长期来看更不稳定,东京不能接入专线,新加坡虽然网络延迟高一些,但是似乎也还可以忍受,只需要33元就能享受30m上行的大水管还要什么自行车,而且有专线回国。
经验
顺便记录一些其中的经验:
docker compose
之前听了某位乐于分享技术的朋友的劝导,把所有的docker都用docker compose托管,只需把启动脚本和持久化文件放在一个文件夹里面直接打包带走就没有任何问题了。
我之前配置的所有服务的域名解析都是cname,全部指向一个二级域名,这个域名最后实际解析为ip,只需要改下这个解析和compose中的路径(我之前使用的部署用户名有区别),不建议使用~这样的地址,sudo以后和升root部署会有一定的问题。甚至防火墙都不用配443默认都是开的,配完依赖,拷贝完数据,起一下启动脚本就直接启动了。领包入住非常丝滑,连caddy配置都不用改,甚至我自己都不相信会一点问题都没哈哈哈。具体可以参考我之前写的文章。
如何传输
旧的机器,用tar打一个gzip的包,然后在新的机器上用scp命令拷贝包,然后解压。也可以使用tar的跨服务器模式。
有尝试过用vs code
下载下来,再用final shell
上传。不要这样,因为这两者似乎没有有效性检验,在不稳定的网络环境传输(跨国)的情况下会导致中间出现差错,最后解压失败,尝试了两次都不行。而且机房的网络一定比自己的电脑好,用自己电脑会有瓶颈效应。就算自己的网络很好,也等于白白多传了一次浪费时间。
秘钥登录
之前都是用密码登录没有好好研究过ssh,这次好好研究了下秘钥登录。首先需要生成秘钥对,将公钥放在服务器(云厂商一般会帮你初始化好),私钥放在本地。可以在ssh时使用-i指定秘钥位置,但是还是建议在ssh配置中写好
linux、mac在~/.ssh,windows在C:\Users\USER\.ssh下面。打开config文件
在认证文件中加入.pem
私钥的位置。
请注意,如果是windows,建议只将私钥文件放在用户文件夹下,不然会有权限问题,ssh要求私钥有当前用户的排他性权限,windows的权限又是一坨,所以直接放在.ssh下面得了
terminal
早知道还是xshell,但是法务不给用。
因为补全、高亮都是服务器安装的插件实现的,所以如果不涉及文件传输、配置修改,建议直接使用普通的shell软件(windows terminal或者iTerm之类的)。修改简单的配置也可以直接用终端的vim,安装插件后都可以支持vim用鼠标移动光标等。修改复杂的配置建议使用vscode。传输简单的文件也建议用vscode或者scp,传输复杂的文件建议sftp或者mobaxsterm。
要谨慎使用不成熟的开源软件甚至闭源软件,尤其是中国出品的,不是抹黑中国,但是开源和诚信真的还有很长一段路可以走。避雷finalshell,程序员审美就不说了,做的也很简陋,java实现的性能很差,我用他修改一个配置文件,不仅不够丝滑,修改完给我一个上传失败。不仅丢失了全部改动,甚至丢失了所有数据………
因为ssh底层的特性,命令行打字都是需要经过一整个网络去回才能显示(不然补全怎么做),所以国外的多少还是有点卡的,但是实测200ms延时尚能忍受。
发行版选择
由于centos史诗级的暴雷,深受其害的笔者得了商业公司ptsd,放弃了ubantu选择了debian(我才知道真念带便……)。至于国产的发行版哈哈哈哈哈哈。
新服务器配置
因为是国外服务器所以不考虑换源,下面是适用于 Debian 12 版本的安装教程,涵盖了 Docker、Docker Compose、Git、Python、Golang、Screen 和 Oh My Zsh 的完整安装步骤。
1. 更新系统
首先,更新你的系统,确保所有的软件包都是最新的。
sudo apt update && sudo apt upgrade -y
2. 安装 Docker
安装 Docker 所需的依赖包:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
添加 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 软件源:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新并安装 Docker:
sudo apt update sudo apt install -y docker-ce
启动并设置 Docker 开机自启:
sudo systemctl start docker sudo systemctl enable docker
(可选)将当前用户添加到 Docker 组:
sudo usermod -aG docker $USER
重新登录或重启系统生效。
验证 Docker 安装:
docker --version
3. 安装 Docker Compose
下载 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋予执行权限:
sudo chmod +x /usr/local/bin/docker-compose
验证安装:
docker-compose --version
4. 安装 Git
sudo apt install -y git
git --version
5. 安装 Python
安装 Python3 和 pip:
sudo apt install -y python3 python3-pip
验证 Python 和 pip:
python3 --version pip3 --version
6. 安装 Golang
下载 Golang 安装包:
wget https://go.dev/dl/go1.21.1.linux-amd64.tar.gz
解压安装包并移动到
/usr/local
:sudo tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz
设置环境变量:
在
~/.profile
或~/.bashrc
中添加以下内容:export PATH=$PATH:/usr/local/go/bin
然后执行以下命令使更改生效:
source ~/.profile
验证 Golang 安装:
go version
7. 安装 Screen
sudo apt install -y screen
screen --version
8. 安装 Oh My Zsh
安装 Zsh:
sudo apt install -y zsh
将 Zsh 设置为默认 shell:
chsh -s $(which zsh)
退出并重新登录,或者直接运行
zsh
。安装 Oh My Zsh:
使用
curl
安装:sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
或者使用
wget
安装:sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
配置 Oh My Zsh
安装完成后,
~/.zshrc
文件已经自动创建。你可以根据需要修改该文件,比如更换主题或启用插件。修改
~/.zshrc
文件,修改ZSH_THEME
和plugins
配置:ZSH_THEME="agnoster" plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
安装 Zsh 插件(如 zsh-autosuggestions 和 zsh-syntax-highlighting):
安装 zsh-autosuggestions:
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
安装 zsh-syntax-highlighting:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
在
~/.zshrc
中启用插件:plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
重新加载 Zsh 配置:
source ~/.zshrc
有什么问题就问gpt就行,gpt4后精确性相当高