Debian 11 服务器配置日记

发布于:2023-01-22 ⋅ 阅读:(15) ⋅ 点赞:(0) ⋅ 评论:(0)

异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在CSDN、掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!


以下内容为使用 Debian 11.4.0 Network Installer 镜像的条件下,为一台 ThinkPad 笔记本安装 server 系统测试通过。理论适用于 Ubuntu 等 Debian 系 Linux,具体请自行测试。

装机过程

安装过程笔记本非常容易发热,而且此时并没有好用的风扇驱动,在电脑旁放一个电扇比冰袋和空调好用……

装机过程中换源那一步, 一定不要用163源 ,血的教训……下文件30KB/s,睡了20分钟起来还没下载好

远程登录后切换到 root

su

下面的步骤全部默认你在 root 下执行。

安装 sudo

apt install sudo

设置当前用户的 root 权限

# username替换为你的用户名
# 以 root 用户执行也要加 sudo
sudo usermod -aG sudo username

设置合盖不休眠

打开配置文件

sudo vim /etc/systemd/logind.conf 

在文件中查找#HandleLidSwitch=suspend

修改为HandleLidSwitch=ignore

保存,重启服务

systemctl restart systemd-logind  # Debian
service systemd-logind restart  # Ubuntu

ssh 配置

禁止 root 用户 ssh 登录

(禁止后你仍然可以通过别的用户登录后使用su 切换到 root)

vim /etc/ssh/sshd_config

查找 #PermitRootLogin prohibit-password

修改为 PermitRootLogin no

重启服务

systemctl restart ssh  # Debian
service ssh restart  # Ubuntu

同时启用密码和 ssh 公钥登录

还是先更改 vim /etc/ssh/sshd_config

在文件中添加这两行(或者将原有内容取消注释)

PubKeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

使用 你希望使用公钥登录的用户 ,创建 ~/.ssh/authorized_keys 文件,向其中写入 你个人电脑(即 ssh 客户端) 的 ssh 公钥信息。如果有多个,则每个一行。

出于安全考虑,最好设置如下权限:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

最后重启 ssh 服务

systemctl restart ssh

此处介绍的是将客户端公钥添加到认可的公钥列表的方法。如果你希望客户端使用服务器的 ssh 公钥进行登录,则先在服务器使用对应要登录生成 ssh 密钥对,然后创建 ~/.ssh/authorized_keys 文件,将公钥中的内容复制进去,然后重启 ssh 服务即可。参照上文的描述,也可以同时支持客户端和服务端密钥。

更换 apt 源

cp /etc/apt/sources.list /etc/apt/sources.list.bak
cat /dev/null > /etc/apt/sources.list
vim /etc/apt/sources.list

向其中输入如下内容(Debian 11 bullseye,更多系统请前往 debian | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror查询):

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

pip 安装和换源

sudo apt install python3-pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  # 注意:这个换源仅针对单用户生效,多用户需要分别执行

修改时区

sudo timedatectl set-timezone Asia/Shanghai

常用软件安装

按需选择即可。

apt install gcc g++ cmake git

安装 MySQL

apt 安装

首先添加 apt 源:参考 mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,选择自己的系统版本后将内容写入 /etc/apt/sources.list.d/mysql.list。写入时建议删去自己不需要的版本号,例如我写入的内容:

deb https://mirrors.tuna.tsinghua.edu.cn/mysql/apt/debian bullseye mysql-8.0 mysql-tools

然后执行如下命令:

sudo apt update
sudo apt install mysql-server  # 安装过程中会要求设置 root 的密码;这一步很可能卡住,千万不要退出!耐心等待几分钟
mysql_secure_installation  # 可选:更安全的配置(禁用 root 远程登录等)

如果在执行 apt update 时遇到这样的报错:

W: GPG error: http://repo.mysql.com/apt/debian bullseye InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
E: The repository 'http://repo.mysql.com/apt/debian bullseye InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

请定位这个文本:NO_PUBKEY 467B942D3A79BD29 ,提取后面的字符串,执行这样的命令:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29  # 最后一个参数为提取到的字符串

测试连接和新建用户

连接到数据库

mysql -u root -p

(上一步成功登录后)创建一个名为 username ,密码为 password ,允许从任意地址登录的用户:

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

若要退出 mysql 命令行,使用 exit 或按下 Ctrl + Z

更改端口

修改配置文件(通常为 /etc/mysql/my.cnf/etc/my.cnf ,如果找不到请参考这篇文章),向其中增加如下内容(若其中已有 [mysqld] 则在该部分追加第二行即可)

[mysqld]
port=3306  # 3306为默认端口,根据自己喜好更改即可

修改后重启服务:

sudo systemctl restart mysql

Nginx 安装

sudo apt install nginx

请注意配置文件放在 /etc/nginx/sites-available 文件夹中,使用形如 sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example 的命令创建软链接到 sites-enabled (必须是绝对路径),然后 sudo nginx -s reload 即可生效。

nvm(为所有用户配置)

nvm 是一个很好用的 node 版本管理器,可以实现同一电脑同一用户同时使用不同版本的 node,具体请自行查找资料。

参考文章:在linux上为所用用户安装 NVM - SegmentFault 思否

mkdir /usr/local/nvm /opt/nvm
git clone https://github.com/nvm-sh/nvm.git /opt/nvm  # GitHub 响应慢请尝试镜像站 https://ghproxy.com/https://github.com/nvm-sh/nvm.git

编辑 /etc/profile.d/nvm.sh 文件,写入如下内容:

export NVM_NODEJS_ORG_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/  # 更换源站加速下载
export NVM_DIR=/usr/local/nvm  # 导出 NVM_DIR 环境变量,让 nvm 安装 node 到该目录
source /opt/nvm/nvm.sh  # 执行 nvm 的命令, 激活 nvm 到 shell 中

nvm use 16.16.0  # 用户登录后默认使用的 node 版本

重新进入终端(如果是使用 su 间接进入 root,请用 su - root 替代 su),安装几个常用版本(下放给出的是 10 ~ 16 各个大版本最新的 LTS):

nvm install 10.24.1
nvm install 12.22.12
nvm install 14.20.0
nvm install 16.16.0

此时用户登录的效果:

在这里插入图片描述
注意:此时除 root 用户外均无法使用 nvm install 安装更多版本的 node,因为环境变量无法在 sudo 中使用,而 /usr/local 路径需要 root 才能写入

若每个用户想单独配置自己的默认版本号,直接将 nvm use xxx 写入 .bashrc 即可;若要自己安装 nvm 以下载更多版本,则正常使用下面的命令安装即可:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash
source ~/.bashrc
export NVM_NODEJS_ORG_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/  # 更换源站,为未来使用方便也可以加入 ~/.profile 中

PostgreSQL 安装和配置

安装

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt-get install -y gnupg2
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql-14  # postgresql-14是目前官方推荐的版本号;‘-14’可替换为任意版本号或删除以使用默认

配置外网访问

(该部分需要的两个配置文件路径,对于非 14 版本的 PostgreSQL 可能有所不同,请自行查阅资料)

编辑文件 /etc/postgresql/14/main/pg_hba.conf ,在图示位置添加如下内容:

host    all             all             0.0.0.0/32              md5
# 注意,为了维持原配置文件格式,最好不要把两行放在一起!
host    all             all             0.0.0.0/0               md5

在这里插入图片描述
再编辑文件 /etc/postgresql/14/main/postgresql.conf (14 对应你安装的版本号),在如图所示位置添加 listen_addresses = '*' (看图就能知道,配置端口也在这里)

在这里插入图片描述
重启服务生效:

sudo systemctl restart postgresql

配置

打开 PostgreSQL 终端

sudo -u postgres psql

创建用户:

CREATE USER username WITH PASSWORD '*****';

服务器风扇不转

在这里插入图片描述