给 Linux 初学者的简单教程,看完后可以对 Linux 系统有基础认识,能够配置常见软件和写一些一键脚本。
本教程写于 2021 年下半年,采用 Debian GNU/Linux 11 (bullseye)。
0. 前言:为什么选择 Debian 国内首批接触 Linux 的人大多延续了 Unix-like 背景。千禧年后,真正的 Linux 使用者开始推广这个系统。红帽(Red Hat)在 1994 年发布操作系统,后改组为 RHEL。得益于优秀的商业支持,RHEL 迅速占领国内市场,成为 Linux 入门的主流选项。
CentOS 是根据 RHEL 源码重新编译的,相当于换标版本。但 CentOS 对入门用户不太友好:
软件源落后主流版本好几代
配置繁琐
SElinux 等功能对个人用户必要性不大
举个例子,很多新手修改 SSH 端口时,操作没问题但就是无法生效,最后发现是没在 SElinux 里放行。
所以本文选择 Debian GNU/Linux 11 (bullseye) 来演示。相比 Ubuntu 往系统里塞各种私货,Debian 始终保持着一个纯净 Linux 的追求。
1. 环境搭建 1.1 系统选择与安装 Debian 安装包命名规则:
11 - 大版本号,代号称 bullseye(来源于《玩具总动员》角色名)
amd64 - 64 位系统(i386/x86 是 32 位)
netinst - 网络安装版(需联网),DVD 后缀是完整版
firmware - 含第三方非开源驱动(如 intel、Realtek 网卡驱动)
VPS 一键重装脚本 (推荐使用 vicer 的脚本):
1 bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh' ) -d 11 -v 64 -p "自定义root密码" -port "自定义ssh端口"
1.2 常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 cat /etc/os-releasetouch /home/hello.pyls -la cd /homecd .. cd - mkdir /home/Pythonmv /home/hello.py /home/helloworld.pycp /home/fileA /home/fileBcp -r /home/folderA /home/folderB rm /home/hello.pyrm -rf /home/Python du -lh
1.3 文本编辑器:nano 和 vim Debian 11 自带简便的 nano 编辑器,非常适合新手。
nano 使用 1 nano /etc/apt/sources.list
常用快捷键:
Ctrl+O - 保存
Ctrl+X - 退出
Ctrl+C - 取消
vim 使用 vim 被称作”编辑器之神”,功能强大但需要学习。
1 2 3 4 5 6 apt update apt install vim -y vim /etc/apt/sources.list
基本操作:
按 i 或 Insert 进入编辑模式
按 Esc 退出编辑模式
:wq - 保存并退出
:q! - 不保存强制退出
1.4 更新系统 1 2 3 4 5 6 7 8 9 10 11 12 13 apt update apt list --upgradable apt upgrade -y apt remove vim apt purge vim apt autoremove
2. SSH 连接和基础配置 2.1 SSH 客户端推荐
客户端
特点
Xshell
家庭免费,中文,限制 4 个会话
MobaXterm
功能强大,文件传输、性能监控、远程桌面等
FinalShell
国产,全中文
electerm
开源免费,跨平台
PuTTY
老牌,简单
2.2 修改 SSH 端口 SSH 默认端口是 22,容易被扫描攻击。建议改成高端口(如 35261):
1 2 3 vim /etc/ssh/sshd_config systemctl restart ssh
2.3 密钥登录 相比密码登录,密钥更安全:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ssh-keygen -t rsa touch ~/.ssh/authorized_keyscat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keyschmod 700 ~/.sshvim /etc/ssh/sshd_config systemctl restart ssh
3. Linux 文件系统 3.1 文件系统格式 Linux 将所有硬盘”挂载”在 / 根目录下。Linux 普遍使用 EXT4 格式,与 Windows 的 NTFS 互不兼容。
3.2 目录结构
目录
说明
/bin
应用程序
/boot
启动文件
/dev
外部设备(Linux 一切皆文件)
/etc
系统配置文件
/home
用户目录
/root
root 用户目录
/tmp
临时文件
/usr
共享资源(类似 Windows 程序目录)
/var
不断变化的文件(如日志)
3.3 权限说明
4. Shell 脚本入门 简单示例:查看 CPU 和内存使用率
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/bin/bash echo "1 for CPU, 2 for RAM" read choiceif [ $choice -eq 1 ]; then echo "CPU usage:" grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}' elif [ $choice -eq 2 ]; then echo "RAM usage:" free -m | grep Mem | awk '{print ($3/$2)*100 "%"}' else echo "WRONG INPUT" fi
5. Crontab 定时任务 1 2 3 4 5 6 crontab -e */15 * * * * /usr/bin/python3 /usr/local/weather/weather.py
时间设置推荐使用 crontab.guru
6. 系统权限 6.1 用户管理 1 2 3 4 5 6 7 8 9 adduser mjj su mjj apt install sudo -y usermod -aG sudo mjj
6.2 权限命令 1 2 3 4 5 6 7 8 chmod +x script.shchmod -R 755 /folder/chown -R www-data:www-data /var/www/html
注意: 永远不要使用 chmod +777!这是安全隐患!
7. Systemd 服务管理 7.1 开机自启和进程守护 1 2 3 4 5 6 7 8 9 10 11 systemctl enable frps systemctl start frps systemctl status frps systemctl restart frps
7.2 自定义服务 1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description =My AppAfter =network.target[Service] Type =simpleWorkingDirectory =/opt/myappExecStart =/usr/bin/node app.jsRestart =always[Install] WantedBy =multi-user.target
8. 网站环境搭建 8.1 宝塔面板 国内版:https://www.bt.cn/
1 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
国际版(aapanel):https://www.aapanel.com/install.html
8.2 手动搭建 安装 Nginx
安装 PHP
安装数据库 1 2 apt install mariadb-server mysql_secure_installation
配置 SSL 证书(Let’s Encrypt) 1 2 3 4 5 6 7 8 9 apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot certbot-nginx ln -s /opt/certbot/bin/certbot /usr/bin/certbotcertbot --nginx
9. Docker 快速入门 9.1 安装 Docker 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 apt update apt install -y ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/nullapt update apt install -y docker-ce docker-ce-cli containerd.io docker run hello-world
9.2 常用 Docker 命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 docker pull nginx docker run -d -p 80:80 --name mynginx nginx docker ps -a docker stop mynginx docker start mynginx docker rm mynginx docker images
9.3 Docker 安装 Nextcloud(网盘) 在 Docker Hub 搜索 Nextcloud,获取安装命令。
10. 内网穿透:frp 示例 服务端配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz tar -zxvf frp_0.38.0_linux_amd64.tar.gz cd frp_0.38.0_linux_amd64/mkdir /etc/frp/mv frps.ini /etc/frp/frps.inimv frps /bin/mv systemd/frps.service /etc/systemd/system/systemctl enable frps systemctl start frps
客户端配置 1 2 3 4 5 6 7 8 9 10 [common] server_addr = 你的服务器IP server_port = 7000 [ssh] type = tcplocal_ip = 127.0.0.1 local_port = 22 remote_port = 6000
配置完成后,通过 服务器IP:6000 即可访问内网设备的 SSH。