debian7搭建生产环境的linux+nodejs+express+mysql的web服务器
注:Windows使用ssh可以下载Putty,请自行百度搜索
打开https://billing.virmach.com/register.php,注册账号
登录账号来到主界面,点击Serveces、View Available Addons,网址:https://billing.virmach.com/clientarea.php
选择自己想要购买的主机套餐
这里我用debian7
加入购物车
付款成功后,点击My Services
这时你会看到购买的主机状态是Active,否则你要找客服(找客服请点击右下角Live Support)
点击进入主机管理页面,找到IP
在终端输入以下命令远程登录服务器(Windows用putty)
[code]ssh root@你的IP
终端提示要输入登录密码时,点击如图叹号将密码输入
输入密码回车,登录成功
远程登录成功后,首先输入以下命令更新apt-get
[code]apt-get update
以下命令可以查看Linux系统是32位还是64位
[code]getconf LONG_BIT
下载Nodejs,64位系统下载64位包,这里我们用wget下载
以下是wget安装命令,因为这个debian系统自带wget所以无需安装
[code]apt-get install wget
右键选择复制链接地址
在终端输入以下命令下载nodejs
[code]wget https://npm.taobao.org/mirrors/node/v10.7.0/node-v10.7.0-linux-x64.tar.xz
下载若发现以下问题
用以下命令安装便可
[code]wget --no-check-certificate https://npm.taobao.org/mirrors/node/v8.11.2/node-v8.11.2-linux-x64.tar.xz
或
[code]wget --no-check-certificate https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz
下载成功后终端输入ls查看该文件
输入以下命令解压nodejs压缩包,命令名字要与上图红线标识包名一致
[code]tar xvJf node-v8.11.2-linux-x64.tar.xz
以下命令将node-v8.11.2-linux-x64文件夹改名为node-v8.11.2
[code]mv node-v8.11.2-linux-x64 node-v8.11.2
设置软连接
[code]ln -s /root/node-v8.11.2/bin/node /usr/local/bin/node ln -s /root/node-v8.11.2/bin/npm /usr/local/bin/npm
输入以下命令
[code]node -v npm -v
出现以下结果,表明Nodejs环境安装成功
将你的代码上传到服务器,比如我的代码(打开https://github.com/SemperChen/bookmark/archive/master.zip下载)
[code]scp -r /Users/Semper/Documents/projects/bookmark root@107.173.35.226:root
windows可以使用WinSCP上传文件,下载地址:https://excellmedia.dl.sourceforge.net/project/winscp/WinSCP/5.13.3/WinSCP-5.13.3-Setup.exe
上传成功后在终端用ls查看
安装pm2
[code]npm install -g pm2
安装bookmark项目依赖库,cd是回到当前用户目录,也就是root
[code]cd cd bookmark npm install
pwd可查询当前路径
[code]pwd
以下是ecosystem.config.js文件代码
[code]module.exports = { apps : [ { //general name : 'bookmark', script : 'server.js', //启动执行的初始脚本 //advanced watch : ['appsback','routes','ecosystem.config.js','server.js'],//监听文件变化 ignore_watch: ['node_modules','apps','static'],//忽略监听的文件夹 max_memory_restart: '500M',//内存达到多少会自动restart env: { COMMON_VARIABLE: 'true' }, env_production : { NODE_ENV: 'production' }, //log file log_date_format: 'YYYY-MM-DD HH:mm:ss Z',//日志格式 //control min_uptime: 3000, listen_timeout: 3000, kill_timeout: 5000, max_restarts: 5, } ] };
安装MySQL
[code]apt-get install mysql-server mysql-client
MySQL差不多安装完成时,会提示输入新密码,需输入两次
以下命令登录MySQL
[code]mysql -uroot -p
创建数据库test
[code]CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
使用test数据库
[code]use test
创建表users
[code]create table users( id INT(5) PRIMARY KEY AUTO_INCREMENT, username VARCHAR(18), password VARCHAR(50), bookmark TEXT );
建表成功
在bookmark目录下,启动pm2
[code]pm2 start ecosystem.config.js --env production
开机启动
[code]pm2 startup
启动成功后:
注册账号测试http://107.173.35.226:8000/register?username=张三&password=123456&bookmark=[1,2,3]
登录账号测试http://107.173.35.226:8000/login?username=张三&password=123456
如果无法访问尝试开放8000端口
[code]iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
server.js代码:
[code]let express = require('express'); let url = require('url'); let app = express(); let mysql = require('mysql'); let connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test', }); connection.connect(); app.get('/login', function (req, res) { // res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'}); // userDao.updateUser(connection,'菜鸟工具21','111111book2123123'); let params = url.parse(req.url, true).query; login(params,res) }) function login(params,res) { let sql = 'SELECT * FROM users WHERE username="'+params.username+'"'; //查 connection.query(sql,function (err, result) { if(err){ // console.log('[SELECT ERROR] - ',err.message); // return; } // console.log('result',result,'err',err,); if(result.length===1&&result[0].username===params.username&&result[0].password===params.password){ res.send({isLogin:true,msc:'登录成功!',user:result[0]}); }else { res.send({isLogin:false,msc:'登录失败!用户名或密码错误'}); } }); } app.get('/register', function (req, res) { let params = url.parse(req.url, true).query; register(params,res) }) function register(params,res) { let sql = 'SELECT * FROM users WHERE username="'+params.username+'"'; //查 connection.query(sql,function (err, result) { if(err){ // console.log('[SELECT ERROR] - ',err.message); // return; } // console.log('result',result,'err',err,); if(result.length===0){ let addSql = 'INSERT INTO users(username,password,bookmark) VALUES(?,?,?)'; let addSqlParams = [params.username, params.password, params.bookmark]; //增 connection.query(addSql,addSqlParams,function (err, result) { if(err){ console.log('[INSERT ERROR] - ',err.message); return; } login(params,res) }); }else { res.send({isRegisterSuccess:false,msc:'注册失败,用户名已存在!'}); } }); } function saveBookmark(params,res) { let sql = 'SELECT * FROM users WHERE username="'+params.username+'"'; //查 connection.query(sql,function (err, result) { if(err){ // console.log('[SELECT ERROR] - ',err.message); // return; } // console.log('result',result[0],'err',err,); if(result.length===1&&result[0].username===params.username&&result[0].password===params.password){ let modSql = 'UPDATE users SET bookmark = ? WHERE username = ?'; let modSqlParams = [params.bookmark,params.username]; //改 connection.query(modSql,modSqlParams,function (err, result) { if(err){ // console.log('[UPDATE ERROR] - ',err.message); // return; } res.send({isSavedBookmark:true,isLogin:true,msc:'已同步到云书架!',user:params}); }); }else { res.send({isSavedBookmark:true,msc:'保存失败!'}); } }); } app.get('/save', function (req, res) { let params = url.parse(req.url, true).query; saveBookmark(params,res) }) // connection.end(); let server = app.listen(8000, function () { let host = server.address().address; let port = server.address().port; // console.log("应用实例,访问地址为 http://%s:%s", host, port) })
package.json:
[code]{ "name": "bookmark", "version": "0.0.0", "private": true, "scripts": {}, "dependencies": { "express": "^4.16.2", "mysql": "^2.15.0" } }
阅读更多
- 建立一个node.js服务器(使用express搭建第一个Web环境)
- 建立node.js服务器(使用express搭建Web环境)
- (原创)node.js入门之一:express简单服务器搭建-Mac环境开发
- Ubuntu搭建web服务器系列之Tomcat(JDK+Tomcat+MySQL+Nginx+Redis+NodeJS)
- Linux下搭建nodejs + npm + express环境
- Ubuntu的web服务器搭建系列之Nginx(JDK+Tomcat+MySQL+Nginx+Redis+NodeJS)
- WEB服务器linux+apache+mysql+php LAMP源码环境搭建
- Ubuntu的web服务器搭建系列之MySQL(JDK+Tomcat+MySQL+Nginx+Redis+NodeJS)
- Ubuntu的web服务器搭建系列之MySQL(JDK+Tomcat+MySQL+Nginx+Redis+NodeJS)
- Ubuntu的web服务器搭建系列之Redis(JDK+Tomcat+MySQL+Nginx+Redis+NodeJS)
- Node.js入门,如何搭建服务器,及Express环境搭建
- LAMP源码环境搭建WEB服务器Linux+Apache+MySQL+PHP
- Ubuntu搭建web服务器系列之JDK(JDK+Tomcat+MySQL+Nginx+Redis+NodeJS)
- 基于Linux环境Tomcat-MySQL的服务器搭建
- 基于Linux环境Tomcat-MySQL的服务器搭建
- 基于Linux环境Tomcat-MySQL的服务器搭建
- 基于Linux环境Tomcat-MySQL的服务器搭建
- 基于Linux环境Tomcat-MySQL的服务器搭建
- 基于Linux环境Tomcat-MySQL的服务器搭建
- 基于Linux环境Tomcat-MySQL的服务器搭建