文章目录
背景
拥有一台自己的服务器对于我这种程序员来说,是一件十分有安全感的事件。aws正好提供了1台1C1G,可以长达12个月的免费的服务器,而且到期后可以继续换个账号还能继续白嫖,对于勤(kou)俭(men)的我来说,简直是太开心了。我将分享我从注册到极致压榨服务器的过程!
前期准备
1、一个邮箱
注册用的,推荐用国内邮箱。
2、一个手机号
收验证码用的。
3、一张信用卡
aws这里支持Visa,Mastercard,美国运通,JCB等。信用卡的办理涉及到钱和勤(kou)俭(men)的问题,所以我思考查阅了很久,总结了下面几个问题:
- 1、是否使用虚拟信用卡?
有看过网上推荐的虚拟信用卡,我查了下虚拟信用卡大都是单币的,而且要自己去换美元还款,所以我放弃了。 - 2、Visa or Mastercard or 美国运通 or JCB or 银联?
美国运通对国人太小众,JCB主要是日元结算,银联信用卡容易被拒绝使用。Visa和Mastercard在欧美地区都很流行,其中Mastercard比visa卡的实时汇率友好一点,所以我选了Mastercard。 - 3、怎么办理?
很多人一直以为有Visa和Mastercard银行,他们来发卡。实际上Visa 和 Mastercard 不直接发行信用卡或借记卡,它们提供的是全球支付网络,帮助银行和其他金融机构发行带有 Visa 或 Mastercard 标志的卡片。你要做的就是找一家比如招商银行,中国银行等申请一张带有Visa 和 Mastercard的卡。 - 4、单币卡还是双币卡?
单币就是只能以单一货币结算,没法用人民币,而且申请周期比较长,可能7天。双币卡能人民币结算,而且在中国能用,还有一些优惠,我果断双币卡。 - 5、是否设置限额?
- 一定要设置每日限额,防止未知原因扣费
- 6、哪家银行办理?
我建议找常用卡行办理,这样转钱也方便。有一说一,中行的信用卡是YYDS。作者我由于一直使用招商银行app,体验不错,所以图方便,选了招商银行信用卡。大家办卡时可自行咨询银行看看哪张优惠高。
有需要可以通过这里点击办理~
注册AWS
1、注册
登录 aws注册官网
填邮箱和AWS账号,点击验证,过完验证之后输入密码
2、填写个人信息
计划这里要选个人。
然后填写你的联系人信息,出于隐私考虑,地址城市并未完全写真实内容,是否完全写真实的看个人。
3、确认身份
在这里需要验证你的电话号码
4、完成注册
电话验证完之后,离注册完成只剩最后一步了,选择支持计划-选择默认的免费就可以了。
然后转到AWS管理控制台来申请免费云服务器
买主机啦!!
右上角选择你想要使用的云服务器的地区,然后左上角服务或都搜索栏中,找到EC2,点击。EC2 是 Amazon Elastic Compute Cloud 的缩写,它是 Amazon Web Services (AWS) 提供的云计算服务。
0、研读免费套餐
免费套餐: 第一年包括每月 Free Tier AMI 上的 750 小时 t2.micro(或者,在未推出 t2.micro 的区域中是 t3.micro)实例用量、每月 750 小时的公有 IPv4 地址用量、30GiB EBS 存储、200 万个输入和输出、1GB 快照,以及 100GB 互联网带宽。
首先每月750小时的实例用量,实际上每个月最多有744小时,所以只开一台实例的话,完全不用担心超过时限,
其次30GiB EBS 存储,30G的上限其实可以买多个卷,一般没有这种需求,只买单盘30G即可,
然后200 万个输入和输出,太够了,
然后1GB 快照,鸡肋,
最后是100GB 互联网带宽,普通网页大约消耗 1-2MB 的流量,100GB 大约可以浏览 50,000 - 100,000 个网页,日常都够用了。
1、系统选择
注意只有下方显示支持免费套餐的才会免费。所以很明显macOS是不免费的。这里我对除了macOS可用免费系统都选择试了一次并给出了我的建议
Amazon Linux
可用,但内存无法完全压榨,不够极致
WIN
建议别搞,免费的30GEBS,windows装完系统就要20多G了,离超额容量很危险。
Redhat/SUSE Linux/Debian
为什么将这三个列为一起呢?因为这三个系统,买完之后都进不了系统!!无论是用官方账号,还是网上找的账号,填入都是连接不了,原因未知,其实我是想要用Debian的,可惜了。
Ubuntu
最香系统,不仅能用,优化完后1G的内存能有720-740M左右能用,压榨内存比较极致了,我会在后面给出优化的脚本方案。
所以我选择Ubuntu。
2、购买实例
1、选择应用程序和操作系统映像
选择Ubuntu比较新的系统,然后选择X86架构,ARM架构没有免费的套餐。我这里选择的是Ubuntu 24.04
2、选择实例类型
选t2.micro,免费套餐
3、创建密钥对
然后选择密钥对,如果是第一次启动实例,是没有密钥对的,需要自己点击Create new key pair来创建。
密钥对名称自己随便填。
密钥对类型选择RSA加密,不选ED25519。我试过ED25519的key,对于旧版本的xshell,根本就不支持这种类型,兼容性还是RSA好点。
密钥文件格式,选择 pem 格式。
另外ubuntu22以上新版,在默认情况下,是不支持ssh-rsa算法的key的,需要在/etc/ssh/sshd_config加入PubkeyAcceptedKeyTypes +ssh-rsa,这一行。
4、网络设置
网络,子网都按默认的即可
主要是创建安全组,点击创建安全组,只勾选SSH流量。其它端口流量我们后期按需再配置。
5、配置存储
有资格使用免费套餐的客户最多可获得 30GB 的通用型 (SSD) 或磁存储空间
一般我们只买一台,直接选30G
6、 启动实例
所有的配置都选择好了,我们检查一下没问题,就点击启动实例
7、登录云服务器
点击连接,通过aws的控制台登录进服务器,点击连接。
接下来就是见证奇迹的时刻了,我们登录进了系统,终于拥有了自己的一台小云服务器了,太激动了!!!
8、优化系统
系统会自带很多东西,我经过一段时间的折腾后,总结出以下三个策略
1、关闭卸载非必要的程序
卸载掉一些没用的程序,大约能省下80M的内存
# Snap是包管理器,一般直接apt安装,所以卸载
apt remove --purge snapd
# multipathd 是 Multipath I/O 的守护进程,用于管理多路径存储设备的连接, 通常用于 SAN(存储区域网络)环境
apt remove --purge multipath-tools
# unattended-upgrades 是一个用于自动安装安全更新的服务,通常在 Debian 和 Ubuntu 系统中使用。它的主要目的是自动化系统的安全更新过程,以减少手动维护的负担,并确保系统始终保持最新的安全补丁。一般手动更新
apt remove --purge unattended-upgrades
# packagekitd 是 PackageKit 的守护进程,PackageKit 是一个抽象的包管理接口,用于提供与软件包管理相关的功能,主要用于与图形用户界面(GUI)集成。不用GUI一般不用
apt remove --purge packagekit
# networkd-dispatcher 是一个网络状态变化事件的服务。比如断网了要触发一些什么事件,一般不用
apt remove --purge networkd-dispatcher
# snap.amazon-ssm-agent.amazon-ssm-agent.service 是 Amazon SSM Agent 的服务,允许用户通过 AWS Management Console、CLI 或 API 远程管理 EC2 实例,无需 SSH 访问。用ssh的直接关闭
systemctl stop snap.amazon-ssm-agent.amazon-ssm-agent.service
systemctl disable snap.amazon-ssm-agent.amazon-ssm-agent.service
# agetty 是一个用于管理终端登录的服务,提供控制台登录提示。只用命令行的就关掉
mv /lib/systemd/system/serial-getty@.service /lib/systemd/system/serial-getty@.service.bak
mv /lib/systemd/system/getty@.service /lib/systemd/system/getty@.service.bak
# acpid 处理 ACPI 事件,如电源按钮、休眠等。卸载掉
apt remove --purge acpid
# polkitd 主要用于桌面系统和一些服务器环境中,提供权限管理和访问控制。卸载掉
apt remove --purge policykit-1
mv /lib/systemd/system/polkit.service /lib/systemd/system/polkit.service.bak
# udisks2是GUI 环境下管理存储设备(如 USB 驱动器、硬盘分区),不依赖 GUI 来管理存储设备没用
systemctl stop udisks2.service
systemctl disable udisks2.service
2、用root远程登录
如果不介意远程root,就用远程root。因为用远程ubuntu切root,系统会有一个sudo的进程,而这个进程是会占用内存的。亲测大约省下15到20M的内存
# 开启root登录,并且只能密钥登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' /etc/ssh/sshd_config
# 有用旧ssh-rsa时需要加上
if [ -z "`egrep '^PubkeyAcceptedKeyTypes \+ssh-rsa' /etc/ssh/sshd_config`" ];then echo "PubkeyAcceptedKeyTypes +ssh-rsa" >> /etc/ssh/sshd_config;fi
# 重启ssh
systemctl restart ssh
# 设置root的互信
cat /home/ubuntu/.ssh/authorized_keys > /root/.ssh/authorized_keys
3、用podman替换docker
Docker:采用的是守护进程架构。Docker 包含了一个中央守护进程(dockerd),这个守护进程负责管理容器生命周期、网络、存储等。
Podman:没有守护进程,它是一种无守护进程(daemonless)的容器管理工具。Podman 直接由用户进程启动和管理容器,不需要像 Docker 那样的中央守护进程。这意味着它只在需要运行容器时占用系统资源,没有额外的守护进程常驻后台。
因此,Podman 的内存比Docker占用更小,更轻量化。亲测使用过程中大约省下50M的内存
安装podman
apt update
apt install podman
特别注意:
podman在ubuntu里使用时,run的时候需要使用–security-opt=apparmor=podman,才能被podman stop。这是ubuntu的一个bug,ubuntu不重视,气人!
例如:podman run -p 8080:80 --security-opt=apparmor=podman docker.io/nginx
4、汇总脚本
#!/bin/bash
apt remove -y --purge snapd --purge multipath-tools unattended-upgrades packagekit networkd-dispatcher acpid policykit-1
systemctl stop snap.amazon-ssm-agent.amazon-ssm-agent.service
systemctl disable snap.amazon-ssm-agent.amazon-ssm-agent.service
mv /lib/systemd/system/udisks2.service /lib/systemd/system/udisks2.service.bak
mv /lib/systemd/system/serial-getty@.service /lib/systemd/system/serial-getty@.service.bak
mv /lib/systemd/system/getty@.service /lib/systemd/system/getty@.service.bak
mv /lib/systemd/system/polkit.service /lib/systemd/system/polkit.service.bak
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/g' /etc/ssh/sshd_config
if [ -z "`egrep '^PubkeyAcceptedKeyTypes \+ssh-rsa' /etc/ssh/sshd_config`" ];then echo "PubkeyAcceptedKeyTypes +ssh-rsa" >> /etc/ssh/sshd_config;fi
systemctl restart ssh
cat /home/ubuntu/.ssh/authorized_keys > /root/.ssh/authorized_keys
reboot
5、优化效果
优化前
优化后
3、省钱计划
1、免费等级
aws提供了免费资源使用量的面板,偈尔可以上去看一下有没有超过,妈妈再也不用担心我的超额了。
2、零支出预算告警
为保证零支出预算告警,aws提供了超额告警。在账单与成本管理 --> 预算 --> 创建预算,预算模板选零支出预算,电子邮件收件人写上对应邮箱。这样当支出超过0.01美元时,触发告警通知。
写到最后
如果你能看到这里,那也许你也和我一样,希望能拥有一台自己的云服务器,那就赶紧行动注册吧。时间不等人,加油吧朋友!