从零开始:基于CentOS的轻量服务器+Express+MySQL搭建个人网站指南
一、环境准备:轻量应用服务器与基础配置
1.1 轻量应用服务器选型与部署
轻量应用服务器(如阿里云、腾讯云提供的CentOS镜像)是搭建个人网站的经济高效选择。其优势在于:
- 资源隔离:独立IP与带宽,避免共享主机性能波动。
- 成本可控:按需付费模式,适合个人开发者或小型项目。
- 管理便捷:提供Web控制台,支持一键重装系统、防火墙配置等操作。
操作建议:
- 选择CentOS 7/8镜像(LTS版本更稳定),配置至少1核2G内存。
- 通过SSH连接服务器(如使用Xshell或PuTTY),初始密码可通过控制台重置。
- 更新系统包:sudo yum update -y,确保基础环境安全。
1.2 安全加固:SSH与防火墙配置
默认SSH端口(22)易受暴力破解攻击,需进行以下优化:
- 修改SSH端口:编辑/etc/ssh/sshd_config,修改Port 22为Port 2222(或其他高位端口),重启服务:sudo systemctl restart sshd。
- 禁用Root登录:设置PermitRootLogin no,通过普通用户+sudo提权管理。
- 配置防火墙:使用firewalld开放必要端口(如2222、80、443、3306):- sudo firewall-cmd --permanent --add-port=2222/tcp
- sudo firewall-cmd --permanent --add-service=http
- sudo firewall-cmd --permanent --add-service=https
- sudo firewall-cmd --reload
 
二、Express应用开发:从零构建Web服务
2.1 Node.js与Express安装
Express是基于Node.js的轻量级Web框架,适合快速开发API或网站后端。
步骤:
- 安装Node.js(推荐使用nvm管理多版本):- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- source ~/.bashrc
- nvm install --lts
 
- 创建Express项目:- mkdir my-website && cd my-website
- npm init -y
- npm install express
 
- 编写基础路由( - app.js):- const express = require('express');
- const app = express();
- const port = 3000;
- app.get('/', (req, res) => {
- res.send('Hello, World!');
- });
- app.listen(port, () => {
- console.log(`Server running at http://localhost:${port}`);
- });
 
- 本地测试:node app.js,访问http://localhost:3000验证。
2.2 中间件与静态文件服务
Express通过中间件扩展功能,例如:
- 日志记录:morgan中间件记录HTTP请求。
- JSON解析:express.json()解析请求体。
- 静态文件:托管前端资源(HTML/CSS/JS)。
示例配置:
const morgan = require('morgan');
app.use(morgan('combined'));
app.use(express.json());
app.use(express.static('public')); // 托管public目录下的文件
三、MySQL数据库集成:数据持久化方案
3.1 MySQL安装与配置
CentOS下可通过YUM安装MySQL社区版:
sudo yum install mysql-server -y
sudo systemctl start mysqld
sudo systemctl enable mysqld
安全初始化:
运行mysql_secure_installation,按提示设置root密码、移除匿名用户、禁止远程root登录等。
3.2 数据库设计与连接
创建网站所需数据库及用户:
CREATE DATABASE my_website;
CREATE USER 'web_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON my_website.* TO 'web_user'@'localhost';
FLUSH PRIVILEGES;
在Express中连接MySQL(使用mysql2库):
npm install mysql2
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: 'localhost',
user: 'web_user',
password: 'StrongPassword123!',
database: 'my_website',
waitForConnections: true,
connectionLimit: 10
});
// 示例查询
async function getUser(id) {
const [rows] = await pool.query('SELECT * FROM users WHERE id = ?', [id]);
return rows[0];
}
四、部署与优化:生产环境实战
4.1 PM2进程管理
使用PM2守护Express进程,避免因崩溃导致服务中断:
npm install pm2 -g
pm2 start app.js --name "my-website"
pm2 save
pm2 startup # 生成开机自启命令(按提示执行)
4.2 Nginx反向代理
将Express的3000端口通过Nginx暴露为80/443端口,并启用HTTPS:
- 安装Nginx:sudo yum install nginx -y。
- 配置反向代理( - /etc/nginx/conf.d/my-website.conf):- server {
- listen 80;
- server_name yourdomain.com;
- location / {
- proxy_pass http://localhost:3000;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection 'upgrade';
- proxy_set_header Host $host;
- proxy_cache_bypass $http_upgrade;
- }
- }
 
- 申请SSL证书(如Let’s Encrypt):- sudo yum install certbot python3-certbot-nginx -y
- sudo certbot --nginx -d yourdomain.com
 
4.3 性能优化建议
- 缓存策略:对静态资源设置Cache-Control头。
- 数据库索引:为高频查询字段添加索引。
- 负载测试:使用ab或wrk模拟并发请求,调整PM2实例数。
五、常见问题与排查
- 端口冲突:检查netstat -tulnp确认端口占用。
- MySQL连接失败:验证用户权限与防火墙规则。
- Nginx 502错误:检查Express服务是否运行,日志位于/var/log/nginx/error.log。
- PM2进程崩溃:通过pm2 logs查看错误日志。
六、总结与扩展
通过轻量应用服务器(CentOS)+Express+MySQL的组合,开发者可快速搭建高可用、低成本的个人网站。后续可扩展:
- 引入Redis缓存热点数据。
- 使用Docker容器化部署,提升环境一致性。
- 集成CI/CD流水线(如GitHub Actions)实现自动化部署。
本文提供的步骤与代码示例均经过实际验证,适合初学者跟随操作,也可作为运维人员的参考手册。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!