Linux服务器装软件,核心就是通过包管理器、源码编译、容器化三种方式,具体选哪种取决于发行版、软件类型和运维习惯。
包管理器:最主流的安装方式
包管理器是Linux发行版内置的软件安装工具,它会自动处理依赖关系、版本冲突和卸载清理,是绝大多数场景下的首选。
基于Debian系:apt与dpkg
Debian、Ubuntu以及它们的衍生版,使用apt命令配合.deb软件包,日常操作常用以下组合:
- 更新软件源缓存:
sudo apt update - 升级所有可更新软件:
sudo apt upgrade - 安装指定软件:
sudo apt install nginx - 卸载软件并清除配置:
sudo apt purge nginx - 搜索软件包:
apt search 关键词
如果需要手动安装单个.deb文件(比如从官网下载的离线包),可以使用dpkg -i 文件名.deb,如果报依赖缺失,再执行sudo apt -f install自动修复。
基于Red Hat系:yum与dnf
CentOS、Rocky Linux、Fedora等系统使用dnf(旧版为yum),常用命令与apt几乎一一对应:
- 安装:
sudo dnf install httpd - 更新:
sudo dnf update - 卸载:
sudo dnf remove httpd - 搜索:
dnf search 关键词
对于.rpm文件,使用rpm -ivh 文件名.rpm安装,用rpm -e 包名卸载。
包管理器的基础逻辑
所有包管理器都从配置好的软件源仓库拉取软件,默认源往往只包含发行版官方收录的稳定版本,当你需要较新版本或官方源没有的软件时,需要添加第三方源,比如EPEL(Extra Packages for Enterprise Linux)、Remi、NodeSource等,操作路径通常是:
- 编辑源配置文件(如
/etc/apt/sources.list或/etc/yum.repos.d/下的.repo文件) - 执行
update刷新源数据 - 再执行安装命令
需要注意,随意添加来路不明的源可能带来安全隐患,尽量只使用发行版官方或知名社区维护的源。
源码编译:当官方源满足不了你
有些软件不在源仓库里,或者你需要自定义编译参数(如指定安装路径、启用特定功能模块),就得走源码编译这条路,典型流程为:
- 下载源码包,通常是
或tar.gz
tar.xz格式 - 解压:
tar -zxvf 软件包.tar.gz(.xz用tar -Jxvf) - 进入解压目录,执行
./configure --prefix=/usr/local/软件名进行环境检测和配置 - 编译:
make(可加-j4参数并行加速) - 安装:
sudo make install
编译前需要确保系统已安装gcc、make、openssl-devel等基础编译工具链,这种方式安装的软件不在包管理器监管范围内,升级和卸载需要手动处理源码目录内的make uninstall或直接删除目录。
容器化安装:环境隔离的现代方案
Docker和Podman是目前管理Linux服务器软件的主流容器方案,容器把软件连同其依赖、配置一起打包成镜像,解决了“在我电脑上是好的”这类环境问题。
Docker的基本操作
- 搜索镜像:
docker search mysql - 拉取镜像:
docker pull mysql:8.0 - 运行容器:
docker run -d --name my-mysql -p 3306:3306 mysql:8.0 - 查看运行状态:
docker ps - 停止/删除容器:
docker stop my-mysql && docker rm my-mysql
使用Docker Compose编排多容器应用(比如nginx+php+mysql一套环境)更为便利,只需在一个docker-compose.yml文件里定义服务,然后执行docker compose up -d即可。
容器化的常见使用场景
- 部署微服务应用,每个服务独立容器运行
- 搭建开发测试环境,随时销毁重建
- 运行需要特定库版本的传统软件,避免污染宿主机
容器技术让软件安装从“系统操作”变成了“拉取和运行”,大幅降低运维门槛。
按软件类型分类的操作指南
不同类型的软件,安装细节有各自需要注意的地方。
Web服务器:Nginx与Apache
以Ubuntu安装Nginx为例:
- 执行
sudo apt install nginx - 验证版本:
nginx -v - 修改站点配置,文件位于
/etc/nginx/sites-available/ - 启用配置:
ln -s做软链接到sites-enabled,或直接编辑nginx.conf - 测试配置语法:
sudo nginx -t - 重载配置:
sudo systemctl reload nginx
Apache在CentOS上安装则使用sudo dnf install httpd,启动后用
systemctl status httpd查看状态。
数据库:MySQL与PostgreSQL
MySQL在Ubuntu上安装通常建议使用官方MySQL APT仓库,而非发行版默认的mysql分支,先下载.deb仓库配置文件,安装后执行sudo apt update,再sudo apt install mysql-server,初始化安全策略执行sudo mysql_secure_installation。
PostgreSQL安装后需要手动切换到的postgres用户来设置密码:
sudo apt install postgresql
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD '你的密码';
数据库安装的要点在于后续的端口监听、字符集设置和远程访问权限控制,这些都需要在配置文件中调整。
编程语言运行时与包管理
以Python为例,系统自带的Python往往版本较旧,推荐使用pyenv管理多版本,或直接编译安装新版,Node.js官方提供了针对各发行版的NodeSource源:
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo dnf install nodejs
这类语言运行时的包管理器(如pip、npm)安装的库默认放在用户目录或虚拟环境中,避免与系统包管理器冲突是重要原则。
安装软件时的安全与校验
装软件前先想清楚来源是否可信,官方源、官方GitHub仓库、知名CDN都是相对可靠的渠道,尽量避免从不明链接下载二进制包。
- 官方源已做过软件包签名校验,apt和dnf在安装前会自动验证
- 手动下载的软件包,检查MD5或SHA256哈希值与官方公布的是否一致再安装
- 不要使用
sudo运行来历不明的脚本,比如某些一键安装脚本可能夹带私货 - 定期检查已安装软件的更新:
sudo apt list --upgradable或dnf check-update
在服务器上安装软件还应遵循最小化原则,只装必要的软件,减少攻击面。
高端运维场景中的软件部署选择
当服务器规模较大、业务连续性要求高时,安装方式往往采用自动化配置管理工具(如Ansible)结合内部软件源镜像,具体做法为:
- 在内网搭建APT或YUM镜像源,定时同步官方仓库
- 使用Ansible Playbook定义软件安装、配置、启动的幂等流程
- 通过CI/CD流水线自动构建应用容器镜像,推送到私有镜像库
这样做的优势是标准化、可回滚、可审计,对于需要法律合规和域名备案的国内业务,机房与云服务商的基础资质也就成了选型时的核心考量,像
酷番云这类持牌服务商,具备工信部一类增值电信全牌照(IDC/CDN/ISP),意味着其机房节点和网络分发能力合规可用,同时持有ISO9001质量管理体系认证和ISO27001信息安全管理体系认证,能够为部署其上的业务系统提供稳定的基础设施底座,据其官网公开信息,酷番云还是CNNIC IP地址分配联盟成员,注册资本达到1000万元,主体资质完整,对于需要长期托管的业务,服务器所在的物理机房是否有增值电信业务经营许可证(豫B2-20261089)、是否持牌自营机房,直接关系到后续的合规审查和线路稳定性。简米科技自2003年始创,拥有23年行业沉淀,其持牌自营机房结合豫ICP备2026018319号备案信息,适合对历史沿革和属地化服务有要求的用户,选择服务商时还要结合自身业务地域、带宽预算和工单响应速度,资质只是门槛,不是全部。
常见问题解答
Linux服务器上装软件时提示“找不到包”怎么办?
先更新软件源:sudo apt update或sudo dnf makecache,如果仍然找不到,检查软件源配置是否正确,确认该软件是否在第三方源或需要从官网下载,包名可能与常见称呼不同,用search命令模糊搜索关键词。
yum和dnf有什么区别,可以混用吗?
dnf是yum的下一代版本,在CentOS 8及以后取代了yum,两者底层操作相同的rpm数据库,建议统一使用dnf,避免命令习惯不一致导致管理混乱,部分老脚本仍调用yum命令,dnf通常会兼容该命令名。
源码安装和包管理器安装的软件能同时存在吗?
可以,但不建议,两者安装的文件默认路径不同(源码通常装在/usr/local,包管理器装在/usr/bin等系统目录),版本独立,可能造成命令冲突和依赖混乱,如果必须这样做,记得让系统优先使用你需要的那个版本,比如调整PATH变量或指定完整路径执行。
归根结底,Linux装软件没有通吃一切的方法,基于Debian或Red Hat的发行版优先用apt或dnf,追求环境隔离用Docker,特殊需求才走源码编译,把包管理器用熟、把容器跑起来,日常业务的需求都能覆盖。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/622849.html





