Ubuntu服务器搭建是企业级应用和个人开发中常见的任务,其开源、稳定和丰富的社区支持使其成为众多场景的首选,本文将从准备工作到服务部署,详细讲解Ubuntu服务器的完整搭建流程,帮助读者快速上手。
准备工作
在开始搭建前,需明确服务器用途(如Web服务、数据库、应用部署等)并准备相应资源,硬件方面,建议至少2核CPU、4GB内存、20GB存储(根据实际需求调整);网络需确保公网IP(如为云服务器)或局域网可达,软件方面,推荐使用Ubuntu Server LTS版本(如22.04),其长期支持周期更适合稳定运行。
系统安装
- 下载Ubuntu Server镜像(官网或阿里云镜像站),通过刻录U盘或云平台控制台启动安装。
- 安装过程中选择“Minimal”安装(减少不必要组件),分区建议使用LVM(逻辑卷管理),便于后续扩容。
- 设置时区、键盘布局,创建初始用户(避免直接使用root)。
网络配置
服务器网络通常需静态IP,避免DHCP导致的地址变动,以Ubuntu 22.04为例,编辑/etc/netplan/01-netcfg.yaml
(文件名可能因网卡不同而异):
network: version: 2 ethernets: ens33: # 网卡名称,通过ip a查看 dhcp4: no addresses: [192.168.1.100/24] # 静态IP及子网掩码 gateway4: 192.168.1.1 # 网关 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS
保存后执行netplan apply
使配置生效,通过ip a
验证IP是否生效。
配置项 | 说明 | 示例值 |
---|---|---|
dhcp4 | 是否启用DHCP | no |
addresses | 静态IP及子网掩码 | 168.1.100/24 |
gateway4 | 网关地址 | 168.1.1 |
nameservers | DNS服务器 | 8.8.8, 114.114.114.114 |
服务器初始化设置
更新系统
sudo apt update && sudo apt upgrade -y # 更新软件包列表并升级系统
配置主机名
sudo hostnamectl set-hostname server01 # 设置主机名,便于管理
创建管理员用户
sudo adduser admin # 创建新用户(示例用户名:admin) sudo usermod -aG sudo admin # 将用户加入sudo组,赋予root权限
SSH安全配置
默认SSH配置允许root远程登录,存在安全风险,需优化:
编辑/etc/ssh/sshd_config
:
PermitRootLogin no # 禁止root远程登录 PasswordAuthentication no # 禁止密码认证,仅允许密钥认证 Port 2222 # 修改默认SSH端口(避免22端口扫描)
保存后重启SSH服务:sudo systemctl restart sshd
。
生成SSH密钥对(本地执行):ssh-keygen -t rsa -b 4096
,将公钥(~/.ssh/id_rsa.pub
)上传至服务器:ssh-copy-id -p 2222 admin@服务器IP
。
安装常用服务
根据需求安装Web服务器、数据库等服务,以下以Nginx+MySQL+PHP(LNMP环境)为例。
安装Nginx
sudo apt install nginx -y # 安装Nginx sudo systemctl start nginx # 启动服务 sudo systemctl enable nginx # 设置开机自启
浏览器访问服务器IP,若显示“Welcome to nginx!”,则安装成功,默认网站目录:/var/www/html
。
安装MySQL
sudo apt install mysql-server -y # 安装MySQL sudo mysql_secure_installation # 安全配置(设置root密码、匿名用户、测试数据库等)
配置完成后,登录MySQL:sudo mysql -u root -p
,创建数据库和用户:
CREATE DATABASE webdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'Password123!'; GRANT ALL PRIVILEGES ON webdb.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
安装PHP及扩展
sudo apt install php-fpm php-mysql php-mbstring php-xml php-zip -y # 安装PHP及常用扩展 sudo systemctl start php8.1-fpm # 启动PHP-FPM(版本号可能为8.0/8.2,根据实际安装调整) sudo systemctl enable php8.1-fpm
配置Nginx支持PHP
编辑Nginx站点配置(/etc/nginx/sites-available/default
):
server { listen 80; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 与PHP-FPM版本匹配 } }
保存后测试配置:sudo nginx -t
,若无报错则重启Nginx:sudo systemctl restart nginx
。
服务 | 安装命令 | 配置文件路径 | 常用命令 |
---|---|---|---|
Nginx | sudo apt install nginx -y | /etc/nginx/nginx.conf | systemctl start/stop/restart nginx |
MySQL | sudo apt install mysql-server -y | /etc/mysql/mysql.conf.d/mysqld.cnf | systemctl start/stop/restart mysql |
PHP-FPM | sudo apt install php-fpm -y | /etc/php/8.1/fpm/php.ini | systemctl start/stop/restart php8.1-fpm |
防火墙与安全加固
配置UFW防火墙
sudo ufw allow 2222/tcp # 允许SSH端口(修改后的端口) sudo ufw allow 80/tcp # 允许HTTP sudo ufw allow 443/tcp # 允许HTTPS sudo ufw enable # 启用防火墙(输入y确认)
禁用不必要服务
sudo systemctl disable --now avahi-daemon # 禁用网络发现服务 sudo systemctl disable --now cups # 禁用打印服务
定期更新系统
设置自动更新:sudo apt install unattended-upgrades -y
,编辑/etc/apt/apt.conf.d/50unattended-upgrades
,开启安全更新:
Unattended-Upgrade::Automatic-Reboot "true"; # 自动重启 Unattended-Upgrade::Automatic-Reboot-Time "02:00"; # 重启时间
维护与监控
日志查看
- Nginx访问日志:
/var/log/nginx/access.log
- MySQL错误日志:
/var/log/mysql/error.log
- 系统日志:
/var/log/syslog
可通过tail -f
实时查看日志,如tail -f /var/log/nginx/access.log
。
备份策略
使用rsync
定期备份重要数据(如网站目录、数据库):
# 备份网站目录到远程服务器 rsync -avz /var/www/html/ user@backup-server:/backup/web/ # 备份数据库 mysqldump -u root -p webdb > /backup/webdb_$(date +%F).sql
通过crontab -e
设置定时任务(如每天凌晨2点执行备份):
0 2 * * * /usr/bin/mysqldump -u root -p密码 webdb > /backup/webdb_$(date +%F).sql
相关问答FAQs
Q1:如何检查Ubuntu服务器是否正常运行?
A:可通过以下命令检查服务状态和系统资源:
- 查看系统负载:
uptime
(显示1/5/15分钟平均负载) - 查看CPU/内存使用:
htop
(需安装:sudo apt install htop -y
) - 查看关键服务状态:
systemctl status nginx
、systemctl status mysql
- 检查网络连通性:
ping 8.8.8.8
、curl https://www.baidu.com
Q2:忘记服务器密码怎么办?
A:若为本地服务器,可通过重启进入GRUB菜单,选择“Advanced options for Ubuntu”,进入恢复模式,选择“root” shell,执行passwd 用户名
重置密码;若为云服务器,可通过控制台“重置密码”功能修改(需先停止服务器,部分云平台支持在线重置),重置后重启服务器即可正常登录。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31382.html