1.
购买与选择实例
选择新加坡机房的云服务商(如AWS SGP、DigitalOcean SGP、Linode SGP或阿里云新加坡);选择Ubuntu 22.04或Debian 12镜像;规格按流量与并发选CPU/RAM;记下公网IP与SSH密钥或初始密码。
2.
系统初始化与安全
通过SSH登录:ssh root@IP;更新系统:apt update && apt upgrade -y;添加普通管理员用户:adduser deploy && usermod -aG sudo deploy;禁用root远程登录(编辑/etc/ssh/sshd_config,PermitRootLogin no),重启ssh:systemctl restart sshd;设置时区:timedatectl set-timezone Asia/Singapore。
3.
防火墙与基本端口
启用ufw:apt install ufw -y;允许SSH、HTTP、HTTPS:ufw allow OpenSSH; ufw allow 80; ufw allow 443; ufw enable;检查状态:ufw status verbose。
4.
安装数据库(MariaDB)
安装:apt install mariadb-server -y;安全脚本:mysql_secure_installation,设置root密码、删除匿名用户、禁止远程root登录、删除测试库;创建网站数据库与用户:mysql -u root -p -> CREATE DATABASE mysite; CREATE USER 'siteuser'@'localhost' IDENTIFIED BY 'strongpass'; GRANT ALL ON mysite.* TO 'siteuser'@'localhost'; FLUSH PRIVILEGES;
5.
选择Web服务器:Nginx(推荐)或Apache
安装Nginx:apt install nginx -y;启动并设为开机:systemctl enable --now nginx;如果选择Apache:apt install apache2 -y并启用mod_php或使用php-fpm。
6.
安装PHP与扩展(以PHP 8.1/8.2为例)
添加源(如必要):apt install software-properties-common -y; add-apt-repository ppa:ondrej/php -y; apt update;安装:apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip -y;检查版本:php -v 或 systemctl status php8.1-fpm。
7.
配置PHP-FPM与php.ini优化
编辑php.ini(/etc/php/8.1/fpm/php.ini):调整cgi.fix_pathinfo=0;upload_max_filesize=50M;post_max_size=50M;memory_limit=256M;max_execution_time=120;设置时区:date.timezone = "Asia/Singapore";调整FPM池文件/etc/php/8.1/fpm/pool.d/www.conf,设置user/www-data、pm = dynamic、pm.max_children按内存计算(例如2GB内存设20);重启:systemctl restart php8.1-fpm。
8.
Nginx站点配置与PHP处理
创建站点配置/etc/nginx/sites-available/mysite:server_name example.com www.example.com; root /var/www/mysite; 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.1-fpm.sock; };启用站点:ln -s ... sites-enabled;测试语法:nginx -t;重载:systemctl reload nginx。
9.
文件权限与部署
创建网站目录:mkdir -p /var/www/mysite && chown -R deploy:www-data /var/www/mysite && chmod -R 750 /var/www/mysite;使用git或sftp上传代码;创建测试phpinfo文件:echo " /var/www/mysite/index.php;在浏览器访问检查PHP配置。
10.
配置SSL(Let's Encrypt)
安装certbot:apt install certbot python3-certbot-nginx -y;申请证书:certbot --nginx -d example.com -d www.example.com;自动续期测试:certbot renew --dry-run;确保证书自动续期cron或systemd任务正常。
11.
性能与安全加固
启用HTTP/2:在Nginx的listen 443 ssl http2;安装OPcache(php扩展通常已包含),在php.ini启用opcache.enable=1并调整opcache.memory_consumption=128;限制暴力登录、安装fail2ban:apt install fail2ban -y,并为nginx和ssh启用规则。
12.
备份与监控
设置数据库定期备份脚本:mysqldump -u root -p'pass' mysite > /backup/mysite-$(date +%F).sql;同步到对象存储或远程备份;安装监控(如Netdata/Prometheus+Grafana)以监测CPU、内存、磁盘与PHP-FPM连接数。
13.
常见问题解答一(问)
Q:新加坡机房延迟如何优化?
14.
常见问题解答一(答)
A:选择离用户近的机房、使用CDN(Cloudflare/阿里云CDN)、开启Gzip与HTTP/2、优化静态资源并使用缓存头,数据库与应用分离也能降低响应时延。
15.
常见问题解答二(问)
Q:PHP-FPM报502 Bad Gateway怎么办?
16.
常见问题解答二(答)
A:检查php-fpm是否运行(systemctl status php8.1-fpm)、确认nginx配置fastcgi_pass的sock路径正确、查看/var/log/nginx/error.log与php-fpm日志以定位进程不足或权限问题,调整pm.max_children。
17.
常见问题解答三(问)
Q:如何安全地在生产环境升级PHP?
18.
常见问题解答三(答)
A:在测试服务器上先验证代码兼容性与依赖、备份数据库与文件、使用多版本PHP并行(或容器化),在低流量窗口切换并回滚脚本准备好。
来源:技术指南新加坡云服务器做网站的环境搭建与PHP配置教程