Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

记录下node项目部署上线的过程及坑(2017.09.16 ) #6

Open
aermin opened this issue Feb 13, 2018 · 0 comments
Open

记录下node项目部署上线的过程及坑(2017.09.16 ) #6

aermin opened this issue Feb 13, 2018 · 0 comments

Comments

@aermin
Copy link
Owner

aermin commented Feb 13, 2018

前言

这个月利用空余时间写的xmxz在修了n多bug之后,在填了不少坑之后终于把他部署到云服务器上线了。对我这个技术菜简直就是挖坑,填坑,挖坑,填坑。。。。。。现在趁还记得一些,记录一下,免得下次忘了

nodejs写爬虫,论坛系统

说到nodejs,肯定离不开异步,我在项目中用的是
promise+async/await这一套异步方案

async/await是写异步代码的新方式,以前的方法有回调函数和Promise。
async/await是基于Promise实现的,它不能用于普通的回调函数。
async/await与Promise一样,是非阻塞的。
async/await使得异步代码看起来像同步代码,这正是它的魔力所在。

了解回调函数是什么
了解异步与同步,阻塞与非阻塞
Async/Await替代Promise的6个理由
Async/Await详解

购买,部署云服务器

1.服务器购买
我买的是京东云的学生机,选的是centos7.2(国内用centos多一点)

2.服务器登陆
通过ssh方式登陆服务器
$ ssh [email protected]  //格式:ssh用户名@公网IP

3.部署nodejs / 部署nodejs
ps:部署node环境我使用NVM安装多版本

上传项目文件

我用的是FileZilla 这个ftp可视化客户端
直接去官网下载安装
然后输入主机名(你买的云服务器的公网ip) ,用户名(默认是root),密码(你设的云服务器密码)
还有端口22 。然后连接。
想上传啥直接拖拽就行了,记得先把项目里的node包删掉,不然文件数量
分分钟上万。。。。上传到猴年马月。

正确姿势->
删除node包,在云服务器中 npm i

部署mysql

如果想简单快速搞定mysql部署的可以用centos6.5
centos7以上的版本部署mysql有点麻烦
但是呢,对新鲜技术充满鸡血的我还是入坑centos7.2😂

1.确认你的系统环境

# cat /etc/redhat-release 

2.安装mysql

#yum install mysql
#yum install mysql-devel
#yum install mysql-server

如果你是centos7以上版本,你会发现安装mysql-server会失败

[root@yl-web yl]# yum install mysql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.sina.cn
 * extras: mirrors.sina.cn
 * updates: mirrors.sina.cn
No package mysql-server available.
Error: Nothing to do

原因是CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。

解决办法

# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

安装成功后重启mysql服务。

# service mysqld restart

初次安装mysql,root账户没有密码。

[root@yl-web yl]# mysql -u root 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)

mysql>

设置密码方案1

mysql> set password for 'root'@'localhost' =password('password');
如 set password for 'root'@'114.67.145.235' =password('123456');
Query OK, 0 rows affected (0.00 sec)

mysql> 

不需要重启数据库即可生效。

设置密码方案2(此方案将提高mysql安全性)

sudo mysql_secure_installation

这将提示您输入默认的根密码。一旦您输入,您将需要更改它。
接下去选择yes or no参考这个连接

登录mysql

# mysql -u root -p

输入密码

如果是这样的

mysql>

则说明没问题了

最后mariadb自动替换了,将不再生效。

# rpm -qa |grep mariadb

参考:
文章1
文章2

然后你要建立,修改数据库,可以查这些语法
链接

附带一个定心丸,如果mysql安装失败了要先彻底删除mysql

用这方法-> centos下彻底删除MYSQL 和重新安装MYSQL

一个不错的教程-> 腾讯云服务器部署 Node.js 应用

另外一个看起来还可以的教程

这里我还用了pm2这个进程管理器,pm2可以用来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。(刚好外加一些模块可以让我的爬虫程序每天定时爬取)

安装

npm install -g pm2

启动

pm2 start app.js

其他pm2指令教程

最后,放上我的粗糙版网站

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant