[实战AWS EC2]四、基于Ubuntu,Tengine服务器构建Git管理Nodejs,Redis,MongoDB的网站
[实战AWS EC2]四、基于Ubuntu,Tengine服务器构建Git管理Nodejs,Redis,MongoDB的网站
**技术交流加入QQ群:261654896 **
实战AWS EC2文章目录http://cnodejs.org/topic/5295e58aa6957a0809b0fe43
先进到到某个目录比如 /soft
1.下载:wget http://download.redis.io/releases/redis-2.8.3.tar.gz
解压:tar zxvf redis-2.8.3.tar.gz
完成之后出现:redis-2.8.3
2. 安装准备
将redis移动到/data/redis文件夹
sudo mv redis-2.8.3 /data/
cd /data
sudo mv redis-2.8.3 redis
3. 安装redis
cd /data/redis
make 编译redis
4. 拷贝文件
cp redis.conf /etc/ 这个文件是redis启动的配置文件
cd src 目录下copy下面两个文件到/usr/bin方便命令行使用
cp redis-cli redis-server /usr/bin/
**5. 设置redis为后台运行 (可忽略) **(如果不使用supervisor,就执行这一步,否则跳过这一步,用下面的supervisor)
sudo vi /etc/redis.conf 设置daemonize no 为 daemonize yes
**6. 启动redis (可忽略) **直接使用supervisor redis-server /etc/redis.conf
**7. 将redis启动项目追加入rc.local保证redis在服务器开机时启动 (可忽略) ** 直接使用supervisor 修改:sudo vi /etc/rc.local 添加下面到exit 0的上面
redis-server /etc/redis.conf
8. 如果使用supervisor,应该忽略掉第5.6.7这三步
修改copy到/etc目录下的redis.conf文件
sudo vi /etc/redis.conf
第一:找到 dir ./ #数据会被持久化到这个目录下的‘dbfilename’指定的文件中。
默认是:dump.rdb
修改这个目录 dir /data/dbs/redisdb/
第二:找到 requirepass foobared 把注释放开,打开AUTH模式,让client用密码来连接redis
redis安装到这里,mongodb的继续
安装配置mongodb到/data目录下===============共7步===============
**先进到到某个目录比如 /soft **
1.下载:wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz
解压:tar zxvf mongodb-linux-x86_64-2.4.8.tgz
**2. 安装准备 **
将mongodb移动到/data/mongdb文件夹
sudo mv mongodb-linux-x86_64-2.4.8 /data/
sudo mv mongodb-linux-x86_64-2.4.8 mongodb 改名为:mongodb
**创建数据库文件夹与日志文件 **
sudo mkdir /data/dbs/mongodb /data/dbs/mongodb目录存放数据库产生的文件
sudo touch /mnt/mongodb.log /mnt/mongodb.log目录存放log文件
**3. 设置开机自启动(如果要使用supervisor的话,可以忽略此步) **
将mongodb启动项目追加入rc.local保证mongodb在服务器开机时启动 ,后台启动是fork
修改:sudo vi /etc/rc.local 添加下面两行到exit 0的上面
sudo /data/mongodb/bin/mongod --dbpath=/data/dbs/mongodb --logpath=/mnt/mongodb.log --auth --port=27017 --fork
保存之后,reboot
重启后使用:ps -ef|grep mongo 查看是否开机自启动了mongodb
**在配置mongodb之前,因为我们要使用supervisor,所以先安装它,让mongodb启动起来。 **
**4. 配置mongodb-------- **
请确保你的mongodb已经启动,最好先配置在supervisor中。
先进入 cd /data/mongodb/bin 目录
进入数据库:./mongo
输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local。
输入命令:use admin
添加一个超级管理员用户:db.addUser(‘admin’,‘输入你的密码’) 前面是用户名,后面是密码
马上用这个超级管理员登录数据库:db.auth(‘admin’,‘输入你的密码’) 返回1表示登录成功
创建第一个数据库:use sogego
为刚创建的数据库,建立一个用户 :db.addUser(‘sogego.com’,‘sogego.com’) 前面是用户名,后面是密码
创建第二个数据库:use phoneqq
为刚创建的数据库,建立一个用户 :db.addUser(‘phoneqq.com’,‘phoneqq.com’) 前面是用户名,后面是密码
创建第三个数据库:use bugsky
为刚创建的数据库,建立一个用户 :db.addUser(‘bugsky.com’,‘bugsky.com’) 前面是用户名,后面是密码
退出输入:exit
**5. 查看mongodb连接数---------- **
先进入 cd /data/mongodb/bin 目录
进入数据库:./mongo
输入命令:use admin
用超级管理员登录数据库:db.auth(‘admin’,‘输入你的密码’) 返回1表示登录成功
输入:db.serverStatus().connections 查看连接 显示如下信息:
{ “current” : 1, “available” : 818, “totalCreated” : NumberLong(26) }
为了提高available连接数,让client连接时poolSize可以设置较大的值,
要进行第6步操作如下
**6. 设置mongodb连接数 **
编辑/etc/rc.local 加入
ulimit –n 65535
完成后要wq保存退出编辑模式,然后reboot系统
查看一下mongodb是否启动了:ps -ef|grep mongo
**7.先进入 cd /data/mongodb/bin 目录 **
进入数据库:./mongo
输入命令:use admin
用超级管理员登录数据库:db.auth(‘admin’,‘输入你的密码’) 返回1表示登录成功 db.serverStatus().connections 显示如下信息
{ “current” : 1, “available” : 19999, “totalCreated” : NumberLong(1) }
可见available连接数变大了,最大20000.
**如果要备份或是恢复数据库执行如下操作 **
首先关闭mongodb数据库
备份操作:mongodump –dbpath /data/dbback/
恢复操作:mongorestore /data/dbback/
最后操作发现,如果使用supervisor启动mongodb的话,ulimit设置为:65535,连接数还是最大的819.只能使用在/etc/rc.loacl中添加开机启动,不用supervisor,就可以加大连接数为:20000,如果有人知道,用supervisor启动mongodb,同时把连接数加大到20000的方法,请告诉我,对于小站点,连接数不多,使用supervisor足够了。
好的,以下是如何在AWS EC2实例上基于Ubuntu构建一个使用Tengine服务器管理的Node.js、Redis、MongoDB的网站。假设你已经有一个基本的Ubuntu EC2实例,并且你希望使用Git来管理这些服务。
步骤1:安装必要的软件
首先,我们需要安装Node.js、Redis、MongoDB和Tengine服务器。我们将使用apt
包管理器来安装这些软件。
# 更新包列表并安装必要的软件
sudo apt update
sudo apt install -y nodejs npm redis-server mongodb tengine
步骤2:配置Redis
接下来,我们配置Redis。我们将把Redis的配置文件复制到合适的目录,并开启守护进程模式。
# 复制配置文件
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
sudo sed -i 's/bind 127.0.0.1 ::1/bind 127.0.0.1/g' /etc/redis/redis.conf
sudo sed -i 's/daemonize no/daemonize yes/g' /etc/redis/redis.conf
sudo sed -i 's/dir \.\//dir \/data\/dbs\/redisdb\//' /etc/redis/redis.conf
# 创建Redis数据目录
sudo mkdir -p /data/dbs/redisdb
# 重启Redis服务
sudo systemctl restart redis-server
步骤3:配置MongoDB
然后,我们配置MongoDB。我们将创建MongoDB的数据目录,并配置其启动脚本。
# 创建MongoDB数据目录
sudo mkdir -p /data/dbs/mongodb
sudo touch /mnt/mongodb.log
# 配置MongoDB
echo "sudo /data/mongodb/bin/mongod --dbpath=/data/dbs/mongodb --logpath=/mnt/mongodb.log --auth --port=27017 --fork" | sudo tee -a /etc/rc.local
# 重启MongoDB服务
sudo systemctl restart mongod
步骤4:安装Node.js应用
现在,我们将部署一个简单的Node.js应用。假设你已经在GitHub上托管了一个Node.js应用。
# 克隆仓库
git clone https://github.com/your-repo/your-nodejs-app.git /var/www/nodeapp
# 安装依赖
cd /var/www/nodeapp
npm install
# 启动Node.js应用
node app.js
步骤5:配置Tengine
最后,我们将配置Tengine作为反向代理来服务Node.js应用。
# 编辑Tengine配置文件
sudo nano /etc/nginx/sites-available/default
# 添加以下内容
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
}
}
保存并重启Tengine:
sudo systemctl restart nginx
总结
以上步骤展示了如何在Ubuntu上配置一个基本的Node.js、Redis、MongoDB和Tengine服务器环境。你可以根据需要调整配置以适应更复杂的生产环境。希望这些步骤对你有所帮助!
针对题目中提到的如何构建基于Ubuntu和Tengine服务器的Git管理Node.js、Redis、MongoDB的网站,这里提供一个简化的步骤指导和部分关键代码。由于篇幅限制,只提供主要步骤和一些核心代码片段。
安装Node.js
首先,需要安装Node.js环境。Ubuntu可以通过NodeSource库来安装:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
创建Node.js应用
创建一个新的Node.js项目:
mkdir myapp
cd myapp
npm init -y
安装Express作为web框架:
npm install express
创建一个简单的Express应用 (index.js
):
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`App listening at http://localhost:${port}`);
});
Redis与MongoDB配置
Redis
在上述指南中已详细描述了如何安装Redis。现在确保Redis服务已经启动并可用。
MongoDB
同样地,MongoDB的安装与配置已在指南中详述。确保MongoDB已经启动并且能够通过Node.js客户端连接。
安装MongoDB Node.js驱动:
npm install mongodb
简单连接到MongoDB的示例代码 (mongo.js
):
const { MongoClient } = require('mongodb');
async function main() {
const uri = "your_mongodb_connection_string";
const client = new MongoClient(uri);
try {
await client.connect();
const database = client.db('testdb');
const collection = database.collection('documents');
// 执行CRUD操作
} finally {
await client.close();
}
}
main().catch(console.error);
使用Tengine部署Node.js应用
Tengine是一个高性能的Web服务器,用于反向代理或负载均衡。假设已经正确配置Tengine,你需要编辑其配置文件(通常位于 /etc/nginx/nginx.conf
或 /etc/tengine/nginx.conf
)来包含你的Node.js应用:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
}
}
重启Tengine以应用更改:
sudo service tengine restart
以上便是搭建这样一个复杂系统的简化版本说明。每个步骤都需要根据实际的生产环境进行适当的调整。