注: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)

ssh root@你的IP

终端提示要输入登录密码时,点击如图叹号将密码输入

输入密码回车,登录成功

远程登录成功后,首先输入以下命令更新apt-get

apt-get update

以下命令可以查看Linux系统是32位还是64位

getconf LONG_BIT

下载Nodejs,64位系统下载64位包,这里我们用wget下载

以下是wget安装命令,因为这个debian系统自带wget所以无需安装

apt-get install wget

打开http://nodejs.cn/download

右键选择复制链接地址

在终端输入以下命令下载nodejs

wget https://npm.taobao.org/mirrors/node/v10.7.0/node-v10.7.0-linux-x64.tar.xz

下载若发现以下问题

用以下命令安装便可

wget --no-check-certificate https://npm.taobao.org/mirrors/node/v8.11.2/node-v8.11.2-linux-x64.tar.xz

wget --no-check-certificate https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz

下载成功后终端输入ls查看该文件

输入以下命令解压nodejs压缩包,命令名字要与上图红线标识包名一致

tar xvJf node-v8.11.2-linux-x64.tar.xz

以下命令将node-v8.11.2-linux-x64文件夹改名为node-v8.11.2

mv node-v8.11.2-linux-x64 node-v8.11.2

设置软连接

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

输入以下命令

node -v
npm -v

出现以下结果,表明Nodejs环境安装成功

将你的代码上传到服务器,比如我的代码(打开https://github.com/SemperChen/bookmark/archive/master.zip下载)

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

npm install -g pm2

安装bookmark项目依赖库,cd是回到当前用户目录,也就是root

cd
cd bookmark
npm install

pwd可查询当前路径

pwd

以下是ecosystem.config.js文件代码

module.exports = {apps : [{//generalname      : 'bookmark',script    : 'server.js', //启动执行的初始脚本//advancedwatch     : ['appsback','routes','ecosystem.config.js','server.js'],//监听文件变化ignore_watch: ['node_modules','apps','static'],//忽略监听的文件夹max_memory_restart: '500M',//内存达到多少会自动restartenv: {COMMON_VARIABLE: 'true'},env_production : {NODE_ENV: 'production'},//log filelog_date_format: 'YYYY-MM-DD HH:mm:ss Z',//日志格式//controlmin_uptime: 3000,listen_timeout: 3000,kill_timeout: 5000,max_restarts: 5,}]
};

安装MySQL

apt-get install mysql-server mysql-client

MySQL差不多安装完成时,会提示输入新密码,需输入两次

以下命令登录MySQL

mysql -uroot -p

创建数据库test

CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

使用test数据库

use test

创建表users

create table users(id INT(5) PRIMARY KEY AUTO_INCREMENT,username VARCHAR(18),password VARCHAR(50),bookmark TEXT
);

建表成功

在bookmark目录下,启动pm2

pm2 start ecosystem.config.js --env production

开机启动

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端口

iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

server.js代码:

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:

{"name": "bookmark","version": "0.0.0","private": true,"scripts": {},"dependencies": {"express": "^4.16.2","mysql": "^2.15.0"}
}

debian7搭建生产环境的linux+nodejs+express+mysql的web服务器相关推荐

  1. 复盘《新冠疫苗在线预约系统》设计过程Nodejs+express+Mysql+前端

    新冠疫苗预约 使用的技术:nodejs +express +Mysql +html+bootstrap 运行环境:vscode 1. 项目的搭建 检验node环境 确认是否安装node express ...

  2. NodeJS+Express+mySQL服务端开发详解

    NodeJS+Express+mySQL服务端开发详解 随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问 ...

  3. 测试环境搭建:CentOS7环境装JDK+Nginx+Redis+MySql

    搭建测试环境,Linux下主流环境,搭建花了2天时间,遇到了很多问题,发出来和大家共享下,用来避坑 Virtualbox+CentOS7安装 选择Virtualbox是因为开源,下载的版本如下,这里难 ...

  4. nodejs+express+mysql(后台实例项目练习4—实现机构新增功能)

    nodejs+express+mysql(后台实例项目练习-搭建项目) nodejs+express+mysql(后台实例项目练习2-数据库链接 网页跳转 iframe框架路径问题 模板引擎 ) no ...

  5. 小程序生产环境必须要购买腾讯云作为服务器吗?

    原文链接:小程序生产环境必须要购买腾讯云作为服务器吗? 小程序生产环境必须要购买腾讯云作为服务器吗? 答案是:否! 相信很多开发人员都是被小程序管理中心这个链接引导到腾讯云去的,但是对各种云稍微有点了 ...

  6. nodeJS+express+mysql模块封装之服务器渲染小demo

    nodeJS+express+mysql模块封装之服务器渲染小demo 创建一个小项目 npm init 下载相关中间件(根据package.js来下载) package.js 目录结构 index. ...

  7. linux线程池实现多线程并发,基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF...

    基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF 第 卷 第 期 电子设计工程 年 月 基于 的多线程池并发 服务器设计 陈 涛 任海兰 武汉邮电科学研究院 湖北 武汉 摘要 时至今 ...

  8. nodejs php web,nodejs实现的简单web服务器功能示例

    本文实例讲述了nodejs实现的简单web服务器功能.分享给大家供大家参考,具体如下: 前端js代码: $.ajax({ url:'http://192.168.0.114:3000',//服务器地址 ...

  9. lamp php5.5,CentOS 5.5快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP)

    CentOS 5.5快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP) By sole | Friday, May 13, 2011 在网上看了很多,修改多次,也试验多次,均没有问 ...

  10. 在Node.js中使用express开启一个web服务器并定义简单中间件函数的使用

    //1.导入express const express = require('express') //2.创建web服务器 const app = express() //利用use()函数定义全局中 ...

最新文章

  1. pcb入门之新建工程
  2. 在同一页面显示多个JavaScript统计图表
  3. java复制文件夹中的所有文件和文件夹到另一个文件夹中
  4. 美国城市_泡泡图如何揭示美国最适合居住的城市
  5. r语言导入ggplot2_【ggplot2】R语言:ggplot2包
  6. 开发MT4指标和EA(自动交易系统)
  7. html 【一个简单的用户登录页面代码】
  8. 中标麒麟Linux系统串口,中标麒麟操作系统串口调试方法研究-嵌入式-电子工程世界网...
  9. python创建空字典什么意思_Python3基础 dict 创建字典 空字典
  10. linux 7分区 fdisk,CentOS7创建逻辑卷,fdisk分区方式。
  11. 移动新魔百盒M411A_905L3_5621_语音免拆_卡刷固件包
  12. 抵制基因编辑技术,人类到底在恐惧什么?
  13. 网页文字变成书法字体的解决方案 Heiti SC显示异常 显示书法行书 如何删除Heiti SC 如何删除胭脂连体.TTF,胭脂连体.TTF流氓字体
  14. 判断文件是否存在,判断是否为文件夹
  15. 卸载onenote重新安装 很抱歉,遇到一些临时服务器问题
  16. 没有伞的孩子必须努力奔跑!
  17. 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。
  18. windows-problem :电脑上网的无线图标带有黄色星号,但不影响正常上网!
  19. 埃森哲启动全球品牌焕新计划;周迅担任完美日记品牌首位全球代言人 | 美通企业日报...
  20. android解析doc,docx,xls,xlsx文件

热门文章

  1. 每一天都想过得像周末?你需要一台更贴心的平板电脑
  2. 学习博客:IO流之节点流、处理流
  3. H5 新增内容大全(包括Web Workers、SSE、WebSocket的详细使用代码)
  4. 我们距离下一个超高清时代还有多久?
  5. 没撸过这些安卓彩蛋,你竟敢说自己是搞机人
  6. c语言中未定义的作用,C语言中未定义行为的iiii
  7. 混合 2PC:ABY 架构
  8. 服务器重装系统了资料怎么恢复吗,重装系统后可以恢复文件吗_网站服务器运行维护...
  9. 【C++】函数重载与函数模板
  10. 数据包接收系列 — 下半部实现(软中断)