Hello world ——服务器搭建

bbaa
bbaa 2022年07月06日
  • 在其它设备中阅读本文章

Hello world ——服务器搭建

这是本站第一篇博客,记录下本站的搭建过程。

1. 服务器

服务器选用腾讯云的轻量应用服务器 2t4g,主要是腾讯云今年的新春促销活动真的很香 (逃

2. 系统

这几年一只在用 Arch 系系统当主力操作系统来使用,19 年在用 Manjaro,21 年更换到了 Arch Linux, 用习惯了就喜欢把服务器上的系统都换成 Arch(反正这破博客也不会有人看,时不时重启 爆炸 几下也不会有人发现的(逃))

把服务器系统更换到 Arch 有很多种方法,最好的当然就是服务商提供系统镜像(然而腾讯云并没有 ), 除此之外肥猫的修改版 vps2arch 等傻瓜脚本选用,这里我选择使用 Archboot 来安装。

Archboot

Archboot 的官方主页是:https://gitlab.archlinux.org/tpowa/archboot/-/wikis/Archboot-Homepage

archboot.png

它被设计来用于系统安装和救援工作,选用它而不用 Archiso 是因为它对网络安装的支持比较好,对于有 DHCP 的服务商可以全程不用进 VNC 而使用 SSH 安装,操作起来比较快乐。

安装 Arch Linux

首先下载好 Archboot 的镜像(建议选择下载不带 latest 或 local 的版本)扔到根目录并重命名为 archboot.iso ,对于使用 GRUB 引导的服务商,用nano /boot/grub/grub.cfg修改 GRUB 配置文件,在第一个 menuentry 前添加以下内容:

set default=0
menuentry "Archboot" --class iso {
loopback loop (hdX,Y)/archboot.iso
linux (loop)/boot/vmlinuz_x86_64 iso_loop_dev=/dev/sdXY iso_loop_path=/archboot.iso
initrd (loop)/boot/initramfs_x86_64.img
}

其中 (hdX,Y)是你的根目录所在分区,对于腾讯云,默认的值是(hd0,gpt2),后面紧跟着的/archboot.iso与下面 iso_loop_path 参数的内容则为 iso 文件在分区中的位置。iso_loop_dev 则为 linux 挂载这个分区所使用的设备文件路径,也可以通过iso_loop_dev=PARTUUID=12345678-1234-1234-1234-123456789ABC PARTUUID 等方式指定,这里我直接选择使用 iso_loop_dev=/dev/vda2

编辑完毕之后 Ctrl+S Ctrl+X 退出 nano。输入 reboot 命令等待重启。

mitmwarning.png

约 30s 后用 root 用户重新连接服务器,ssh 会弹出中间人攻击警告,使用 ssh-keygen -R 服务器域名或ip 删除 known_hosts。连接上服务器后空密码登陆。

archbootwelcome.png

回车可进入图形化(伪)安装界面。

installintro.png

image-20220610162947944

因为想要自己重新分区,这里直接选择第 8 项退出安装进入 zsh。

分区.png

将 4 GB swap 分区独立出来,用mkswap /dev/vda3建立 swap 分区,并对第一个 1MB 分区设置 BIOS BOOT 标志用于传统 BIOS 引导

btrfs.png

将主分区格式化为 btrfs 并建立子卷

分区 2.png

腾讯说这是 高效 SSD 云盘 于是这里就用 ssd 挂载参数挂载了。(格式化时好像没有检测出来是 SSD, 也不知道是变得更快还是更慢 (逃) )

编辑 /etc/pacman.d/mirrorlist 添加:

`Server = http://mirrors.tencentyun.com/archlinux/$repo/os/$
更换为腾讯内网源

运行pacstrap /mnt base base-devel linux-zen nano grub openssh btrfs-progs 安装系统

安装系统.png

pacman 装软件包的速度十分舒服(

arch-chroot /mnt chroot 到新系统,进行一些配置操作。

1. 编辑 /ect/locale.gen 开启中文支持

取消 en_US.UTF-8 与 zh_CN.UTF-8 前的 # 号

运行 locale-gen 命令

编辑 /etc/locale.conf 写入 LANG=zh_CN.UTF-8

2. 设置时区

设置时区为 Asia/Shanghai 运行: ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 创建符号链接

3. 设置网络

输入 ip link 查看网卡名称

网卡.png

编辑 /etc/systemd/network/10-dhcp-ens5.network,写入:

[Match]
Name=ens5

[Network]
DHCP=ipv4

ens5 为网卡名称,仅适用于有 DHCP 服务的服务商

运行以下命令启用 systemd-networkdsystemd-resolved 服务

systemctl enable systemd-networkd
systemctl enable systemd-resolved

编辑 /etc/hosts 添加

127.0.0.1 localhost

Ctrl + D 退出 chroot ,运行 ln -sf /run/systemd/resolve/stub-resolv.conf /mnt/etc/resolv.conf

4. 创建新用户并启用 sshd

arch-chroot /mnt 再次 chroot 到新系统。

使用 useradd -m bbaa 创建新用户,并使用 passwd bbaa 修改密码,随便运行 passwd root 设置 root 密码。

运行命令 EDITOR=nano visudo 添加 bbaa 用户进入 sudoers 。

在 root 下面那行加上 bbaa ALL=(ALL:ALL) ALL

运行sudo -u bbaa -imkdir .ssh 建立 .ssh 文件夹,并用 nano 把自己的公钥塞进 ~/.ssh/authorized_keys

bbaa 为新用户用户名

Ctrl + D 退出 sudo

可以编辑 /etc/ssh/sshd_config #PasswordAuthentication yes 行改成 no 并取消注释关闭密码登陆。

运行 systemctl enable sshd 启用 sshd 服务

5. 安装 grub 引导

运行 grub-install /dev/vda (/dev/vda 为安装引导器的硬盘) 安装 Grub

编辑/etc/default/grub修改GRUB_TIMEOUT的值为 1,降低开机等待时间

运行 grub-mkconfig -o /boot/grub/grub.cfg 生成配置文件

Ctrl + D 退出 chroot 环境

运行 swapon /dev/vda3 启用之前创建的 swap 分区

运行 genfstab -U /mnt >> /mnt/etc/fstab 写入 fstab, 输入reboot 命令重启,进入新系统

ArchLinux 至此安装完毕

3. 博客系统搭建

Docker_(container_engine)_logo.svg

1. Docker

Docker 是著名的容器引擎了,使用它进行网站搭建比较快速灵活。我最早认识 Docker 是 metowolf 的 docker-lemp 项目,但好像已经有段时间没有更新了,所以本服务器的搭建选择自己写容器编排模板。

目录树.png

选择了一个我个人喜欢的目录结构,方便未来扩展与管理。

Caddy

使用 Caddy 来提供 https 服务,证书自动续签是真的香,适合偷懒

这里自己自己编译的原因是可以用 xcaddy 添加一些插件,这里添加了 caddy-dns/dnspod 插件,以后使用 CDN 等服务的时候续签证书可能会用到 DNS 验证。

PHP

PHP 的官方镜像缺少 mysql 相关的扩展,所以这里也要用 Dockerfile 自己构建镜像。 PHP 的扩展安装向来十分麻烦,所以我们甚至可以直接 FROM archlinux:latest 然后 RUN pacman -Syu --noconfirm php 来偷懒

好在官方镜像下方提到了 install-php-extensions 项目可以给官方镜像方便地安装扩展

安装 PHP 扩展.png

可以使用 install-php-extensions 命令快速安装扩展。可能会遇到一些网络问题,懂得都懂。

Valutwarden

这里选用 Bitwarden 的 API 替代实现 Valutwarden 来搭建密码管理服务,日常使用体验还可以。 自建的优势是免费, 1Password 老贵了

Typecho

本博客系统选择 Typecho 搭建,时隔 5 年之后 Typecho 终于有了一次正式版更新

typecho.png

博客主题选择了很早就开始使用的 idawnlight/typecho-theme-material 由于 Typecho 1.2.0 新增加的类型检查,这个主题在安装的时候会有错误提示,顺手修了一下 (#102)( 几年不写 PHP 差点都看不懂代码了 ) 。

写在最后

没想好写什么,咕咕咕(x)

评论已关闭