ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

腾讯云轻量服务器实战指南:从选购到LNMP部署全攻略

腾讯云轻量服务器实战指南:从选购到LNMP部署全攻略 直接进入正文不铺陈不废话我最早折腾腾讯云轻量服务器是在2021年。那时这台机器主要用来跑爬虫和给客户做演示环境不贵一个月几十块钱配置看着也够就买了。结果一用就是两年多中间踩了不少坑也摸清了这台小机器的脾气。现在很多人第一次上云都从轻量服务器开始因为确实便宜、简单、所见即所得。但便宜简单背后有一些隐藏的限制和玩法官方文档写得不仔细或者说写了你看不到这里统一梳理一遍。第一篇先讲腾讯云。1. 轻量服务器到底是个什么东西先说一个容易被忽视的事实轻量应用服务器Lighthouse底层依然是标准的云服务器只是在产品形态、网络计费和运维方式上做了大幅简化。它的目标用户很明确——个人站长、独立开发者、学生、小微企业不想折腾复杂网络、安全组、专有网络那一套只想快速开一台机器跑起网站或者服务。这跟云服务器CVM最大的区别不在性能而在使用方式。CVM给你的是“裸金属级别的控制力”VPC网络、安全组策略、弹性公网IP、负载均衡全部要自己搭。轻量服务器把这些全部打包成“防火墙规则”和“固定流量包”你不需要懂网络只需要知道放行哪个端口就行。1.1 轻量服务器的规格怎么选腾讯云轻量服务器的套餐是固定搭配的不像CVM那样可以自由选CPU、内存、带宽、系统盘大小。每个套餐基本是CPU、内存、SSD系统盘、月流量包、峰值带宽打包出售。你只能选“要多大”不能选“CPU要AMD还是Intel、硬盘要增强型SSD还是通用型SSD”。这个设计其实很聪明对普通用户来说自由组合反而是一种负担。但对有经验的开发者来说它的限制也很明显系统盘一般只能选20GB、40GB、50GB、60GB、100GB这几个档位不能挂数据盘部分套餐支持挂载数据盘主要是2022年后新增的高配套餐。如果你要跑数据库、存大量日志或图片单靠系统盘很快就会撑满。所以选套餐前先想清楚两件事你要跑什么CPU密集还是IO密集数据量和流量大概什么量级日常个人网站、博客、小型API服务2核2G、40GB SSD、月流量500GB、峰值带宽3Mbps这个档位基本够用。如果你要跑数据处理比如定时爬虫采集、ETL脚本建议直接上2核4G因为Python脚本或者Java服务吃内存非常凶2G经常会出现OOM。1.2 地域选择才是最大的坑这是我最想强调的一个点。地域选错了后续想换非常麻烦——快照迁移也要折腾半天而且跨地域的镜像不能直接使用需要导出再导入步骤繁琐。腾讯云轻量服务器的地域选择逻辑和CVM不太一样。CVM有“可用区”的概念同地域跨可用区可以做到高可用轻量服务器是单地域单可用区部分新地域多可用区但控制台不体现。所以你的用户如果主要在国内大陆选北京、上海、广州、成都这几个大区都行如果主要面向海外根据用户所在位置选新加坡、硅谷、法兰克福等如果只是自己折腾学习哪个便宜选哪个但不要选境内地域后再加CDN来加速境外访问那是本末倒置另外一个细节腾讯云轻量服务器国内地域默认提供免费的基础防护但带宽峰值是“普通BGP多线”部分地域是单线。如果你对上行带宽要求很高比如经常要传大文件到服务器注意看套餐里的峰值带宽轻量服务器普遍是3Mbps-6Mbps峰值这跟CVM的“按固定带宽计费”不是一个概念。轻量的带宽是共享型日常个人使用没问题但如果你要跑高并发的下载、视频推流这类业务轻量服务器的带宽会成为瓶颈。1.3 镜像选哪个腾讯云轻量服务器支持公共镜像、应用镜像、Docker基础镜像、自定义镜像、独立镜像。日常使用最多的是前三种。公共镜像就是干净的CentOS、Ubuntu、Debian等操作系统适合你喜欢自己装环境的情况应用镜像比如WordPress、LAMP、Node.js、宝塔面板等开箱即用官方帮你预装好了Docker基础镜像预装了Docker环境适合容器化部署我的建议是除非你完全不想碰命令行否则不要选应用镜像。应用镜像虽然方便但往往预装了一些你不需要的组件占内存不说安全更新也不可控。而且应用镜像的系统版本、软件版本很多是固定的后续想升级还得自己折腾反而麻烦。我自己一直用CentOS 7.9旧项目和Ubuntu 22.04新项目。注意腾讯云轻量服务器的公共镜像CentOS 7.9在2024年后逐渐停止维护新开机器建议直接用Ubuntu 22.04或Debian 12。CentOS 8的流变事件之后除非有明确原因新项目不要再碰CentOS系列。2. 购买和初始化5分钟搞定购买流程很简单控制台选套餐、选镜像、选地域然后设置实例密码或者SSH密钥付款完事。这里我想重点提醒几个购买时容易忽略的候选规则2.1 登录方式密码 vs SSH密钥腾讯云轻量服务器创建时会让你选登录方式SSH密钥对还是密码。我的建议是必须使用SSH密钥而且创建完之后密码登录也要关掉。原因很简单密码是弱认证互联网上有大量黑客在跑端口扫描密码爆破22端口是所有扫描器的最爱密钥登录基本无法被暴力破解私钥文件泄漏之前你的服务器是安全的不要以为新机器没人知道IP就不用担心。我见过太多服务器被入侵的案例就是因为开了密码登录密码还设得比较简单结果不到一周就被植入了挖矿程序CPU飙到100%流量跑光了才知道出了问题。密钥对在控制台的“密钥对”页面创建下载并保存好私钥文件只下载一次丢了只能重置。创建实例时选“已有密钥对”就行。如果你已经用密码登录方式建了机器补救措施也不难# 在服务器上生成密钥对 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa # 将公钥写入authorized_keys cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys然后把本机的私钥配好能登录之后再在腾讯云控制台关掉密码登录。这样每次SSH连接就不用输密码了安全性和体验都提升了一个档次。2.2 首次SSH连接慢别急着骂新买的轻量服务器第一次SSH登录可能会感觉比较慢有些时候连接要等好几秒。这不一定是服务器性能问题很有可能是DNS反向解析超时。SSH服务端在收到连接请求后默认会进行反向DNS解析如果该请求IP没有PTR记录就会一直等到超时。解决办法# 编辑sshd配置 vim /etc/ssh/sshd_config # 找到或添加以下两行 UseDNS no GSSAPIAuthentication no # 重启ssh服务 systemctl restart sshd改完之后你会明显感觉到SSH连接秒开。这个优化在每台新机器上都值得做一遍。2.3 系统盘分区与挂载轻量服务器的系统盘在你拿到的机器上默认已经分区、格式化、挂载好了。不需要你手动分区。但有一个需要留意的问题默认系统盘通常只占了完整磁盘的一部分空间剩余空间没有分配。比如你在控制台看到的是40GB的系统盘但实际df -h看到只有20GB左右。这种情况多见于老版本的镜像新镜像一般不会这样。检查方法df -h lsblk如果发现确实有未分配的空间可以用growpart和resize2fsext4格式或者xfs_growfsxfs格式扩展分区。这属于Linux基础操作网上教程很多这里不展开。提示腾讯云轻量服务器的快照功能只备份整个实例的磁盘数据不支持单独备份数据盘。所以如果你有重要数据自己定期做异地备份别只依赖云平台的快照。3. 控制台里那些容易忽略的配置购买完机器别急着装环境先把控制台里几个关键配置过一遍。这些配置不做好后面迟早会来补课。3.1 防火墙规则轻量服务器版的安全组轻量服务器没有“安全组”的概念取而代之的是“防火墙规则”。作用类似但更简单直接。默认规则只放行22端口SSH、80端口HTTP、443端口HTTPS。如果你要跑一些自定义端口比如MySQL的3306、Redis的6379、Web服务的8000和8080等必须在控制台“防火墙”页面手动添加规则。这个操作不算复杂但有一个细节腾讯云的防火墙规则添加后不是实时生效的有时候需要等几秒到几十秒。如果你改了规则发现端口还不通先别急着怀疑服务器里的服务没起来等个半分钟再试。另一个重要细节防火墙规则是分方向的默认“入站”规则控制外部访问你的服务器而“出站”规则默认全放行。这意味着你的服务器可以去访问任何地址但外部IP访问你的服务器只有被规则放行的端口才能通路。常见误区是有些人以为在服务器内部用iptables开放了端口外部就能直接访问但实际上腾讯云的控制层和服务器内核的iptables是分开的。你必须在控制台防火墙里放行对应的端口外部流量才能到达你的服务器。反过来也一样控制台放行了端口但服务器内部iptables或firewalld没有开放外部一样无法访问。两个地方都配好才能真正通信。3.2 重置密码与密钥管理轻量服务器控制台可以直接重置实例密码但有两个限制需要了解重置密码后必须重启实例才能生效不会热更新如果实例处于“运行中”状态重置密码前建议先关机否则有些系统版本会对密码同步造成干扰密钥管理页面可以查看、删除已创建的密钥对。删除密钥对的后果是正在使用该密钥的实例在重启后将无法通过原密钥登录如果你只保留了这一种登录方式可能会被锁在门外。操作前一定先确认你还有其他登录方式或者备用密钥。3.3 快照与镜像轻量服务器的快照功能我强烈建议在每次做重大配置变更前都做一次。系统盘快照可以在几分钟内完成恢复的时候也很快。代价仅仅是快照容量计费按存储空间大小收费很便宜。镜像有两类自定义镜像把你当前的系统盘完整做成一个镜像可以在同地域内用于批量创建相同配置的实例应用镜像腾讯云预置的带应用环境的镜像跨地域使用自定义镜像需要先把镜像导出到COS再导入到目标地域。这个流程不算复杂但很容易踩坑导入时要求镜像格式必须满足腾讯云的规范一般要求是RAW或QCOW2Linux要带Cloud-Init否则导入后可能无法正常初始化说白了就是只能看不能用。4. 实战部署从零搭建一个LNMP环境前面讲的都是准备工作现在上一盘硬菜——从零开始在一台新的腾讯云轻量服务器上部署一套LNMP环境Nginx MariaDB PHP并跑起一个WordPress站点。这个流程做完你就有了一台能对外提供Web服务的机器。整个过程大约需要30分钟。4.1 环境初始化和基础组件我用的是一台Ubuntu 22.04实例2核4G配置地域北京。SSH登录第一件事就是更新系统库、装基础组件、建新用户# 更新软件源和系统Ubuntu不需要打安全补丁但建议定期做 sudo apt update sudo apt upgrade -y # 安装基础工具 sudo apt install -y curl wget git tree unzip zip telnet lsof tcpdump # 创建一个普通用户日常操作不要用root sudo adduser admin sudo usermod -aG sudo admin # 把刚才生成的公钥复制到admin用户保证新用户也能SSH登录这里有一个我踩过多次坑后的心得永远不要直接用root跑业务。即使你只有一台机器、只有一个账号也建一个普通用户日常部署、写代码、跑服务都用这个用户需要提权时用sudo。原因很简单如果你后面把某个服务或某个脚本的权限搞错了至少还有个普通用户能登录不会变成“什么事情都干不了还能搞坏全盘”的境地。4.2 安装NginxNginx用的是Ubuntu官方源里的版本够用而且安全补丁跟随系统更新走。sudo apt install -y nginx sudo systemctl enable nginx sudo systemctl start nginx装完之后在浏览器里访问你的公网IP能看到Nginx默认欢迎页环境就通了一半。这里有个值得注意的细节Nginx默认配置文件在/etc/nginx/nginx.conf默认站点配置在/etc/nginx/sites-available/default。腾讯云的轻量服务器镜像里默认的站点配置会自动读取环境变量并根据云主机的私网IP生成默认server_name。如果你以后绑定了自定义域名要优先修改这个default配置或新增一个站点配置别直接在nginx.conf里面胡乱加server块那样很容易在nginx -t时发现语法冲突。4.3 安装PHPFPM方式PHP我推荐用PHP 8.2 PHP-FPM模式和Nginx配合最好的组合。# 添加PHP官方PPA源Ubuntu官方源的PHP版本偏旧 sudo add-apt-repository ppa:ondrej/php -y sudo apt update sudo apt install -y php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip装完检查php -v sudo systemctl status php8.2-fpm默认PHP-FPM会监听Unix socket/run/php/php8.2-fpm.sock把Nginx配置里的PHP处理段指向这个socket即可。4.4 安装MariaDB/MySQL数据库这块个人项目我建议用MariaDB兼容MySQL资源占用更低。sudo apt install -y mariadb-server mariadb-client sudo mysql_secure_installation安装过程会向导式要求你设置root密码等问题。这里有一个注意点MariaDB默认root账号是使用unix_socket认证的也就是说在shell里用sudo mysql可以直接进数据库但用navicat这类工具通过TCP/IP连接则不行。你需要单独创建一个远程访问账号CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER wpuserlocalhost IDENTIFIED BY 这里写你自己的强密码; GRANT ALL PRIVILEGES ON wordpress.* TO wpuserlocalhost; FLUSH PRIVILEGES;如果你是给外部应用提供数据库访问需要把localhost改成%并且务必在控制台防火墙放行3306端口。但我要郑重建议数据库端口不要暴露在公网上如果确实需要远程连接优先用SSH隧道或者内网访问实在要开放公网就要用强密码限制来源IP。4.5 配置Nginx站点和部署WordPress这里直接给出一份最小可用的Nginx站点配置server { listen 80; listen [::]:80; server_name yourdomain.com; root /var/www/wordpress; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; } location ~ /\.ht { deny all; } }下载WordPress并解压到/var/www/wordpress然后访问你的IP或域名按向导安装。中间会让你填数据库信息就是前面创建的那些。到这里一台能跑WordPress的服务器已经上线了。5. 流量跑到上限怎么办腾讯云轻量服务器的套餐是按“月流量包”来限制的用完后有两个选择等下一个计费周期自动恢复或者购买流量包来加量。5.1 流量包计算逻辑这里有一个容易误解的地方流量包是“出站流量”才计入的通过CDN回源到轻量服务器的流量、服务器之间走内网的流量不计费。入站流量就是你服务器接收的数据一般不影响流量包。如果你架设的是一个个人博客每天几百个访客月流量500GB一般来说用不完。但如果是跑爬虫、API服务、视频流、文件下载这类业务流量会跑得很快。查看流量使用情况的路径是控制台实例详情 - 监控 - 流量统计。如果发现用超了也不必慌张腾讯云会在用尽后给实例限速可访问但速度极慢不会直接停机你买一个流量包比如100GB的流量包加上去速度就会恢复。这里面有一个省钱小技巧流量包的有效期是“购买之日起一个月”。如果你经常在月底流量见底可以看准时间点买一个大一点的流量包让它的有效期覆盖到下个月月初这样下个月即使套餐自带流量也用完了还能顶一段时间。不过这个操作费点心思更适合对预算敏感的个人站点。5.2 下行带宽跑满的处理轻量服务器的峰值带宽是共享的如果你长期把带宽打到上限有可能会被服务商限速Shaping。比如你买了3Mbps的套餐长时间用满后面可能被限制到1Mbps以下直到下个周期恢复。我自己就遇到过这种情况一台机器用来做对象存储的中转上传每次传几百MB的文件直接把带宽占满结果第二天发现下载速度只有几百KB/s了。后来我调整了策略上传任务分散到非高峰期执行并且限速到1.5Mbps以下再没有出现过被限速的情况。所以如果你有大文件传输需求要么选高带宽套餐要么接受限速并调整任务节奏。5.3 用COS做存储扩展轻量服务器的系统盘空间有限如果数据量超过系统盘容量不要试图去扩容云盘轻量服务器的云盘扩容要新建实例或使用快照恢复成本很高而是把大文件、静态资源、备份文件放到对象存储COS上。腾讯云COS提供了和轻量服务器同地域的内网域名通过内网传输可以节省流量费用。在轻量服务器里配置COS用coscmd命令行工具即可# 安装coscmd pip install coscmd # 配置 coscmd config -a SECRET_ID -s SECRET_KEY -b bucket-name-appid -r ap-beijing # 上传文件走内网 coscmd upload localfile.jpg /remote/path/ # 列出文件 coscmd list /remote/这样既不占用本地磁盘空间后续用户访问还可以直接用CDN加速是一套比较合理的架构。6. 轻量服务器上的自动化运维腾讯云轻量服务器虽然没有CVM那么复杂的运维能力但基础的自动化工具还是有的。我做时间久了逐渐在上面搭了一套自己用的自动化小体系讲几个典型场景。6.1 定时任务调度设计如果你拿轻量服务器来跑数据采集、报表生成、ETL调度最常用的是cron定时任务。这里分享一个我自己的经验不要在crontab里面写太复杂的一行命令而是把逻辑写成一个脚本crontab只负责调用脚本。比如每天凌晨2点执行数据同步可以建立/opt/scripts/sync_data.sh内容大约是这样#!/bin/bash set -e source /opt/scripts/env.sh # 记录开始时间 echo ### start sync: $(date %Y-%m-%d %H:%M:%S) /var/log/sync_data.log # 调用数据库抽取脚本 python3 /opt/scripts/extract.py /var/log/sync_data.log 21 # 调用腾讯云数据开发治理平台WeData或者其他平台的API进行任务触发 curl -s -X POST $WEDATA_JOB_API_URL \ -H Content-Type: application/json \ -d {jobIds: [1234], triggerTimestamp: $(date %s)} /var/log/sync_data.log 21 # 记录结束时间 echo ### end sync: $(date %Y-%m-%d %H:%M:%S) /var/log/sync_data.log然后crontab中加入0 2 * * * bash /opt/scripts/sync_data.sh脚本写得简洁、可重试、有日志这比把一大串命令塞进crontab要容易维护和排查问题得多。6.2 轻量服务器上的Webhook接收端另一个常见用法是轻量服务器上跑一个Webhook服务接收第三方系统比如代码仓库的push事件、数据处理平台的任务通知发来的请求再执行本地脚本来自动化操作。这个用法很轻量但要注意一个安全点Webhook接口一定是公网可访问的一定要做鉴权验证。简单做法可以在URL上带一个token参数或者在Header里带一个自定义key然后在服务端校验。不要裸奔在公网上否则任何人都能触发你的任务轻则浪费资源重则被人刷爆流量包。6.3 结合WeData等数据处理平台的自动建表我在做数据相关项目时经常需要目标表自动创建。腾讯云的数据开发治理平台WeData里有一个“ETL工作流”的功能里面可以配置任务节点在任务运行前自动执行建表语句。轻量服务器可以作为调度机的角色通过调用平台的OpenAPI触发任务。一个常见的模式是在服务器上写一个定时脚本调用WeData的OpenAPI判断上游任务是否成功成功后触发下游ETL工作流目标表用SQL方式管理在ETL脚本里写清楚CREATE TABLE IF NOT EXISTS语句把表的schema和任务脚本放同一个代码仓库实现“建表即代码”。这样做的核心好处是表和任务脚本一起版本管理不会出现“代码改了但表结构忘了改”的问题。轻量服务器作为这个调度中枢跑一个cron脚本一个Python监听服务就够资源开销极低1核1G甚至都跑得动。7. 常见问题排查实录最后这部分把我这几年遇到的、以及身边朋友问得比较多的问题整理成一份速查表。很多问题不是配置复杂而是没找到正确排查方向。7.1 网站打不开或访问慢从外到内排查先看控制台防火墙规则80和443端口是否放行再ping公网IP看通不通不通则检查网络ISP或DNS解析然后检查Nginx服务状态是否正常systemctl status nginx再看Nginx错误日志tail -f /var/log/nginx/error.log如果日志提示Permission denied多半是目录或者文件权限问题重点看站点根目录的权限设置比较隐蔽的问题是SELinux/Armor。虽然Ubuntu默认不开SELinux但如果你选择的是CentOS镜像它默认可能开着强化的安全模块没放行HTTP会一直403外网完全没反应。这种情况可以临时检查getenforce如果是Enforcing执行setenforce 0看问题是否解决。解决后记得写SELinux策略别直接关闭安全功能了事。7.2 SSH连接不上先分两个方向如果ping不通大概率是网络问题检查本地网络、云平台监控是否发生了故障如果ping通但SSH连接超时检查22端口防火墙是否放行以及SSH服务是否在运行还有一种情况IP被安全中心拦截了。腾讯云有“主机安全”功能密码爆破次数多了会自动封禁来源IP。遇到这种情况控制台里对应的安全事件记录里会有提示提交工单也能解决。另外我建议修改SSH默认端口。把22改成其他端口可以有效减少被扫描次数但前提是你得确保防火墙规则里放行了新端口别把外网规则改了内部没改最后自己进不去。针对这种情况的应急办法腾讯云控制台提供VNC登录入口就算SSH挂了也能通过VNC连上服务器排查。这个功能平时不起眼关键时刻能救命一定要知道它的入口在哪里。7.3 服务器莫名重启或负载飙升遇到这种情况先登录服务器看系统日志last -x reboot uptime top如果发现某个陌生进程占用大量CPU大概率是被入侵植入了挖矿程序。处理路径立即使用控制台创建快照保留现场数据掉线互查网络连接ss -antlp看有没有可疑的TCP连接检查crontabcrontab -l和cat /etc/crontab挖矿程序经常用定时任务做持久化揪出恶意进程的二进制文件用ls -l /proc/PID/exe定位路径删除恶意文件、定时任务然后改掉所有账号密码检查SSH公钥有没有被篡改如果你的服务器被入侵过一次哪怕清理干净了我都建议直接重置系统快照留档后然后重新部署。因为入侵者可能装了rootkit删不干净。与其提心吊胆不如重来速度快还踏实。7.4 流量异常消耗在控制台看流量统计如果发现某一天出站流量异常大最可能的原因是被入侵后对外发包或者是某个服务被人刷了。排查手段用nethogs或iftop看实时流量定位是哪个进程在走流量检查CloudMonitor和系统log是否有异常查看数据库慢查询日志是不是某些接口被大量请求如果是被攻击先在防火墙规则里封掉攻击IP的访问然后考虑让站点接入CDN来隐藏源站IP。轻量服务器自带的基础防护对DDoS防护能力有限如果业务对可用性要求很高还是建议升级到高防或者将核心业务放在CVM负载均衡的架构上。8. 我的使用心得腾讯云轻量服务器的定位很简单给轻量业务提供一台“你只需要关心安装在里面的东西”的机器。它不适合复杂网络架构也不适合对性能极度敏感的高并发场景但对绝大多数的个人项目和中小团队来说它省掉了大量环境搭建和网络配置的琐碎事入手成本极低。实际操作中我总结了几条长期适用的心得先规划后购买。地域、镜像、套餐这三个决定有60%的概率在后续使用中会后悔。买之前花点时间想清楚你的用户在哪、要多大的磁盘、跑什么类型的业务比自己买完再折腾迁移省心得多。安全配置必须做在前面。关闭密码登录、启用密钥对、修改SSH端口可选、配置防火墙规则、定期打安全补丁。这一套组合拳下来不说100%安全但比90%的同类服务器安全得多。定期快照。凌晨两点做快照或者每次大变更前做一次。等出问题再后悔没有用。轻量服务器系列第一篇就讲到这里后面我还会写不同厂商的选择对比把各家轻量服务器的差异和坑也整理出来。如果你正准备入坑云服务器这一篇应该能帮你少走不少弯路。
返回列表