下面我将为您详细讲解如何搭建“CentOS7 + node.js + nginx + MySQL”的服务器。
第一步:CentOS7系统的安装
- 下载CentOS7系统的ISO镜像文件;
- 制作启动盘并安装CentOS7系统;
- 配置网络。
第二步:安装node.js
- 使用yum命令安装epel-release仓库:
sudo yum install epel-release
- 更新yum仓库:
sudo yum update
- 安装node.js:
sudo yum install nodejs
- 验证node.js是否安装成功:
node -v
如果成功安装,会输出node.js的版本号。
第三步:安装MySQL数据库
- 安装MySQL:
sudo yum install mysql-server
- 启动MySQL服务:
sudo systemctl start mysqld
- 配置MySQL:
sudo mysql_secure_installation
- 验证MySQL是否安装成功:
mysql -u root -p
如果成功安装,会进入到MySQL的命令行交互界面。
第四步:安装nginx
- 安装nginx:
sudo yum install nginx
- 启动nginx服务:
sudo systemctl start nginx
- 验证nginx是否安装成功:
在浏览器中输入服务器的IP地址,如果出现Welcome to nginx!的页面,则说明nginx安装成功。
第五步:配置node.js应用
- 创建一个新的node.js应用程序:
mkdir myapp
cd myapp
npm init
- 安装express框架:
npm install express --save
- 编写一个简单的node.js应用程序:
```
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
})
```
- 启动应用程序:
node app.js
访问http://服务器IP:3000,如果看到"Hello World!"字样,则说明node.js应用程序已经运行成功。
第六步:配置nginx反向代理
- 修改nginx配置文件:
sudo nano /etc/nginx/nginx.conf
- 在http模块下添加server块:
```
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
```
- 重启nginx:
sudo systemctl restart nginx
- 访问http://服务器IP,如果看到"Hello World!"字样,则说明nginx反向代理配置成功。
这样,"CentOS7 + node.js + nginx + MySQL"的服务器就搭建完成了,您可以根据自己的需求做相应的调整和优化。
以下是两个示例说明:
示例1:使用node.js创建一个简单的RESTful API
使用node.js和Express框架,可以很方便地创建RESTful API。可以通过以下步骤来创建一个简单的RESTful API:
- 创建一个新的目录和一个新的node.js应用程序:
mkdir myapi && cd myapi
npm init
- 安装Express框架和mysql模块:
npm install express mysql --save
- 编写服务器端代码:
```
const express = require('express')
const mysql = require('mysql')
const app = express()
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'your-password',
database: 'my_database'
})
// GET /users
app.get('/users', (req, res) => {
pool.query('SELECT * FROM users', (err, rows) => {
if (err) {
res.status(500).json({error: err})
} else {
res.json(rows)
}
})
})
// GET /users/:id
app.get('/users/:id', (req, res) => {
const id = req.params.id
pool.query('SELECT * FROM users WHERE id = ?', [id], (err, rows) => {
if (err) {
res.status(500).json({error: err})
} else {
res.json(rows[0])
}
})
})
// POST /users
app.post('/users', (req, res) => {
const username = req.body.username
const password = req.body.password
pool.query('INSERT INTO users (username, password) VALUES (?, ?)', [username, password], (err, result) => {
if (err) {
res.status(500).json({error: err})
} else {
res.json({id: result.insertId})
}
})
})
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
})
```
上述代码中,我们创建了三个RESTful API,分别是:获取所有用户、获取用户信息和创建新用户。
- 启动服务:
node app.js
- 使用Postman等工具来测试API。
示例2:使用nginx反向代理多个node.js应用程序
如果您想要在同一台服务器上运行多个node.js应用程序,可以使用nginx来反向代理多个应用程序。以下是示例配置:
- 编写node.js应用程序:
```
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('First app!')
})
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
})
```
```
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('Second app!')
})
app.listen(4000, () => {
console.log('Example app listening on port 4000!')
})
```
- 修改nginx配置文件:
```
server {
listen 80;
server_name example.com;
location /app1 {
proxy_pass http://127.0.0.1:3000/;
}
location /app2 {
proxy_pass http://127.0.0.1:4000/;
}
}
```
上述配置中,我们使用location关键字来指定不同的URL路径,并将请求反向代理到不同的node.js应用程序(使用不同的端口号)。
- 重启nginx:
sudo systemctl restart nginx
- 访问http://服务器IP/app1和http://服务器IP/app2,分别可以看到不同的输出结果。
以上就是示例说明,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS7 + node.js + nginx + MySQL搭建服务器全过程 - Python技术站