很多开发者买阿里云服务器却不知如何安装AlmaLinux从零开始手把手教你完成系统部署到Web服务器上线
买了阿里云ECS却对着黑色终端发呆?别慌,这事儿我见得太多太多了。刚入行那会儿,我也曾经对着空荡荡的服务器不知所措——明明钱都花了,结果连个网页都跑不起来,那滋味真不好受。
今天咱们就从头到尾,把AlmaLinux装好、配置好、再把Web服务器跑起来,让你买的服务器真正物尽其用。
先搞清楚:你买到了什么
阿里云ECS(弹性计算服务)本质上就是一台远程电脑。你付钱,它租给你,你能SSH连上去随便折腾。默认情况下,新买的ECS可能预装了CentOS、Ubuntu或者Windows Server——但如果你想要AlmaLinux,那就需要自己装。
AlmaLinux是什么呢?简单说,它是CentOS的替代品。CentOS 8停更之后,很多开发者在找替代品,AlmaLinux就是其中之一——它跟RHEL(Red Hat Enterprise Linux)1:1二进制兼容,稳定、免费、社区活跃,非常适合跑生产环境。
第一步:把AlmaLinux装上去
登录阿里云控制台,找到你买的ECS实例,点击「远程连接」——这里推荐用VNC方式,因为这时候服务器还没装系统,SSH是连不上的。
进VNC控制台之后,你会看到阿里云提供的重装系统界面。点「更换操作系统」,然后在镜像选择里找AlmaLinux。目前稳定版本是AlmaLinux 9(基于RHEL 9),如果你需要更保守的环境也可以选择AlmaLinux 8。
装系统之前记得确认你的数据盘有没有重要数据——重装系统会格式化系统盘,数据盘一般不受影响,但保险起见,重要数据先备份到OSS或者本地。
系统装完之后,你会得到:
- 公网IP地址
- 初始用户名(一般是root)
- 初始密码(阿里云会通过短信或者控制台邮件发给你)
第二步:用SSH连上去
装好系统不代表万事大吉,接下来咱们得用SSH工具连上去。推荐用Termius(跨平台,界面友好)或者Terminal(macOS/Linux自带)。
在终端里输入:
ssh root@你的公网IP
比如:
ssh root@47.98.xx.xx
第一次连接会提示确认指纹,输入yes即可。然后输入密码——注意,Linux输入密码时屏幕上不会显示任何字符,这是正常的,输完直接回车。
连上了之后,第一件事就是改密码,找个强一点的:
passwd
按提示输入新密码两次。别偷懒,密码太弱等于把门敞开着。
第三步:系统更新和基础配置
新装的系统相当于毛坯房,得先打扫干净再入住。先跑一遍系统更新:
dnf update -y
这条命令会把所有包都升级到最新版本,大概需要几分钟。AlmaLinux用的是dnf包管理器,跟以前CentOS 7的yum语法几乎一样。
更新完之后,建议装一些常用工具:
dnf install -y vim wget curl git net-tools telnet sudo
vim——文本编辑器,没它写配置文件很痛苦wget和curl——下载文件必备git——版本控制,后面部署代码用得上net-tools——包含netstat命令,查端口占用很方便telnet——测试端口通不通的神器
第四步:创建普通用户(强烈建议)
很多教程到这儿直接让你用root干所有事,这是大忌。生产环境里用root等于裸奔。咱们创建一个普通用户,用sudo提权。
useradd -m -s /bin/bash devuser
passwd devuser
然后把devuser加到wheel组(AlmaLinux里wheel组默认有sudo权限):
usermod -aG wheel devuser
验证一下sudo能不能用:
su - devuser
sudo whoami
输出root就说明配置成功了。
接下来为了安全,建议禁用root远程登录。编辑SSH配置:
sudo vim /etc/ssh/sshd_config
找到这一行:
PermitRootLogin yes
改成:
PermitRootLogin no
然后重启SSH服务:
sudo systemctl restart sshd
改完之后用普通用户再SSH连一次试试,确认能连上再断开root会话。千万别在还没验证普通用户能登录的情况下关rootSSH,不然你就真进不去了。
第五步:配置防火墙
AlmaLinux默认用firewalld做防火墙。新装的系统默认规则很宽松,咱们得加几条必要规则:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
这几条命令的意思是:开放HTTP(80端口)、HTTPS(443端口)和SSH(22端口),其他端口默认拒绝。
验证一下规则有没有生效:
sudo firewall-cmd --list-all
你应该能看到services里有http https ssh。
如果你想开放其他端口(比如后面要装MySQL的3306,或者Redis的6379),用这个命令:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
第六步:安装Web服务器
这一步看你想用什么。主流选择有三个:Nginx、Apache、Caddy。
选Nginx(推荐,性能好、配置灵活)
sudo dnf install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
enable是设置开机自启,start是立即启动。
启动后用浏览器访问你的公网IP,应该能看到Nginx的欢迎页面——这就说明Web服务器跑起来了。
如果想验证一下:
curl -I http://localhost
返回HTTP/1.1 200 OK就说明没问题。
选Apache(传统派最爱)
sudo dnf install -y httpd
sudo systemctl enable httpd
sudo systemctl start httpd
选Caddy(最简单,自动HTTPS)
sudo dnf install -y caddy
sudo systemctl enable caddy
sudo systemctl start caddy
Caddy的牛逼之处在于它会自动帮你申请和续期SSL证书,对于新手来说省了很多事。
第七步:部署你的第一个网站
现在Web服务器跑起来了,但里面还是空的。咱们部署一个简单的HTML页面来测试。
先看一下Nginx默认的网页目录:
sudo vim /etc/nginx/nginx.conf
找到root指令,一般默认是/usr/share/nginx/html。
创建一个简单的测试页面:
sudo vim /usr/share/nginx/html/index.html
写入:
<!DOCTYPE html>
<html>
<head>
<title>我的第一个网站</title>
</head>
<body>
<h1>恭喜!网站部署成功!</h1>
<p>这是运行在AlmaLinux上的Nginx服务器。</p>
<p>部署时间:$(date)</p>
</body>
</html>
保存退出,刷新浏览器看看效果。
第八步:配置域名和HTTPS(生产环境必须)
裸奔的HTTP网站现在已经没人用了,HTTPS是标配。有两种方案:
方案一:用Caddy(最简单)
Caddy的配置文件/etc/caddy/Caddyfile写成这样:
yourdomain.com {
root * /usr/share/caddy
file_server
encode gzip
php_fastcgi unix//run/php-fpm/www.sock
}
然后重启:
sudo systemctl restart caddy
Caddy会自动帮你向Let’s Encrypt申请证书,全程无需手动操作。
方案二:Nginx + Certbot
如果你用Nginx,需要手动配SSL。先装Certbot:
sudo dnf install -y certbot python3-certbot-nginx
然后运行:
sudo certbot --nginx -d yourdomain.com
按提示输入邮箱、同意条款,Certbot会自动修改Nginx配置并申请证书。配置完重启Nginx:
sudo systemctl restart nginx
以后证书快到期了,自动续期可以加个cron任务:
sudo crontab -e
加一行:
0 3 * * * certbot renew --quiet && systemctl reload nginx
每天凌晨3点自动检查并续期。
第九步:安装PHP(如果需要动态网站)
很多网站是用PHP写的(比如WordPress),咱们把PHP环境也配上:
sudo dnf install -y php php-fpm php-mysqlnd php-json php-mbstring php-xml php-curl php-gd
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
然后修改Nginx配置,让它支持PHP:
sudo vim /etc/nginx/conf.d/default.conf
在location /块下面加上:
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重启Nginx和PHP-FPM:
sudo systemctl restart nginx
sudo systemctl restart php-fpm
测试PHP是否工作:
sudo vim /usr/share/nginx/html/info.php
写入:
<?php phpinfo(); ?>
浏览器访问http://yourdomain.com/info.php,如果看到PHP信息页面,说明一切正常。
第十步:部署你的实际项目
现在环境都齐了,把代码放上去。假设你的项目是用Git管理的:
cd /usr/share/nginx/html
sudo git clone https://github.com/yourusername/yourproject.git .
或者用rsync从本地同步:
rsync -avz /local/path/ root@your_server:/usr/share/nginx/html/
如果是Node.js项目,还需要装Node:
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo dnf install -y nodejs
然后用PM2来管理进程:
sudo npm install -g pm2
pm2 start app.js
pm2 save
pm2 startup
一些实用小技巧
查服务状态:
systemctl status nginx
看日志排查问题:
sudo tail -f /var/log/nginx/error.log
检查端口占用:
sudo netstat -tlnp
测试端口是否从外部可达:
telnet yourdomain.com 80
定时备份数据库(假设是MySQL):
crontab -e
加一行:
0 2 * * * mysqldump -u root -p'yourpassword' yourdatabase > /backup/db_$(date +\%Y\%m\%d).sql
最后说两句
装服务器这事儿,看着复杂,真动手了就那几步。关键是别怕折腾,出问题看日志、查文档,几乎都能解决。阿里云的ECS控制台、AlmaLinux的官方文档、Nginx的官方文档,都是很好的资源。
你这台服务器买都买了,别让它闲着。把它变成一个能跑网站的服务器,看着自己的代码在远程机器上跑起来,那种感觉还是挺爽的。
要是中间遇到什么问题,把报错信息贴出来,基本上Google一下或者问AI都能找到答案。别慌,一步步来,你搞定的。
