linux搭建web服务器流程
手里有台闲置的服务旧笔记本,装了个Ubuntu Server,器流打算让它干点正事——跑个网站。服务别想得太复杂,器流搭建web服务器这事,服务本质上就是器流装个软件、改个配置、服务把文件丢进去。器流三十分钟内能搞定,服务前提是器流你别被网上那些教程吓住。
第一步,服务装Nginx。器流apt update && apt install nginx,服务两条命令的器流事。装完浏览器敲服务器IP,服务看到Welcome to nginx页面,说明基础环境已经活了。这里有个坑:Ubuntu默认防火墙可能挡着80端口,手动放行一下,ufw allow 'Nginx Full'。别问我为什么知道,第一次搭的时候卡在这十分钟。
然后就是改站点配置。Nginx的默认站点在/etc/nginx/sites-available/default,我习惯直接编辑这个文件,省得再去建软链接。关键就几行:server_name改成你的域名或IP,root指向你的网站目录,比如/var/www/myblog。改完记得nginx -t测试语法,然后systemctl reload nginx。别跳过测试这步,写错一个分号,服务直接起不来。
网站文件放哪?我见过有人直接把HTML丢在/root下,结果权限不够,页面403。正确做法:mkdir -p /var/www/myblog,然后chown -R www-data:www-data /var/www/myblog。www-data是Nginx的运行用户,这步不做好,后面有的折腾。
光有静态页面不够爽,还得上PHP。装php-fpm,然后改Nginx配置,让.php结尾的请求转到FastCGI处理。具体写法网上满地都是,但核心就一点:location ~ \.php$ 那个块里,fastcgi_pass要指向php-fpm的socket文件。版本不同,路径可能变,比如php8.1-fpm.sock。用php -v查一下你的版本,别照抄老教程。
数据库也不能少。MySQL或者MariaDB,二选一。我习惯用MariaDB,因为安装时不用设置root密码,省一步。装完跑一遍mysql_secure_installation,把匿名用户删掉,远程登录关掉。然后建库建用户,grant all privileges on 你的库名.* to '你的用户'@'localhost' identified by '密码'。这步操作完,PHP代码里连数据库就有凭据了。
其实到这儿,一个能跑PHP+MySQL的web服务器已经成型。但我得说句实话——新手最容易栽的坑,不在安装,在权限和路径。比如你把网站放到了/home/你的用户名/site,Nginx默认用户可能读不了,因为/home下的目录权限通常是700。解决方案要么把网站挪到/var/www,要么给目录加执行权限。我吃过这个亏,折腾了一下午,最后发现是权限问题。
测试的时候,别老用浏览器刷。命令行curl -I localhost,看返回的HTTP状态码,200就是正常,403查权限,500查PHP错误日志。日志在/var/log/nginx/error.log,tail -f盯着看,问题一目了然。
最后提一嘴,如果是公网服务器,记得改SSH默认端口,装个fail2ban。不是为了炫技,是真实世界里,扫描器每秒钟都在撞你的22端口。我自己的服务器,没装fail2ban之前,一天能被尝试登录几百次。
流程说完了。没什么高深莫测的东西,就是装包、改配置、调权限、看日志这几件事来回转。搭过一次,后面就轻车熟路了。