需要的下面四个工具最好都采用yum安装,不要采用编译安装的方法,因为编译安装会导致某些依赖关系丢失。

nginx 作为HTTP和反向代理,处理静态页面,动态服务交由nodejs服务。

nodejs作为处理动态事件的服务器。

mysql是数据库。

memcahed是一个数据缓存系统,为mysql提供缓存功能

首先你需要会使用linux的命令行操作,然后你至少需要简单理解js语言,还要熟悉mysql的基本操作

系统环境

系统环境是centos6.5,yum源可能需要更新,为了下载更快,可以更换国内源,taobao源或者163源,具体操作自行百度,这里我直接采用默认源。

使用下面的命令更新yum源

yum update

安装nginx

命令如下

#安装nginx的rpm包,如果yum能找到对应的包,可以不做这一步
yum install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum install nginx #安装nginx
chkconfig nginx on #设置nginx开机自启
/etc/init.d/nginx start # 启动Nginx服务
或者使用
service nginx start #start 或者 stop 或者 restart /etc/init.d/nginx stop # 停止Nginx服务 chkconfig --list|grep nginx #查看nginx的启动权限,这条命令的功能搜一搜就好 #可以通过nginx -v 查看安装版本
#启动服务后,可以通过在浏览器访问http://losthost 看到默认的nginx服务器页面
其中,/etc/nginx/nginx.conf       是 Nginx默认安装配置文件位置,后面会用到

安装nodejs

#安装epel源,否则yum上找不到nodejs
yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #安装nodejs 和 npm ,npm是nodejs的一个包管理器之类的软件。
yum install nodejs npm #可以通过node -v 查看安装版本

express是nodejs的一个框架软件,很好很方便

#安装express, -g 是代表全局安装,d是同时安装依赖关系,这一步骤可以跳过,直接安装express命令行工具。
npm install express -gd #安完后如果命令行中没有express命令,执行下面这条安装指令,一般都是要安装的,express 4.x版本都需要安装这个命令行工具
npm install -g express-generator
#可以通过express -v 查看安装版本(也许是-V,就是这俩)

安装mysql和memcached

安装mysql

#安装mysql
yum install mysql
yum install mysql-server
yum install mysql-devel
#mysql查看是否安装成功,进入mysql命令行输exit退出来

使用mysql

mysqladmin -u root password root   #第一个root是root账户,第二个root是需要设置的密码,这里以“root”为例
mysql -u root -p #以root用户登录mysql,会要求你输入密码,就输入刚刚设置的密码
#接下来就是基本的数据库操作,这里不再赘述

下面设置mysqld开机自启动,mysql的服务叫做mysqld

service mysqld start                   #启动mysqld服务,这里类似上述的nginx服务
chkconfig mysqld on #设置nginx开机自启

修改mysql远程连接:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;    //允许root用户以root密码远程连接
FLUSH PRIVILEGES; //刷新

安装 memcached

#安装memcached
yum install memcached
#查看是否安装成功
memcached -h
#启动服务,默认会在11211端口启动,其他参数自行百度
service memcached start
#依然是设置开机自启
Chkconfig memcached on

架设服务器

环境配置好了,就可以架设服务器了

  1. 通过nginx建立nodejs服务器的反向代理

    #用express创建一个nodejs项目
    express a_node #a_node是我随意起的项目名
    #cd 进入你刚刚创建的项目文件夹,进行相应的module安装
    npm install #可以通过修改package.json来选择安装哪些包,express会默认帮你设定一些必要的包,你还可以自己添加,可以搜索学习一下package.json的参数。这一步之后,基本的nodejs项目已经可以运行,但因为还要连接mysql和memcache所以下面继续安装包 #这时在命令行中cd进项目目录, npm start 可以启动nodejs的服务器,默认在localhost:3000开启
    #访问localhost:3000可以看到express的页面 npm install mysql #mysql的包安装
    npm install memcached #memcached的包安装
  2. /etc/nginx/nginx.conf 这个文件就是调用conf.d中所有配置文件的配置文件,想添加自己的配置文件最好不要修改/nginx.conf和default.conf了,自己在conf.d中建立一个.conf文件
  3. cd /etc/nginx/conf.d 可以看到default.conf 这是默认的配置文件,可以通过修改它使nginx支持php等操作(默认支持php页面的代码被注释掉了,可以取消注释来建立)
  4. /etc/nginx/conf.d 中建一个支持反向代理的.conf文件

    upstream nodejs{
    server 127.0.0.1:3000; #3000是你刚刚nodejs建立的服务器端口号
    }
    server {
    listen 8080; #8080是你的nginx代理端口
    server_name localhost; location / {
    proxy_pass http://nodejs; #调用upstream的那个端口
    }
    }
  5. 接下来重启nginx服务
    service nginx restart

    这时访问localhost:8080应该能看到localhost:3000的对应页面,如果出现502错误可以去/var/log/nginx里的err.log看看错误日志,比如权限问题,可以

    #关闭selinux服务,解决connect() to 127.0.0.1:8080 failed(13: Permission denied)
    setbool -P httpd_can_network_connect 1
  6. 以上基本的nodejs服务器和nginx代理服务器都算建立了,可以修改nginx.conf配置文件来确定哪些页面请求使用代理,哪些页面请求直接处理

附一篇nodejs通过memcached查询mysql的代码

//这个文件命名为sel.js,放在nodejs项目中的routes文件夹里
var express = require('express');
var URL = require("url");
var mysql = require("mysql");
var cache = require('memcached');
var router = express.Router(); router.get('/', function(req, res, next) {
var memcached = new cache('localhost:11211');//新建cache连接
memcached.get(URL.parse(req.url,true).query.name,function(err,rows){
if(err) console.log(err);
if (rows) { //如果mmecache查到了
res.send(rows);
console.log("find in cache"); //显示查询结果
} else{ //否则新建mysql连接
console.log("not find in cache");
var con = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'nodetest',
port:3306
});
con.connect(); //连接查询
console.log("connect the mysql");
con.query('select id from peo where name =?',[URL.parse(req.url,true).query.name], function(err0,rows1) {
if (err0) console.log(err0);
if (rows1 != "") { //MYSQL中存在记录,将记录写回memcache,同时送给前台
console.log("find in mysql");
res.send(rows1);
memcached.set(URL.parse(req.url,true).query.name,rows1,10000,function(err0,rows1){
if(err0) console.log(err0);
console.log("save into cache");
});
} else{ //mysql中不存在记录,输出不存在
console.log("no record");
res.send("no record");
};
});
con.end();
console.log("end line of mysql");
};
memcached.end();
console.log("end line of cache");
});
});
module.exports = router;
//修改nodejs项目文件夹中的app.js文件
app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes);
app.use('/users', users);
app.use('/sel', require('./routes/sel')); //这里是刚刚建立的sel路由文件,上下文对照代码自己找 // catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');

声明: 本文由(fengneng)原创,转载请保留本文链接:http://www.yalewoo.com/nginx_nodejs_mysql_memcached_on_centos65.html

 

当然,你还可以在app.js中增加路由调用,然后在routes文件夹中写更多自己的模块,那就需要你深入的学习nodejs了。

nginx+nodejs+mysql+memcached服务器后台架设centos6.5的更多相关文章

  1. centos6+nginx+php+mysql+memcached+wordpress

    centos6+nginx+php+mysql+memcached+wordpress 搭建步骤(1) LNMP 平台搭建: 请参考:http://www.cnblogs.com/ligao/p/61 ...

  2. MySQL数据库服务器的架设

    导读 MySQL数据库是Linux操作系统上用得最多的数据库系统,它可以非常方便的与其它服务器集成在一起,如Apache.Vsftpd.Postfix等.下面介绍RHEL 6平台MySQL数据库服务器 ...

  3. ubuntu 12.04 安装 nginx+php+mysql web服务器

    Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...

  4. [转] ubuntu 12.04 安装 nginx+php+mysql web服务器

    Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...

  5. Nginx+Nodejs搭建图片服务器

    图片上传请求由Node处理,图片访问请求由Nginx处理. 1.Nginx配置 #user nobody; worker_processes 1; #error_log logs/error.log; ...

  6. Angular4+NodeJs+MySQL 入门-03 后台接口定义

    这篇里是如何定义接口,我们一般访问接口如:post请求调用http://127.0.0.1:11000/webapi/userinfo/user 这个接口,成功返回用户信息,如果失败要返回失败原因等. ...

  7. 一个前端博主的nginx+php+mysql的环境搭建

    这几天天某的公司给了在下一个需求,让我修改一个后端大佬用PHP写的一个官网,虽然说修改的内容还是很简单,但是毕竟之前还是没接触过PHP,于是开始了漫长的爬坑之旅,话不多说,这次就给大家介绍一下我配置安 ...

  8. CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)

    以下全部转载于  http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份, ...

  9. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

随机推荐

  1. 爬虫开发6.selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取阅读量: 1203 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/ ...

  2. kvm虚拟化之kvm虚拟机克隆

    kvm虚拟机的克隆分为两种情况,本文也就通过以下两种情况进行克隆,克隆虚拟机为OEL5.8X64. (1) KVM主机本机虚拟机直接克隆. (2) 通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异 ...

  3. 将yum源更换为阿里的源(脚本)

    #!/bin/bash ######################################### #Function: update source #Usage: bash update_s ...

  4. [CF700E][JZOJ5558]Cool Slogan (后缀自动机+线段树)

    题意翻译 给出一个长度为$n$的字符串$s[1]$,由小写字母组成.定义一个字符串序列$s[1....k]$,满足性质:$s[i]$在$s[i-1]$ $(i>=2)$中出现至少两次(位置可重叠 ...

  5. java内存模型(jMM)(二)

    volatile关键字 volatile是一个类型修饰符(type specifier),就像大家更熟悉的const一样,它是被设计用来修饰被不同线程访问和修改的变量.volatile的作用是作为指令 ...

  6. Lecture notes of Mathematical analysis

    Lecture notes of Mathematical analysis Preliminary theory Teaching purpose: Mathematical analysis is ...

  7. leetcode-137-Single Number II-第一种解法

    题目描述: Given an array of integers, every element appears three times except for one, which appears ex ...

  8. [短期持续更新]Codeforces 构造题一览

    说实话我觉得做这种题很没意思(不够硬核), 可是人有短板终究是要补的...起码这种类型补起来相对简单 所以还是把先前准备好的专题放下吧,做点实现上比较休闲的题 ps.为了精简篇幅,代码全部丢到ubun ...

  9. Sqlite shell 的使用

    学习python中,涉及SQLite3数据库的操作,其中一种是使用sqlite shell,在园子里找到下面这篇文章,跟着试了下,挺好. 这里要注意,语句是C语言规范的吧,语句末尾需要";& ...

  10. MongoDB wiredTiger存储引擎下的存储方式LSM和B-Tree比较

    前段时间做拦截件监控的时候把拦截件生命期存入mongodb,因生命期有各种变化,因此对此表的更新写操作非常多,老大给我看了一篇文章,才知道mongodb已经支持lsm存储方式了. 原文如连接:http ...