假设你手里刚拿到一台VPS,系统装好Ubuntu或者CentOS,root密码已经获取。接下来的目标就是部署网站。我平时更习惯Nginx,配置书写比Apache顺手,下面以Nginx为主线讲解,同时标注Apache存在差异的地方。
第一步不要直接安装软件,SSH连接服务器。Windows用户使用Xshell或者Putty,Mac、Linux直接打开终端输入ssh root@你的服务器IP,回车输入密码。连接成功之后更新系统软件包,Ubuntu执行apt update && apt upgrade -y,CentOS执行yum update -y。这个步骤耗时几分钟,能避免后续安装软件因为旧包产生各类异常报错。

安装Nginx只需要一条命令。Ubuntu执行apt install nginx -y,CentOS执行yum install nginx -y。安装完成一般自动启动Nginx,浏览器访问服务器IP,会出现Nginx欢迎页面。页面无法打开,先检查防火墙。Ubuntu默认ufw,执行ufw allow 'Nginx Full'放行80、443端口。CentOS使用firewalld,依次执行firewall-cmd --permanent --add-service=http、firewall-cmd --permanent --add-service=https,再执行firewall-cmd --reload。云服务器额外需要在控制台安全组放行80和443,很多人配置无误但是访问失败,根源就是安全组端口未开放。
Nginx配置文件目录在/etc/nginx/。主配置文件nginx.conf,一般不建议直接修改。推荐在conf.d或者sites-available目录,为每个站点单独新建配置文件。例如搭建example.com站点,新建/etc/nginx/conf.d/example.com.conf,配置内容示例:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.php;
}
这段配置含义:监听80端口,域名匹配example.com和www.example.com,网站文件存放路径/var/www/example.com,默认首页优先读取index.html、index.php。保存文件,执行nginx -t校验语法,校验通过执行systemctl reload nginx加载配置。语法报错时Nginx会标注出错行,直接修改即可。
接下来上传网站文件。FileZilla这类SFTP工具连接服务器,进入/var/www/example.com目录,将本地HTML、CSS、图片文件上传。部署WordPress、Typecho这类PHP程序,额外安装PHP和数据库。Ubuntu执行apt install php-fpm php-mysql -y,CentOS执行yum install php-fpm php-mysqlnd -y。安装完成,Nginx配置增加处理PHP的location片段,不然PHP文件会直接下载,不会解析执行。配置片段参考:
location ~ .php${
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;
}
fastcgi_pass后的路径跟随PHP版本变化,Ubuntu22.04默认php8.1,安装对应版本就修改路径。修改完成依旧执行nginx -t校验,再systemctl reload nginx。
数据库部分,MySQL或者MariaDB安装完成,运行初始化脚本mysql_secure_installation,设置root密码,删除测试库、匿名用户。新建网站专用数据库和用户,不要直接使用root账号对接网站,权限风险过高。建库命令CREATE DATABASE example_db;,创建用户CREATE USER 'example_user'@'localhost' IDENTIFIED BY '你的密码';,授权GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';,最后FLUSH PRIVILEGES;刷新权限。
域名解析配置。域名服务商后台,example.com添加A记录指向服务器IP,www子域名同样指向IP,或者CNAME指向example.com。解析生效耗时几分钟到数小时,ping example.com查看返回IP是否匹配。解析未生效时,使用IP访问可以测试站点;但Nginx配置填写server_name域名,IP访问可能匹配默认站点,解析生效之后恢复正常。
网站成功访问之后,下一步部署SSL。不带HTTPS的站点浏览器标记不安全,影响访问。Let's Encrypt免费证书搭配Certbot是最简单方案。Ubuntu执行apt install certbot python3-certbot-nginx -y,之后执行certbot --nginx -d example.com -d www.example.com。工具自动修改Nginx配置,80端口请求跳转443,证书到期自动续。Certbot会询问邮箱、协议确认,跟着提示操作,两三分钟完成。部署之后浏览器地址栏出现锁图标,证书有效期90天,Certbot自动续期,不用手动维护。
不想使用Certbot,或是国内服务器手动上传证书,前往阿里云、腾讯云申请免费证书,下载Nginx压缩包,解压得到.crt和.key文件。上传至服务器,例如/etc/nginx/ssl/目录,Nginx配置新增443端口server块,填写ssl_certificate、ssl_certificate_key路径。额外配置80端口跳转443,所有HTTP请求自动转为HTTPS。
还有一些优化细节。Nginx默认worker_connections为512,小型站点够用,访问量上涨可以调整到1024或者更高。开启gzip压缩,nginx.conf的http块添加gzip on;以及gzip_types,压缩文本、CSS、JS资源,减少传输体积。静态资源设置较长缓存,location块添加expires 30d;,浏览器缓存图片样式文件,减少重复请求。日志文件默认路径/var/log/nginx/,access.log记录全部请求,error.log记录报错,网站异常优先查看这两份日志,大部分问题都能找到线索。
配置Web服务器,初次操作步骤繁多,完整跑通一遍之后就会熟悉,核心步骤就是安装软件、编写配置、上传站点文件、放行端口、部署SSL。不同服务器环境、网站程序会存在细节差异,但整体框架不变。遇到报错不用慌张,Nginx报错信息清晰,按提示修改;也可以把错误日志检索,很多人遇到同类问题。