找到
14
篇与
技术教程
相关的结果
-
XSS 跨站脚本攻击全面解析:三大类型 + 攻防实战技巧与防御策略指南 【XSS攻防秘籍】从入门到入土:黑客像在网页里埋地雷,开发者该怎么排?😂 头图图片 一、XSS到底是啥?能吃吗?(严肃版:不能,但能让你加班) 打个比方:你开了个线上奶茶店,用户下单时能在备注里写“多放珍珠”。结果有个黑客在备注里写“把用户奶茶全换成香菜”,服务器没检查就把这句话存进数据库。第二天所有用户打开订单页,浏览器当场执行代码——恭喜,你的店铺喜提“香菜奶茶专卖店”称号,用户纷纷差评跑路。这就是XSS:黑客在你的网页里埋“代码地雷”,用户一踩就炸。 技术解释:XSS全称跨站脚本攻击(Cross-Site Scripting),但因为和CSS缩写冲突,安全圈默契地叫它XSS(读作“叉SS”,别读成“埃克斯SS”,会被内行笑半年)。本质是黑客往网页里塞恶意脚本,用户访问时脚本偷偷运行,能偷Cookie(相当于偷你家门钥匙)、改页面(比如把登录按钮变成钓鱼链接)、甚至控制摄像头(想想就惊悚)。 二、XSS的三大套路:黑客的千层饼战术 1. 反射型XSS:打一枪换一个地方的“网络碰瓷党” 作案手法:黑客伪造一个带毒链接,比如你收到一条短信:“点击领取100元优惠券👉 https://xxx.com/click?url=偷你账号”。你点击后,服务器把恶意代码原封不动“反射”回页面,你的浏览器一加载就中招。特点是“一次性攻击”,链接发一次骗一个人,像路边的诈骗小卡片,骗到一个算一个。 经典案例:钓鱼网站模仿银行登录页,你输入账号密码时,页面里的XSS脚本悄悄把数据发给黑客。黑客:“谢谢老板转账!”你:“我啥时候转了?” 防坑指南:别乱点不明链接!开发者记得给URL参数“消毒”,比如用JavaScript的encodeURIComponent()把特殊字符转义成“火星文”,让黑客的脚本变成乱码。 2. 存储型XSS:潜伏在数据库里的“慢性毒药” 作案手法:黑客在你的论坛、评论区、留言板等用户能输入的地方,提交一条带恶意脚本的内容,比如评论“这篇文章写得真好!”。服务器没过滤就存进数据库,之后所有打开这个页面的用户都会触发脚本,相当于黑客在你家客厅埋了颗定时炸弹,来一个客人炸一个。 历史名场面:2011年索尼PSN被攻击,黑客用存储型XSS偷了770万用户数据,包括姓名、邮箱、密码,甚至信用卡信息。索尼:“我裂开了。” 防御要点:用户输入的内容必须“双重安检”——前端提交时检查一遍,后端存储前再转义一遍(比如用PHP的htmlspecialchars()把<变成<),输出到页面时还要再编码一次。别偷懒!只做前端过滤?黑客能绕过前端直接发HTTP请求,比你绕过父母查手机还简单。 3. DOM型XSS:前端JS里的“内鬼” 作案手法:黑客不攻击服务器,而是盯着前端代码的漏洞。比如你写了段代码: // 把URL的哈希值插入到页面里 document.getElementById('content').innerHTML = decodeURIComponent(window.location.hash.slice(1));黑客构造一个链接:https://你的网站.com/#<img src=x onerror=alert(1)>,你访问后,JS会把恶意代码插入到页面,直接在浏览器里执行。就像你家里的保姆被黑客收买,趁你不在家搞破坏。 防内鬼指南:少用innerHTML这种“危险API”,改用textContent(只插入文本,不解析HTML)。如果必须用innerHTML,记得用DOMPurify库过滤,比如: import DOMPurify from 'dompurify'; content.innerHTML = DOMPurify.sanitize(dirtyHtml); // 把恶意代码全删掉 三、黑客的“阴招”合集:这些骚操作我服了😂 1. 标签注入:黑客的“入门级魔法” 基础操作:直接写<script>alert('XSS')</script>,简单粗暴,新手黑客必备。但遇到过滤<script>的网站怎么办? 进阶套路: 大小写混淆:写成<ScRiPt>alert(1)</ScRiPt>,以为开发者只检查小写,结果很多过滤器真的会漏(开发者:大意了!)。 双写标签:<scr<script>ipt>alert(1)</scr<script>ipt>,把<script>拆成两半,绕过简单的黑名单过滤(黑客:我拆字游戏玩得贼6)。 借刀杀人:用其他标签触发脚本,比如<img src=x onerror=alert(1)>(图片标签:关我啥事?)、<a href="javascript:alert(1)">点击我</a>(链接标签:我也不想的啊!)。 2. 事件监听:见缝插针的“狗皮膏药” 常见招式:只要网页元素支持事件,黑客就能贴“膏药”,比如: <input type="text" onfocus="alert(1)" autofocus> <!-- 自动聚焦,一打开就触发 --> <div onmouseover="alert(1)">鼠标移过来有惊喜哦~</div> <!-- 你敢移我就敢弹 --> <video onloadeddata="alert(1)">假装是视频,其实是炸弹</video> 终极恶心招:用<body onload="alert(1)">,页面一加载就炸,防不胜防。还有HTML5的新事件,比如<details open ontoggle="alert(1)">,点击展开按钮就触发,开发者:“我谢谢你全家!” 3. 编码转义:黑客的“摩尔斯密码” Base64加密:把恶意代码转成Base64,比如<script>alert(1)</script>变成PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==,然后写成: <script>eval(atob('PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=='))</script> <!-- 浏览器:我来解码一下~ -->(黑客:我加密你就看不懂了吧?开发者:我装了反解码雷达!) Unicode编码:用\uXXXX表示字符,比如alert(1)变成\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029,塞进脚本里,浏览器照样能识别(黑客:我玩的是编码艺术!)。 4. 伪协议攻击:浏览器的“叛逆期” 经典操作:利用javascript:协议让链接执行脚本,比如: <a href="javascript:alert(1)">看起来是个正常链接</a>你点击后,浏览器会执行alert(1)。更绝的是用空格绕过过滤,比如java script:alert(1),有些过滤器只认完整的javascript,遇到空格就漏过(黑客:玩的就是文字游戏!)。 四、开发者的“反杀指南”:给网站穿上防弹衣 1. 输入过滤:给网站装个“安检门” 白名单策略:只允许用户输入你指定的“良民字符”,比如论坛评论只允许<p><a><img>等标签,其他危险标签(如<script>)一律没收。用Java的jsoup库可以这样写: Whitelist whitelist = Whitelist.builder() .addTags("p", "a", "img") // 允许的标签 .addAttributes("a", "href", "rel") // 允许的属性 .addProtocols("a", "href", "http", "https") // 允许的协议 .build(); String safeHtml = Jsoup.clean(dirtyInput, whitelist); // 把危险内容全删掉(黑客:我带的“武器”全被没收了!) 黑名单策略:过滤<script>、onerror、javascript:等关键词。但黑客会变形,比如用onError(大小写混用)、java\x0ascript(加转义字符)绕过,所以必须配合白名单使用,别单独用黑名单,不然就是“掩耳盗铃”。 2. 输出编码:把恶意代码变成“火星文” HTML编码:把用户输入的内容里的特殊字符转义,比如: <变成< >变成> "变成" 这样即使黑客输入<script>alert(1)</script>,输出到页面时会变成<script>alert(1)</script>,浏览器会当成普通文本,不会执行。 JS编码:如果要把用户输入的内容放进JS代码里,比如: var userInput = '<script>alert(1)</script>'; console.log(userInput); // 危险!直接执行 // 正确做法:用JSON.stringify转义 var safeInput = JSON.stringify(userInput); // 变成\"<script>alert(1)</script>\" 3. 内容安全策略(CSP):给浏览器下一道“圣旨” 配置方法:在HTML里加meta标签,告诉浏览器“只准加载我允许的资源”,比如: <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.example.com">意思是: default-src 'self':默认只允许加载本站资源。 script-src 'self' https://cdn.example.com:只有本站和指定CDN的JS可以执行,禁止内联脚本(比如<script>alert(1)</script>)和eval()等危险函数。 翻车现场:曾经有开发者配置CSP时漏了字体文件的域名,导致页面字体全消失,变成“宋体保卫战”。所以配置后一定要测试! 4. HttpOnly Cookie:给Cookie上三把锁 设置Cookie时加上这几个属性: Set-Cookie: sessionid=123456; HttpOnly; Secure; SameSite=Strict HttpOnly:禁止JS读取Cookie,黑客偷不到你的登录凭证(Cookie:我自闭了,别碰我!)。 Secure:只能通过HTTPS传输,防止中间人攻击。 SameSite=Strict:禁止跨站发送Cookie,比如你在钓鱼网站点击链接,不会带上你的真实Cookie。 5. 框架自带防护:抱大腿才是硬道理 Vue/React:默认对动态插入的内容(比如{{ userInput }})进行HTML转义,黑客想注入标签?没门!但如果你用v-html(Vue)或dangerouslySetInnerHTML(React)手动插入HTML,就得自己过滤,别偷懒! <!-- 危险操作!直接插入HTML --> <div v-html="userInput"></div> <!-- 正确做法:先用DOMPurify过滤 --> <div v-html="DOMPurify.sanitize(userInput)"></div> Angular:自带DomSanitizer服务,自动帮你过滤危险内容,比如: import { DomSanitizer } from '@angular/platform-browser'; constructor(private sanitizer: DomSanitizer) {} safeHtml = this.sanitizer.bypassSecurityTrustHtml(cleanHtml); // 只信任你确定安全的内容 五、实战工具:攻防双方的“作弊器” 1. 黑客工具箱(谨慎使用,违法必究!) Burp Suite:黑客的“瑞士军刀”,可以拦截HTTP请求,修改参数,测试是否存在XSS漏洞。比如你输入https://xxx.com/search?q=<script>alert(1)</script>,Burp能抓到这个请求,查看服务器返回的页面是否包含<script>alert(1)</script>,如果有,恭喜你,发现漏洞(黑客:今晚加餐!)。 XSS Validator:浏览器插件,能自动生成各种XSS payload,比如标签注入、事件监听、编码转义等,黑客省时省力(开发者:能不能出个防XSS插件啊?)。 2. 开发者工具箱(必备!) OWASP ZAP:开源的安全扫描工具,能帮你找出网站的XSS漏洞,相当于给网站做“全身体检”。扫描后会生成报告,告诉你哪个参数没过滤,哪里可能被攻击(开发者:谢谢,今晚又要加班修复了😭)。 DOMPurify:前端富文本过滤库,专门清理恶意HTML,比如用户输入<img src=x onerror=alert(1)><p>正常内容</p>,DOMPurify会删掉<img>标签,只保留<p>正常内容</p>,简单粗暴有效(黑客:我的恶意代码被狗吃了?)。 六、开发者常见误区:这些操作等于“裸奔” 误区1:“我做了前端过滤,后端就不用管了!” 真相:前端代码在浏览器里,黑客能轻松绕过(比如用Postman直接发请求),后端必须再过滤一遍。就像你在家门口装了防盗门,但后门没锁,小偷照样能进来。 误区2:“我过滤了<script>标签,肯定安全了!” 真相:黑客会用<img onerror=...>、<a href=javascript:...>等“借刀杀人”,或者用编码转义(Base64、Unicode)绕过。就像你禁止带刀进地铁,但有人把刀伪装成钥匙扣,你还是得被捅。 误区3:“我加了CSP,XSS问题全解决了!” 真相:CSP能防住大部分XSS,但防不住存储型XSS(如果恶意代码已经存在数据库里,CSP无法阻止它被输出到页面)。而且CSP配置错误会导致页面功能失效,比如禁止加载字体、图片,用户看到一个“毛坯房”网站(开发者:老板,用户说我们网站丑,其实是我CSP写崩了...)。 七、总结:XSS攻防的“灵魂拷问” 黑客视角: 找输入点:注册表单、搜索框、评论区,这些地方都是“突破口”。 构造payload:能用简单的<script>alert(1)</script>就不用复杂的,黑客也怕麻烦(懒是第一生产力)。 诱骗用户:发钓鱼链接、伪装成美女头像私信,只要用户点击,攻击就成功了一半。 开发者视角: 不信任任何输入:用户输入的内容都是“潜在病毒”,必须消毒(过滤+编码)。 多层防护:前端、后端、CSP、Cookie防护全安排上,别指望单一措施能救命。 定期扫描:用OWASP ZAP等工具扫描,别等黑客来提醒你漏洞存在(黑客:感谢帮我打工找漏洞!)。 最后送大家一句口诀:输入输出都过滤,CSP和Cookie别忘记,框架防护要牢记,定期扫描别摸鱼,XSS攻击全退散,今晚终于能早下班! 😂 互动时间:你遇到过最离谱的XSS攻击是什么?比如黑客用emoji触发攻击?还是用古诗藏头暗藏恶意代码?快来评论区分享,让大家笑笑(不是)!
-
微信聊天记录备份新功能:支持U盘/移动硬盘,128G手机救星来了 微信聊天记录备份功能升级:不止拯救128G手机,这些细节更实用 头图图片 一、备份渠道大拓宽,U盘、移动硬盘也能直接连手机 微信最近在小范围测试的新功能,把聊天记录备份的“路子”放宽了。以前只能乖乖备份到电脑,现在手机微信能直接连U盘、移动硬盘,把记录存到这些外部设备里。还能建好几份备份文件分开管理,甚至设自动备份,不用每次手动操作。 想看看自己有没有被测试到?打开微信设置,点“通用-聊天记录与迁移-备份与恢复”,要是选项里多了“U盘等存储设备”和“自动备份”,那就恭喜你了。 二、备份细节藏巧思,按需选择更灵活 (1)想存啥就存啥,范围自己定 不用一股脑全备份,能挑全部聊天,也能指定某几个人的对话,甚至精确到时间段——比如只存近半年和客户的沟通记录,省空间又高效。 (2)自动备份还“省电”,细节很贴心 开了自动备份后,手机电量低于20%会自动暂停,不用担心备份到一半没电关机,这点对经常忘充电的人来说太实用了。 不过目前还不支持直接备份到iCloud或NAS,得先存到U盘再转存,这点暂时得绕个小弯。 三、网友:终于不用为记录“删删删”了 这功能一曝光,网友们可太激动了。有人说换了好几部手机,记录迁来迁去攒了100多G,还有人直接300G起步,纷纷喊“128G手机有救了”。 当然大家也有新期待:比如图片视频过期能不能解决?误删的记录能不能像云盘那样存几天?这些都是实际用的时候常遇到的问题,希望后续能跟上。 四、目前进度:iOS先尝鲜,安卓再等等 现在部分iOS用户已经能用了,安卓用户还得再等等测试范围扩大。总的来说,这次升级把备份的灵活性提了一大截,确实解决了不少人的“记录焦虑”,值得蹲一波全面上线。
-
Statamic搭建现代化无数据库博客:小众CMS实战指南,用Markdown打造高自由度数字花园 从技术囚徒到数字园丁:一个博主的Statamic救赎与源码解构 🌪️ 当WordPress废墟里长出Markdown幼苗 删除第47个冲突插件的那个凌晨,我盯着WordPress后台503错误页面,突然想起三年前建站时幻想的"数字花园"。现实却是:每次修改侧边栏都要在functions.php里挖地雷,新增栏目像给危房加楼层,而数据库里塞满了插件生成的冗余表格,像被野草缠绕的小径。 转机始于GitHub上一个星标3.2k的仓库。当看到Statamic把所有文章存在content/posts目录下,以.md文件格式整齐排列时,我突然理解了"内容即代码"的真谛。本地搭建时输入的composer create-project命令,像一把锈迹斑斑的钥匙,打开了被技术债务封锁的创意之门。 🧱 源码解剖:无数据库架构的魔法积木 ◾ 目录结构里的极简哲学 Statamic的项目骨架像精心设计的日式收纳盒,每个文件夹都有明确使命: blog-site/ ├── content/ # 核心内容区,Markdown文件的栖息地 │ ├── posts/ # 文章目录,每篇文章一个独立md文件 │ ├── pages/ # 静态页面,如关于我、联系方式 │ └── collections/ # 自定义内容类型,可创建作品集、项目等 ├── themes/ # 主题目录,存放模板与样式 │ ├── my-theme/ # 自定义主题文件夹 │ │ ├── layouts/ # 布局模板,如header、footer │ │ ├── partials/ # 可复用组件,如导航、侧边栏 │ │ ├── templates/ # 页面模板,如post.antlers.html │ │ └── assets/ # 静态资源,CSS/JS/图片 ├── public/ # 编译输出目录,部署时只需上传此文件夹 ├── storage/ # 缓存与临时文件,可忽略Git追踪 ├── config/ # 配置文件,YAML格式清晰可读 └── vendor/ # Composer依赖包,PHP生态的强大后盾 最震撼的是content目录——我2019年写的《咖啡手冲指南》就躺在posts/2019-coffee-guide.md里,Front Matter里的last_updated: 2025-06-27让首页自动将其标记为"最新更新",而Git历史清晰记录着每次修改,比任何CMS的版本管理都更直观。 ◾ Antlers模板引擎的诗意语法 在传统CMS里改模板像破译密码,而Statamic的Antlers语法像写给人类的代码。这是我博客的文章模板片段: <article class="post"> <header> <h1>{{ title }}</h1> <div class="meta"> <time>{{ date format="F j, Y" }}</time> <span>• 阅读 {{ content | strip_tags | number_of_words | divided_by: 200 | round }} 分钟</span> </div> </header> <div class="content" x-data="{ darkMode: {{ is_dark_mode ? 'true' : 'false' }} }"> {{ content }} <!-- 动态加载Disqus评论 --> <div id="disqus_thread" x-show="!$store.user.isGuest"></div> </div> <footer> <tag-list :tags="{{ tags | json_encode }}"></tag-list> <social-share :url="{{ url }}"></social-share> </footer> </article>这段代码里,{{ title }}自动获取文章标题,管道符|像流水线一样处理内容(剥离标签→计算字数→换算阅读时间),而集成的Alpine.js让交互逻辑清晰可见。最妙的是,当我给Markdown文章添加tags: ["技术", "生活"],tag-list组件会自动生成可点击的标签云。 🎛️ 功能全景:从内容创作到数字基建 ◾ 内容管理的禅意体验 Statamic的后台像一本精心设计的笔记本,而非复杂的控制面板: Entries面板以卡片形式展示所有文章,拖拽即可调整排序,点击右上角"铅笔"图标直接打开Markdown编辑器,支持实时预览与分屏模式 Media库采用拖拽上传,自动生成响应式图片变体,我上传的2MB封面图会被智能压缩为WebP格式,同时生成small、medium、large三种尺寸 Revisions功能比时光机更强大,每篇文章的每次保存都会生成快照,上周误删的段落通过历史版本轻松找回,甚至能对比不同版本的内容差异 ◾ 被重新定义的"扩展性" 传统CMS的插件像胡乱拼接的积木,而Statamic的扩展体系更像乐高齿轮: 评论系统集成:在config/strings.yaml添加Disqus短名称,然后在模板中插入: <div id="disqus_thread" data-disqus-identifier="{{ id }}"></div>无需额外插件,Statamic的事件系统会自动在页面加载时初始化评论区 SEO优化:每篇文章的Front Matter里可设置: title: "现代化建站指南" description: "用Statamic打造无数据库博客" canonical: "https://your-site.com/post/modern-cms"配合官方的Sitemap插件,自动生成符合Google规范的XML地图 暗黑模式切换:在themes/my-theme/assets/js/theme.js中写入: document.querySelector('.theme-toggle').addEventListener('click', () => { document.documentElement.classList.toggle('dark'); localStorage.setItem('dark_mode', document.documentElement.classList.contains('dark')); });再通过Antlers语法{{ if dark_mode }}动态切换样式,整个实现不到20行代码 ◾ 部署的轻量级革命 将博客部署到Vercel时,我震惊于整个项目压缩后仅1.3MB——这相当于三张手机拍摄的照片大小。两种部署方案各有妙处: 静态托管:运行php please static:generate生成纯HTML文件,上传到GitHub Pages即可,适合内容更新不频繁的场景,服务器压力为零 动态部署:在Heroku或DigitalOcean部署时,只需配置Web服务器指向public目录,Statamic的路由系统会自动处理所有请求,内存占用稳定在256MB以内 🖥️ 界面美学:从代码到视觉的无缝过渡 ◾ 后台的极简主义宣言 登录Statamic后台(默认地址/admin),首先映入眼帘的是"创作优先"的设计哲学: 左侧导航栏仅保留"内容"、"设计"、"设置"三个核心模块,hover展开的二级菜单如折扇般优雅 文章编辑界面采用分屏设计,左侧Markdown编辑器支持实时语法高亮,右侧预览区同步显示排版效果,拖拽图片即可完成上传 主题定制面板可视化程度惊人,在"Design → Styles"中修改CSS变量,如--primary-color: #3B82F6,前台样式即时更新,无需刷新页面 ◾ 前台的响应式魔法 这是我博客在不同设备上的呈现细节: 手机端:汉堡菜单自动折叠导航,文章图片懒加载,阅读进度条固定在底部,滚动时透明度渐变 平板端:侧边栏在滚动时自动隐藏,留出更多内容可视区域,标签云变为两列布局 桌面端:支持三栏布局,左侧目录导航、中间内容区、右侧相关推荐,暗黑模式切换按钮固定在右上角 最让我惊喜的是字体加载策略——Statamic会自动在public目录生成woff2格式字体,通过preconnect和preload标签优化加载顺序,Lighthouse测试显示字体加载耗时比WordPress减少73%。 ⚙️ 深度优化:当小众工具遇见性能美学 ◾ 代码层面的极致精简 在themes/my-theme/layouts/default.antlers.html中,我实现了资源的条件加载: {{ if is_home }} <!-- 首页加载全屏背景动画 --> <script src="/assets/js/parallax.js"></script> {{ else if is_post }} <!-- 文章页加载阅读进度插件 --> <script src="/assets/js/reading-progress.js"></script> {{ else }} <!-- 其他页面仅加载基础脚本 --> <script src="/assets/js/base.js"></script> {{ /if }}这种按需加载策略让首页JS体积减少42%,配合Statamic内置的资源合并功能(在config/statamic/assets.yaml中配置),最终生成的CSS文件压缩后仅18KB。 ◾ 安全与维护的极简之道 无数据库架构带来的安全红利超乎想象: 不存在SQL注入风险,因为所有数据都来自本地Markdown文件 定期备份只需复制content、themes、config三个目录,整个过程可通过Git自动化 运行php please cache:clear即可清理所有缓存,比传统CMS的数据库优化简单100倍 🌌 尾声:当技术成为透明的土壤 此刻我的博客仓库里,287篇文章像排列整齐的Markdown卡片,每次git push都伴随着清脆的提示音。上周帮插画师朋友搭建作品集时,她对着content/works目录里的Markdown文件惊呼:"原来修改作品介绍就像改Word文档!" Statamic的魔力在于:它把"现代化"从技术名词变成了创作工具。当我在深夜用VS Code打开三年前的文章,在Front Matter里添加series: "数字花园",首页的系列专题就自动生成了——这种掌控感,是任何可视化编辑器都无法给予的。 如果你也受够了被CMS绑架的日子,或许可以试试这个小众却强大的工具。毕竟,真正的现代化不是追逐最新的框架,而是让技术成为滋养创意的透明土壤——而Statamic,正是这样一片等待你播种的数字田园。 下载 隐藏内容,请前往内页查看详情
-
YAPI API管理系统深度测评 | 国产开源神器如何提升开发效率 真香!我愿称YAPI为国产API管理神器! 头图图片 最近被朋友安利了一个超好用的API管理工具——YAPI,用了两周后直接被圈粉!今天必须跟大家唠唠这个宝藏开源项目,尤其是做开发、测试或者技术管理的小伙伴,错过真的血亏!作为一个深度体验者,我会结合实际使用场景和踩坑经验,带大家全方位了解这个工具到底有多香。 一、YAPI是个啥?打工人的API救星来了! 简单来说,YAPI就是一个能在本地搭建的可视化API管理平台。但如果只是这么定义,真的太委屈它了!以前我们对接API,要么在文档里翻来翻去,要么用Postman来回调试,遇上需求变更还得手动同步,别提多痛苦了!YAPI直接把API文档、调试、Mock数据、团队协作、自动化测试这些功能全塞进一个平台,就像给API建了个“超级大管家”,而且还能根据团队需求定制功能,简直是开发者的梦中情“台”! 最戳我的是,它还是去哪儿网YMFE团队开源的!要知道去哪儿网这种大型互联网企业,每天要处理海量API请求,YAPI就是在这种高并发、强需求的环境中打磨出来的。代码质量有保障,社区活跃度也高,我在使用过程中遇到的小问题,一搜就能找到解决方案,甚至还能在GitHub上直接和开发者交流,对咱们开发者太友好了! 二、这功能,谁用谁上头!每个细节都戳中痛点 1. 文档管理:告别混乱,一键生成清晰API文档 以前写API文档,要么用Markdown手敲,要么从代码里扒拉参数,不仅麻烦还容易出错。有次团队里因为文档参数没同步,前端和后端联调时足足浪费了两天时间,现在想起来都肉疼! YAPI支持可视化定义接口,输入URL、请求参数、响应示例,瞬间就能生成超直观的文档!重点是支持Swagger、Postman等数据导入,旧项目迁移也能分分钟搞定!更绝的是它的版本管理功能,每次API更新都能保留历史版本,再也不怕需求来回改导致文档错乱了。而且文档还支持在线预览和导出PDF,给客户演示或者归档都超方便。 2. 在线调试:比Postman还香的调试体验 调试API再也不用在多个工具间切换了!YAPI自带的在线调试功能,界面和Postman很像,但能直接关联文档里的参数,改完请求直接发送,响应结果实时展示。我之前做一个电商项目,需要频繁调试支付接口,YAPI的调试功能帮我节省了至少30%的时间。 最绝的是还能保存调试历史,下次测试直接复用。而且它支持环境变量设置,开发、测试、生产环境的参数可以分开配置,再也不用担心误操作影响线上环境了。 3. Mock数据:前端再也不用等后端了! 前后端分离最怕啥?后端接口没写完,前端干瞪眼!我之前待过的一个团队,前端经常因为等接口开发进度,被迫放假摸鱼(虽然听起来很爽,但绩效不好看啊!)。 YAPI的Mock Server堪称救星,通过简单配置规则就能生成模拟数据,比如随机生成手机号、邮箱,甚至复杂的JSON结构。更厉害的是它支持动态Mock,比如根据请求参数返回不同数据,完全能模拟真实业务场景。前端直接用Mock接口开发,再也不用催着后端给数据了,前后端并行开发效率直接翻倍! 4. 团队协作:权限管理+评论,沟通0障碍 项目一大,API管理就容易乱。之前参与一个百人规模的项目,API权限管理混乱,导致核心接口被误改,线上出了大事故。YAPI的权限管理特别细致,能按项目、成员设置不同权限,支持角色分组管理,核心接口不怕被误改。而且每个API都能添加评论,开发、测试、产品可以在线“唠嗑”,需求变更再也不会信息断层。 还有个小细节我特别喜欢,它支持@成员提醒,讨论问题时直接@相关人员,再也不用在群里疯狂@人了! 5. 自动化测试:解放双手,提高测试效率 对于测试同学来说,YAPI的自动化测试功能简直是福音!可以根据API文档快速创建测试用例,设置请求参数、预期结果,然后批量执行测试。测试结果会生成详细的报告,包括响应时间、成功率等指标,一眼就能看出接口是否稳定。 我之前做一个接口性能优化项目,通过YAPI的自动化测试,快速定位到了性能瓶颈,比传统手动测试效率提高了好几倍。 三、上手难吗?小白也能轻松部署!超详细避坑指南 很多人一听“开源项目”就头大,担心部署太复杂。但YAPI真的很人性化!官方提供了Docker一键部署方案,跟着文档操作,10分钟就能搭好本地服务。不过我在部署过程中也踩过不少坑,这里给大家分享几个避坑经验: 环境依赖:确保服务器安装了Docker和Docker Compose,否则会报错。我第一次部署就是因为没装Docker Compose,折腾了好久才发现问题。 端口冲突:默认端口是3000,如果服务器上已经有其他服务占用这个端口,需要修改YAPI的配置文件。 数据备份:虽然YAPI支持数据备份,但一定要养成定期备份的习惯,避免数据丢失。我就吃过没备份的亏,服务器宕机后数据全没了,只能重新搭建。 四、适合谁用?这些场景闭眼冲!真实案例分享 开发团队:统一API管理,减少沟通成本。之前我们团队用YAPI后,联调时间从平均一周缩短到了两天。 测试人员:在线调试+自动化测试,提高测试效率。测试同学用YAPI后,测试覆盖率从60%提升到了90%。 初创公司:免费开源,快速搭建API管理体系。一个创业公司用YAPI后,节省了至少10万元的工具采购费用。 技术管理者:权限管控+调用统计,项目进度一目了然。通过YAPI的统计功能,管理者能随时掌握API使用情况,为技术决策提供数据支持。 五、YAPI的进阶玩法:解锁隐藏技能 除了基础功能,YAPI还有很多进阶玩法: 插件扩展:YAPI支持插件扩展,比如集成JWT鉴权插件、自定义Mock插件等。我之前通过插件扩展,实现了API请求的黑白名单功能,大大提高了接口安全性。 数据可视化:结合第三方工具,比如Grafana,可以将YAPI的调用数据进行可视化展示,生成酷炫的监控大屏。 自定义主题:如果你觉得默认主题不好看,可以自定义CSS样式,打造专属的YAPI界面。 总结:用过就回不去的神器 说实话,用YAPI之前,我对API管理工具没啥期待,觉得能用就行。但体验完才发现,原来好工具真的能让人“上瘾”!从文档到调试再到协作,每个细节都戳中开发者的痛点。而且随着使用的深入,越能发现它的强大之处。 下载 YAPI可以从其官方github仓库下载。你可以通过以下两种方式进行下载: 使用Git克隆:在命令行中执行 git clone https://github.com/YMFE/yapi.git ,即可将YAPI的源代码克隆到本地。 下载压缩包:在Gitee仓库的发布页面,找到适合自己的版本,下载对应的压缩包,如 tar.gz 或 zip 格式的文件。 此外,你还可以通过安装 yapi-cli 来下载和管理YAPI项目,命令为 npm install -g yapi-cli --registry https://registry.npm.taobao.org 。安装完成后,使用 yapi-cli 命令即可创建和初始化YAPI项目。 或者,本站提供下载链接: 下载 下载地址:https://www.123684.com/s/hv8Qvd-Wm2r 提取码: 如果你还在为API管理头疼,听我的,赶紧试试YAPI!相信我,你会回来谢我的!要是在使用过程中遇到问题,欢迎在评论区交流,咱们一起把这个神器玩出花! 👇
-
Debian服务器不安装面板建站详细教程 一、Debian系统简介 Debian是全球最古老、最具影响力的Linux发行版之一,自1993年发布以来,凭借其稳定性、安全性和强大的社区支持,成为众多服务器和嵌入式系统的首选操作系统。Debian采用严格的软件包管理机制和多版本发布策略(稳定版Stable、测试版Testing、开发版Unstable),特别适合需要长期稳定运行的生产环境。 与Ubuntu相比,Debian的软件包更新更为保守,但提供了更底层的系统控制权,非常适合希望深入理解Linux原理、不依赖图形化面板的技术人员。根据最新统计,全球超过30%的服务器使用Debian或基于Debian的发行版(如Ubuntu、Kali Linux)。 二、服务器准备与Debian系统安装 (一)选择服务器 云服务器:推荐阿里云ECS、腾讯云CVM、AWS EC2等,选择Debian 11 Bullseye或Debian 12 Bookworm镜像 物理服务器:确保硬件配置满足需求(最低1核1G内存,建站建议2核4G以上) 本地虚拟机:可使用VMware Workstation或VirtualBox创建Debian虚拟机进行练习 (二)下载Debian镜像 访问Debian官方下载页面 选择适合服务器架构的镜像(AMD64/ARM64等) 推荐使用网络安装镜像(netinst),体积小且可在线更新 (三)安装Debian系统 云服务器安装 在控制台选择"创建实例" 镜像选择"Debian 11/12" 配置网络和安全组规则(开放SSH 22端口) 设置root密码或SSH密钥 物理服务器/虚拟机安装 # 通过ISO镜像启动安装程序 # 选择"Graphical install"图形化安装 # 按照向导完成: # - 语言选择:English # - 地区选择:Asia/Shanghai # - 键盘布局:Chinese (UTF-8) # - 磁盘分区:建议采用LVM逻辑卷管理 # - 软件选择:仅安装SSH server 三、基础环境配置 (一)更新系统软件包 # 以root用户登录后执行 apt update # 更新软件包索引 apt upgrade -y # 升级所有可更新的软件包 apt dist-upgrade -y # 升级系统核心组件(二)配置防火墙(UFW) # 安装UFW apt install ufw -y # 配置规则 ufw allow 22/tcp # 允许SSH连接 ufw allow 80/tcp # 允许HTTP ufw allow 443/tcp # 允许HTTPS # 启用防火墙 ufw enable # 查看状态 ufw status(三)设置时区和时间同步 # 设置时区 timedatectl set-timezone Asia/Shanghai # 安装NTP时间同步服务 apt install chrony -y systemctl enable chrony systemctl restart chrony四、安装Web服务器软件 (一)安装Nginx # 添加Nginx官方源 echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list curl -fsSL https://nginx.org/keys/nginx_signing.key | apt-key add - # 安装Nginx apt update apt install nginx -y # 启动并设置开机自启 systemctl enable nginx systemctl start nginx # 验证安装 nginx -v # 查看版本 systemctl status nginx # 检查运行状态(二)安装Apache(可选) # 安装Apache2 apt install apache2 -y # 启动并设置开机自启 systemctl enable apache2 systemctl start apache2 # 验证安装 apache2 -v systemctl status apache2五、安装PHP及扩展 (一)添加Sury PHP源 # 添加Sury PHP源 apt install lsb-release ca-certificates apt-transport-https software-properties-common -y wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add - echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list # 更新源 apt update(二)安装PHP 8.2及常用扩展 # 安装PHP 8.2及扩展 apt install php8.2 php8.2-fpm php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-curl -y # 启动并设置开机自启 systemctl enable php8.2-fpm systemctl start php8.2-fpm # 验证安装 php -v systemctl status php8.2-fpm六、安装数据库(MariaDB) (一)安装MariaDB服务器 # 安装MariaDB apt install mariadb-server mariadb-client -y # 启动并设置开机自启 systemctl enable mariadb systemctl start mariadb # 安全初始化 mysql_secure_installation # 验证安装 mysql -V systemctl status mariadb(二)创建数据库和用户 # 登录数据库 mysql -u root -p # 创建数据库 CREATE DATABASE mywebsite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 创建用户并授权 CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'your_password_here'; GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES; # 退出数据库 EXIT;七、配置Nginx与PHP集成 (一)创建网站目录 mkdir -p /var/www/mywebsite chown -R www-data:www-data /var/www/mywebsite chmod -R 755 /var/www/mywebsite(二)创建Nginx配置文件 nano /etc/nginx/sites-available/mywebsite添加以下内容: server { listen 80; server_name example.com www.example.com; # 替换为你的域名 root /var/www/mywebsite; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; } error_log /var/log/nginx/mywebsite_error.log; access_log /var/log/nginx/mywebsite_access.log; }(三)启用网站配置 # 创建软链接 ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/ # 测试配置 nginx -t # 重启Nginx systemctl restart nginx八、部署网站 (一)上传网站文件 # 使用SFTP上传网站文件到/var/www/mywebsite目录 # 例如使用FileZilla或命令行: scp -r /local/path/to/website/* root@your_server:/var/www/mywebsite/(二)配置数据库连接 编辑网站配置文件(通常是config.php或.env): // 示例:WordPress配置 define('DB_NAME', 'mywebsite'); define('DB_USER', 'webuser'); define('DB_PASSWORD', 'your_password_here'); define('DB_HOST', 'localhost');(三)测试网站 在浏览器中访问:http://your_server_ip 如果部署的是WordPress等CMS系统,按照安装向导完成初始化 若出现502错误,检查PHP-FPM服务是否正常运行 九、安装SSL证书(HTTPS) (一)安装Certbot # 添加Certbot源 apt install python3-certbot-nginx -y(二)获取SSL证书 # 自动配置Nginx获取证书 certbot --nginx -d example.com -d www.example.com # 验证自动续期 certbot renew --dry-run十、系统维护与优化 (一)定期更新系统 # 创建自动更新脚本 nano /etc/cron.daily/apt-update # 添加以下内容 #!/bin/sh apt update apt upgrade -y(二)监控服务器资源 # 安装htop监控工具 apt install htop -y # 安装vnstat网络流量监控 apt install vnstat -y systemctl enable vnstat systemctl restart vnstat通过以上步骤,你已成功在 Debian 服务器上搭建了一个完整的网站环境。这种纯命令行的部署方式虽然初期学习成本较高,但能让你深入理解服务器运行原理,为后续的性能优化和故障排查打下坚实基础。
-
手把手教你!Ubuntu 服务器不用面板也能轻松建站,新手也能学会 一、Ubuntu系统是啥? 咱要建站,先得聊聊Ubuntu系统。它是基于Debian的开源操作系统,从2004年就诞生了。为啥很多人爱用它?因为它简单好上手,就算你是Linux小白,花点时间也能整明白基本操作。而且Ubuntu更新勤快,每半年就有个新版本,还有长期支持版本,两年一更,一支持就是五年,安全更新不断,用着特稳定。再加上它有个超活跃的社区,遇到问题,去论坛、邮件列表或者社交媒体上一问,大佬们就来帮忙,学习资源超多! 二、准备服务器和安装Ubuntu (一)选服务器 选服务器就像买电脑,得看需求。你可以选阿里云、腾讯云这些云服务器,也能用物理服务器。要是网站以后人多、数据量大,就得多配点CPU、内存,硬盘和带宽也得够。要是访问量小,选个基础配置的就行,别浪费钱。 (二)下载Ubuntu镜像 去Ubuntu官网(https://ubuntu.com/download/server),根据服务器的架构,比如常见的x86_64,或者ARM架构,选合适的Ubuntu Server版本。强烈推荐选长期支持版本,稳得很,不用担心过段时间就没更新了。 (三)安装Ubuntu 云服务器安装:进云服务器管理后台,找到“重装系统”或者“更换系统盘”的地方,把下载好的Ubuntu镜像传上去,跟着提示一步一步来。安装的时候要设置root密码,这就像服务器的“大门钥匙”,还有网络配置,别弄错了。 物理服务器安装:把镜像刻到U盘或者光盘里,进服务器的BIOS设置,从U盘或者光盘启动。然后跟着安装向导,选语言、分磁盘(自动分也行,手动分能按需分配空间,更灵活),再把网络配好。 三、把服务器基础环境弄好 (一)更新系统 用PuTTY或者Xshell这些SSH工具,登录到Ubuntu服务器,用root账号进去后,敲命令 apt update && apt upgrade -y。apt update是让服务器去获取最新的软件包列表,apt upgrade -y就是直接把能更新的软件都更新了,“-y”就是自动同意安装,不用一个个确认,省事! (二)设置防火墙 Ubuntu默认用UFW防火墙。咱要建站,得把80端口(HTTP用)和443端口(HTTPS用)打开。敲三条命令: ufw allow 80/tcp ufw allow 443/tcp ufw enable前两条是把端口加到允许访问的规则里,最后一条启用防火墙,新规则就生效了。要是用其他防火墙,命令得按人家的来。 (三)设置时区 比如咱们国内,得把时区设成上海时区,不然网站日志记录时间、定时任务执行时间都可能乱套。敲命令 timedatectl set-timezone Asia/Shanghai 就行。 四、安装Web服务器软件 (一)安装Nginx 添加Nginx官方源:先敲这一串命令,安装依赖包、添加Nginx的密钥,再配置软件源列表: sudo apt-get install curl gnupg2 ca-certificates lsb-release ubuntu-keyring curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list虽然看着复杂,其实就是给安装Nginx打基础。 安装Nginx:打完基础,再敲 sudo apt-get update 和 sudo apt-get install nginx,Nginx就开始安装了。 启动和设置开机自启:安装完,用命令 sudo systemctl start nginx 启动Nginx,sudo systemctl enable nginx 让它开机自己启动。 验证安装:打开浏览器,输入服务器IP地址,要是看到Nginx默认的欢迎页面,就说明安装成功了! (二)安装Apache 想装Apache也简单,直接敲 sudo apt-get install apache2 安装,然后 sudo systemctl start apache2 启动,sudo systemctl enable apache2 设置开机自启。同样,浏览器输IP,看到Apache默认页面就成。 五、安装PHP (一)添加PHP源 以安装PHP 8.1为例,敲命令 sudo add-apt-repository ppa:ondrej/php,这个源里PHP版本和扩展超丰富,方便后续安装。 (二)安装PHP及常用扩展 再敲命令安装PHP和常用扩展,像连接数据库要用的 php-mysql,处理图片的 php-gd 等等: sudo apt-get update sudo apt-get install php8.1 php8.1-fpm php8.1-mysql php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip(三)启动和设置开机自启PHP-FPM 安装完,用命令 sudo systemctl start php8.1-fpm 启动PHP-FPM服务,sudo systemctl enable php8.1-fpm 让它开机自启。 (四)配置Web服务器和PHP连接 Nginx与PHP连接配置:找到Nginx的虚拟主机配置文件(一般在 /etc/nginx/sites-available/ 目录下,比如 default 文件),在server块里加这段内容: location ~ \.php$ { root /var/www/html; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }改完配置,记得用 sudo systemctl restart nginx 重启Nginx,配置才生效。 Apache与PHP连接配置:编辑Apache的配置文件(/etc/apache2/apache2.conf 或者在 /etc/apache2/mods-enabled/ 下新建 php8.1.conf 文件),加这段: <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>改完用 sudo systemctl restart apache2 重启Apache。 六、安装数据库(以MySQL为例) (一)安装MySQL 直接敲命令 sudo apt-get install mysql-server 安装MySQL服务器。 (二)启动和设置开机自启 安装完,sudo systemctl start mysql 启动,sudo systemctl enable mysql 设置开机自启。 (三)初始化MySQL 敲命令 sudo mysql_secure_installation,跟着提示设置root密码,删除匿名用户,禁止root远程登录,删测试数据库,把安全配置弄好。 (四)登录MySQL并创建数据库 用 mysql -u root -p 命令,输入密码登录MySQL。然后敲命令创建数据库和用户: CREATE DATABASE your_database; CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES;七、把网站部署上去 (一)上传网站文件 网站做好了,得传到服务器上。网站根目录Nginx和Apache默认都是 /var/www/html。可以用FileZilla这种FTP工具,通过SFTP连服务器传文件;也能用 scp 命令,比如 scp -r /local/path/* root@server_ip:/var/www/html/,把本地文件传到服务器。 (二)配置网站 根据网站需求,改改配置文件,尤其是数据库连接配置,把数据库名、用户名、密码填对。 (三)测试网站 浏览器输入服务器IP或者绑定的域名,看看网站能不能正常打开,功能都能用不。要是出问题了,根据错误提示,检查Web服务器、PHP、数据库的配置,还有网站代码,慢慢调试修复就行。 按照这些步骤,就能在Ubuntu服务器上不借助面板,自己动手把网站搭建起来。虽然过程有点繁琐,但弄明白了,以后网站优化、管理都不是事儿!
-
CentOS 服务器无面板建站全攻略:从系统搭建到网站部署实战教程 CentOS服务器不安装面板建站详细教程 一、CentOS系统简介 CentOS(Community Enterprise Operating System)是一款基于Linux内核的开源操作系统,它源自Red Hat Enterprise Linux(RHEL),在功能和稳定性上与RHEL高度相似,同时又遵循开源协议免费提供给用户使用,因此在服务器领域广受欢迎。CentOS具有高度的稳定性,能够长时间持续运行而无需频繁重启,这对于需要7×24小时不间断服务的网站服务器来说至关重要。并且CentOS拥有庞大的社区支持,用户在使用过程中遇到的各种问题,都可以在社区论坛、技术博客等渠道找到解决方案和相关教程。此外,CentOS系统的安全性也十分出色,通过定期更新系统补丁和安全策略,有效抵御各种网络攻击,保障服务器和网站数据的安全。 二、服务器准备与CentOS系统安装 选择服务器:你可以选择云服务器(如阿里云、腾讯云、华为云等),也可以使用物理服务器。在选择时,需根据网站的预计访问量、数据存储需求等因素,合理配置服务器的CPU、内存、硬盘和带宽资源。 下载CentOS镜像:访问CentOS官方网站(https://www.centos.org/download/ ),根据服务器架构选择合适的CentOS版本(如CentOS 7或CentOS 8)进行下载。一般来说,CentOS 7的兼容性和稳定性较好,是目前使用较为广泛的版本。 安装CentOS系统 云服务器:在云服务器管理控制台中,找到服务器的“重装系统”或“更换系统盘”功能,选择上传的CentOS镜像文件,按照提示完成系统安装。安装过程中,需设置root用户密码等基本信息。 物理服务器:将下载好的CentOS镜像刻录到U盘或光盘,通过服务器的BIOS设置从U盘或光盘启动,按照安装向导逐步进行操作。包括选择安装语言、分区磁盘(可选择自动分区或手动分区,手动分区能更好地根据需求分配磁盘空间)、设置网络信息等。 三、基础环境配置 更新系统:使用SSH工具(如PuTTY、Xshell)连接到CentOS服务器,以root用户登录。执行以下命令更新系统软件包: yum update -y该命令会自动下载并安装系统中所有可用的更新,“-y”参数表示自动确认所有安装提示,避免手动输入确认。 设置防火墙:CentOS 7默认使用firewalld作为防火墙管理工具。若要开放Web服务常用端口(如80端口用于HTTP协议,443端口用于HTTPS协议),可执行以下命令: firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload第一条和第二条命令分别将80端口和443端口永久添加到防火墙规则中,第三条命令用于重新加载防火墙配置,使新规则生效。如果服务器使用的是其他防火墙工具(如iptables),则需使用相应的命令进行端口开放操作。 关闭SELinux(可选):SELinux(Security - Enhanced Linux)是Linux系统的一个安全子系统,用于增强系统的安全性。但在某些情况下,它可能会对网站运行造成干扰。若要临时关闭SELinux,可执行以下命令: setenforce 0若要永久关闭SELinux,需编辑配置文件/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后重启服务器使配置生效。不过,在生产环境中,建议谨慎操作,最好通过调整SELinux策略来解决问题,而不是直接关闭它。 四、安装Web服务器软件 (一)安装Nginx 添加Nginx官方源:执行以下命令添加Nginx的官方软件源: rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm该命令会安装Nginx的源文件,方便后续通过yum命令安装和更新Nginx。 安装Nginx:添加源后,执行以下命令安装Nginx: yum install -y nginx 启动和设置开机自启:安装完成后,使用以下命令启动Nginx服务,并设置为开机自启: systemctl start nginx systemctl enable nginx 验证安装:在浏览器中输入服务器的IP地址,如果看到Nginx默认的欢迎页面,说明Nginx安装成功。 (二)安装Apache 安装Apache:执行以下命令安装Apache: yum install -y httpd 启动和设置开机自启:安装完成后,使用以下命令启动Apache服务,并设置为开机自启: systemctl start httpd systemctl enable httpd 验证安装:同样在浏览器中输入服务器的IP地址,若显示Apache默认页面,则表示安装成功。 五、安装PHP 添加PHP源:以安装PHP 7.4为例,执行以下命令添加Remi源,该源提供了丰富的PHP版本和扩展: yum install -y epel-release yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php74 安装PHP及常用扩展:执行以下命令安装PHP和一些常用的扩展,如php-fpm(PHP FastCGI进程管理器)、php-mysqlnd(用于连接MySQL数据库)、php-gd(用于图像处理)等: yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-pear php-zip 启动和设置开机自启PHP - FPM:安装完成后,使用以下命令启动PHP - FPM服务,并设置为开机自启: systemctl start php-fpm systemctl enable php-fpm 配置Nginx或Apache与PHP的连接 Nginx与PHP的连接配置:编辑Nginx的虚拟主机配置文件(一般位于/etc/nginx/conf.d/目录下),在server块中添加以下内容: location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }上述配置中,root指定了网站根目录,fastcgi_pass指定了PHP - FPM的监听地址和端口(默认是127.0.0.1:9000),fastcgi_param设置了传递给PHP脚本的参数。修改配置后,需执行systemctl restart nginx命令重启Nginx服务使配置生效。 Apache与PHP的连接配置:编辑Apache的配置文件/etc/httpd/conf/httpd.conf或在/etc/httpd/conf.d/目录下创建新的配置文件,添加以下内容: AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps上述配置告诉Apache如何处理PHP文件。修改后,执行systemctl restart httpd命令重启Apache服务。 六、安装数据库(以MySQL为例) 添加MySQL官方源:执行以下命令添加MySQL的官方软件源: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 安装MySQL:添加源后,执行以下命令安装MySQL服务器: yum install -y mysql-community-server 启动和设置开机自启:安装完成后,使用以下命令启动MySQL服务,并设置为开机自启: systemctl start mysqld systemctl enable mysqld 初始化MySQL:执行以下命令初始化MySQL,设置root用户密码等安全配置: mysql_secure_installation按照提示输入密码、选择是否删除匿名用户、禁止root用户远程登录、删除测试数据库等操作。 登录MySQL并创建数据库:执行mysql -u root -p命令,输入密码登录MySQL。然后执行以下命令创建一个新的数据库和用户(假设数据库名为your_database,用户名为your_user,密码为your_password): CREATE DATABASE your_database; CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES; 七、部署网站 上传网站文件:将网站的源代码上传到服务器的网站根目录(Nginx默认根目录为/var/www/html,Apache默认根目录为/var/www/html)。可以使用FTP工具(如FileZilla)通过SFTP协议连接到服务器,将文件上传;也可以使用scp命令在本地和服务器之间传输文件,例如: scp -r /local/path/* root@server_ip:/var/www/html/其中/local/path/是本地网站文件所在目录,server_ip是服务器的IP地址。 配置网站:根据网站的需求,修改网站的配置文件,如数据库连接配置等。如果是基于PHP的网站,通常在网站的配置文件中设置数据库的名称、用户名、密码等信息。 测试网站:在浏览器中输入服务器的IP地址或绑定的域名,访问网站,检查网站是否能够正常运行,功能是否正常。如果出现错误,需根据错误提示信息,检查Web服务器、PHP、数据库等相关配置和网站代码,进行调试和修复。 通过以上步骤,你就可以在CentOS服务器上不安装面板完成网站的搭建。整个过程虽然相对复杂,但能够让你深入了解服务器和网站运行的原理,方便后期进行更精细的优化和管理。