Debian 新系统部署

基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
# 更新
sudo apt update
sudo apt upgrade
# 添加新用户
sudo adduser 用户名 -g users
# 给用户添加 sudo 权限
sudo usermod -aG sudo 用户名
# 配置 ssh key 登录
sudo mkdir -p /home/用户名/.ssh
vim /home/用户名/.ssh/authorized_keys
# 贴入 ssh 公钥
chown -R 用户名:users /home/用户名

设置自定义命令

/etc/profile 文件添加一下配置

1
2
3
4
5
alias l="ls -lhF --color"
alias ll="ls -lAhF --color"
alias la="ls -A --color"
alias clean="history -c; history -w"
alias ws="cd ~/workspace"

source /etc/profile

ssh 登录设置

1
2
3
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no # 禁用密码登录
PermitRootLogin no # 禁止root用户登录,可通过user0登录后切换到root

安装应用包

1
sudo apt install git

Debian 通过 APT 安装 PHP

用 WSL Debian 12 安装 php 做开发,apt 的 PHP 版本足够新,安装非常方便。
如果 Debian 版本比较老,建议参考这里通过源码编译安装PHP

1
2
sudo apt install php php-dev php-gd php-curl php-mysql \
php-mbstring php-redis php-xdebug php-intl php-zip

安装 swoole

1
sudo pecl install swoole

修改配置

1
sudo vim /etc/php/8.2/cli/php.ini

加入:

1
extension=swoole.so

Debian 通过 APT 安装 MariaDB

在开发环境完全可以用 MariaDB 代替 MySQL,而且安装更方便。

1
2
3
4
5
6
7
8
9
10
11
# 更新索引包
sudo apt update
# 安装 MariaDB 软件包
sudo apt install mariadb-server
# 配置 MariaDB
sudo mysql_secure_installation
# 启动服务
sudo service mariadb start

# 查看服务状态
sudo service --status-all

服务状态显示例如:

1
2
3
4
5
6
7
8
9
[ + ]  cron
[ - ] hwclock.sh
[ + ] kmod
[ + ] mariadb
[ + ] networking
[ + ] procps
[ - ] rsync
[ - ] sudo
[ + ] udev
  • [ + ] 为已启动
  • [ - ] 为未启动

配置文件位置:

1
/etc/mysql/debian.cnf

WSL 迁移发行版文件位置

迁移 wsl 系统的文件位置的方法是:导出再导入。我这里操作的发行版是 Debian,你根据需要更换就可以,如 Ubuntu。

1、停止 wsl 运行的虚拟机

1
2
3
4
5
# 停止全部虚拟机
wsl --shutdown

# 只停止 Debian
wsl -t Debian

2、导出

导入导出有两种模式,一种是导出 tar 文件,再把 tar 文件导入到指定的文件夹,生成新的虚拟硬盘;另一种是导出 vhdx (虚拟硬盘)文件,再把虚拟硬盘导入,继续使用该虚拟硬盘。我们用第二种方法操作。

1
wsl --export Debian D:\WSL\Debian-12-ext4.vhdx --vhd

也可以直接把 C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName]\ext4.vhdx 复制到指定位置再导入。

3、卸载掉要迁移的发行版

1
wsl --unregister Debian

4、导入

1
wsl --import-in-place Debian D:\WSL\Debian-12-ext4.vhdx

5、设置默认用户

如果不设置,默认将用 root 用户登录。

1
Debian config --default-user <username>

Debian 12 设置使用清华镜像源

Debian 官方源网速太慢,换成国内源必不可少。

1、安装 apt https 支持

1
sudo apt install apt-transport-https ca-certificates

2、修改源

先备份 /etc/apt/sources.list,然后把其内容替换为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

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

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

deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

备注

Linux 常用命令: 权限管理

  • 每个文件和文件夹有三种用户许可类型:
    • u 所有者(user)
    • g 所有者群组(group),代表组中的所有成员;
    • o 其他(other)。
  • 三种基本权限类型可组合:
    • r 读取(read);
    • w 写(write);
    • x 执行(eXecute)。
  • 三个控制文件许可权限的命令:
    • chown user file 命令更改文件的所有者;
    • chgrp group file 改变所有群组;
    • chmod rights file 改变文件许可权限。
阅读更多

Linux 创建交换分区提供虚拟内存,解决运行时出现提示内存不足问题

如果服务器内存不够用,可以创建交换区提供虚拟内存,支持要求较大内存程序的执行。

创建交换分区命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建分区路径
sudo mkdir -p /var/cache/swap/

# 设置分区的大小
sudo fallocate -l 4G /var/cache/swap/swap0
# 如果没有 fallocate,则可以用下面的创建方式
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
#sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64

# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s

删除交换分区的命令

1
2
3
sudo swapoff /var/cache/swap/swap0
# sudo swapoff -a # 停用全部分区
sudo rm /var/cache/swap/swap0

  • 一台服务器可创建多个 swap。

Debian 系统源码编译安装 PHP8.2

1
2
groupadd www
useradd www -r -g www -s /bin/false
  • yum 安装相关库
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
sudo apt update
sudo apt -y install cmake git wget mtr vim gcc autoconf make bison automake \
bzip2 ncurses-dev curl e2fsprogs openssl build-essential \
libtool libxml2-dev libssl-dev libcurl4-openssl-dev libpng-dev \
libjpeg-dev libonig-dev libzip-dev libsodium-dev libevent-dev \
libgd-dev libpng-dev libjpeg-dev libwebp-dev libgif-dev \


# sqlite3,如果不用 SQLite 就不需要这一步
wget https://sqlite.org/2023/sqlite-autoconf-3420000.tar.gz
tar zxf sqlite-autoconf-3420000.tar.gz
cd sqlite-autoconf-3420000/
./configure
make && make install

cd ~
wget https://www.php.net/distributions/php-8.2.8.tar.gz
tar zxf php-8.2.8.tar.gz

cd ~/php-8.2.8/

export LD_LIBRARY_PATH=/lib/:/usr/lib/:/usr/local/lib

./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-mysqlnd \
--with-pdo-mysql \
--with-pdo-mysql=mysqlnd \
--with-mysql-sock \
--with-iconv \
--enable-bcmath \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mbstring \
--enable-gd \
--enable-phpdbg \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-zip \
--with-zlib \
--with-curl \
--with-openssl \
--enable-pcntl \
--enable-simplexml \
--with-sodium \
--enable-exif \
--enable-intl \
--with-webp \
--with-jpeg \
--enable-opcache \
--with-pear

make && make install

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

# CentOS
chkconfig --add php-fpm
chkconfig php-fpm on
chkconfig --list php-fpm # 查看服务器设置

# Debian
# 设置开机启动
# sysv-rc-conf --level 2345 php-fpm on
sysv-rc-conf php-fpm on # 也可以用 sysv-rc-conf 命令图形化设置服务
sysv-rc-conf --list php-fpm

# Debian 还需添加服务 才能用 service php-fpm xxx 命令
vim /lib/systemd/system/php-fpm.service
# 加入以下内容
[Unit]
Description=php-fpm service
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/php-fpm start
ExecStop=/etc/init.d/php-fpm stop
ExecReload=/etc/init.d/php-fpm reload
ExecRestart=/etc/init.d/php-fpm restart
ExecStatus=/etc/init.d/php-fpm status
ExecForceQuit=/etc/init.d/php-fpm force-quit
ExecConfigtest=/etc/init.d/php-fpm configtest
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# END -----

# 启动 php-fpm
service php-fpm start

# 安装 MariaDB(可代替 MySQL)
apt install mariadb-server
mysql_secure_installation
service mariadb start
  • 编译 fileinfo 扩展需要较多内存,报虚拟内存用尽可增加虚拟内存。
  • libgd-dev 包含了 freetype 库
  • SQLite3 扩展默认启用。 允许在编译时使用 –without-sqlite3 禁用之。
  • iconv 系统自带,不需要 apt 或源码安装
  • 加 –with-pear 才会生成 bin/pecl 文件

Linux 常用命令:用户和组管理

用户&组数据文件

用户清单通常保存在 /etc/passwd 文件内,把哈希编码后的密码保存在 /etc/shadow 文件内。这两个文件都是纯文本档,以简单的格式保存,可以用文本编辑器读取与修改。每个用户占一行,其字段以冒号分隔 (“:”)。

  • /etc/passwd 用户清单,按固定顺序记录字段,并以 : 隔开,如:admin:x:1000:1000::/home/admin:/bin/bash,字段清单:
    • 用户名,例如 admin;
    • 密码: 用 DES, MD5, SHA-256 或 SHA-512 加密过的密码,特殊值 x 表示密码保存在 /etc/shadow 文件;
    • uid:用于辨识用户的不重复数字;
    • gid:用户主要群组 (Debian 的默认值系为每个用户创建一个群组) 的不重复号码;
    • GECOS:用户常规信息,类似于备注,例如其真实姓名和电话号码等;
    • 登入目录,登录后进入该目录,用于保存用户的个人文件 (环境变量 $HOME 通常指向此处);
    • 登录时运行的程序。通常是命令解译器 (shell),若指定为 /bin/false (不做任何事并立即回到控制),则用户无法进入系统;若指定为 /usr/sbin/nologin 则是禁止登录。
  • /etc/shadow 保存用户密码,含以下的字段:
    • 用户名;
    • 加密的密码;
    • 管理密码期限的字段。
  • /etc/group 用户组信息,包括以下的字段:
    • 群组名称;
    • 密码 (可选):只在加入群组时会用到 (使用 newgrp 或 sg 命令,见专栏 基本知识 在多个群组工作);
    • gid:不重复的群组识别码;
    • 成员清单:属于此群组的用户名清单,以逗号分隔。
阅读更多