重启系统后软件没了?可能是装错地方了

搞网站搭建的时候,经常要在服务器上装各种工具,比如 Nginx、MySQL、Node.js。有次朋友跟我说,他好不容易配好的环境,重启一下全没了,像从来没装过一样。一开始我也纳闷,后来发现这其实是不少新手都踩过的坑。

问题出在哪儿?

如果你用的是临时性的系统盘,或者是在某些云平台的“临时实例”里操作,那重启之后数据丢失是常有的事。尤其是学生党或刚入门的人,喜欢用一些免费的在线实验环境,这些环境大多在重启后会还原到初始状态。

举个例子,你在某个平台上装好了 WordPress,配置好了数据库,结果一重启,SSH 登进去发现命令都找不到。不是系统坏了,而是你装的软件根本没写入持久存储。

看看你的系统挂载了哪些盘

可以运行下面这个命令查看磁盘情况:

df -h

重点看 / 根目录所在的设备。如果显示的是 tmpfs 或者空间特别小(比如 2G),那基本就是临时盘。这种盘里的所有改动,重启后都会消失。

正确的做法是把数据装在持久盘

很多云服务商提供“数据盘”或“持久存储卷”,你需要手动挂载它,并把关键服务安装或配置到这个盘上。比如你可以把网站文件放在 /data/www,数据库文件指向 /data/mysql,然后确保这个 /data 是在持久化存储上。

挂载示例:

mkdir /data
mount /dev/vdb1 /data

然后在 /etc/fstab 里加一行,让它开机自动挂载:

/dev/vdb1 /data ext4 defaults 0 0

容器环境更要注意

如果你用 Docker 搭建网站,也要注意容器本身是无状态的。每次重启容器,里面的文件都会重置。正确的做法是使用数据卷(volume)或绑定挂载(bind mount)把配置和数据存到宿主机的持久路径上。

docker run -d -v /host/path:/container/path nginx

这样即使容器删了重建,网站文件还在。

别忘了检查启动项

有时候软件其实还在,但没设置开机自启,导致你以为它没了。比如你装了 Nginx,但没加到系统服务里,重启后就得手动启动。

CentOS 可以用:

systemctl enable nginx

Ubuntu 则类似:

sudo systemctl enable apache2

加上这一步,下次开机服务就能自动跑起来。

所以遇到“重启后软件没了”,先别慌,查查是不是装到了临时空间,或者压根没设自启。搞清楚存储机制,才能避免重复劳动。