一、Node.js 环境搭建

1、centos通过命令行下载NVM(nodejs版本管理),用于安装最新的node文件

NVM详情: https://github.com/creationix/nvm

在Centos服务器上安装输入指令

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx


并保存到以下路径

nextjs 部署到nginx nginx部署nodejs项目_mysql_02


执行 source .bashrc 生效环境变量

然后可以使用 npm指令了

先nvm install node

nextjs 部署到nginx nginx部署nodejs项目_centos_03


2、安装完NVM后,再安装cnpm(用于快速下载依赖包)

打开cnpm淘宝镜像官网

nextjs 部署到nginx nginx部署nodejs项目_nginx_04


cnpm这个包会安装 .nvm文件夹下面。完毕!二、Nginx环境搭建

1、需要用到 yum,(CentOS自带)

通过yum先安装一些nginx的依赖 -y表示同意

nextjs 部署到nginx nginx部署nodejs项目_服务端_05


pcre* 提供许多库,nginx需要的依赖

nextjs 部署到nginx nginx部署nodejs项目_centos_06


上述2个依赖安装完成后就可以下载nginx

nextjs 部署到nginx nginx部署nodejs项目_centos_07


检测make和gcc是否存在,已存在

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_08


解压nginx压缩文件

nextjs 部署到nginx nginx部署nodejs项目_mysql_09


进入nginx-1.12.2文件夹

nextjs 部署到nginx nginx部署nodejs项目_服务端_10


./configure 检查配置能否生效。若报错。如下图

nextjs 部署到nginx nginx部署nodejs项目_服务端_11


安装pcre-devel解决问题

yum -y install pcre-devel

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_12


安装zlib-devel解决问题

yum install -y zlib-devel./configure一切顺利后提示

nextjs 部署到nginx nginx部署nodejs项目_mysql_13

先make -j4 对nginx的源码进行编译

再make install 进行安装

nextjs 部署到nginx nginx部署nodejs项目_服务端_14


通过nginx -t 直接读取它的配置文件制作软连接(即Window快捷方式),

cd /usr/bin可以查看用户指令

nextjs 部署到nginx nginx部署nodejs项目_nginx_15


实际路径 + 连接指令

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_16


在当前usr/bin(用户指令集)路径下创建了一个,/usr/local/nginx/sbin/nginx的可执行文件。的快捷方式

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_17


通过回到相对路径root (cd) 启动nginx

再查看进程

nextjs 部署到nginx nginx部署nodejs项目_nginx_18


通过nginx -s stop 停止进程

nextjs 部署到nginx nginx部署nodejs项目_服务端_19


nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_20


启动 nginx服务。发现客户端访问失败,经百度是安全组规则未配置http80

nextjs 部署到nginx nginx部署nodejs项目_centos_21

-------------------------------------------nginx配置部分

一、80端口基础配置

先对user 进行授权

nextjs 部署到nginx nginx部署nodejs项目_服务端_22


add_header Cache-Control “no-cache, must-revalidate”;

对http添加 不进行缓存 的配置。

add_header Access-Control-Allow-Origin *;

对nginx配置跨域请求

nextjs 部署到nginx nginx部署nodejs项目_mysql_23

然后尽量关闭autoindex

二、yum安装git

nextjs 部署到nginx nginx部署nodejs项目_mysql_24


此处对于我现在来说过于难(短期知识超负荷)

三、将ebook-app和node-ebook-app 文件夹分别放于CentOS系统里。

然后通过编译,分别启动前,后 端口 的代码。

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_25

A、前端部分进入ebook-app(CentoOS)

1、cnpm i 所有依赖。

2、运行 cnpm run build

3、mv指令移动dist目录

将打包后的文件上传到nginx的upload的book目录下。(前端已正式生产)

nextjs 部署到nginx nginx部署nodejs项目_centos_26

B、后端部分进入node-ebook-app(CentoOS)
1、cnpm i 所有依赖。
2、node app.js启动

注(客户端直接访问3000端口是不通的,需要配置阿里云安全组,但是其实没必要对外暴露3000端口,服务端自己可以请求自己就行,即3000端口只能在局域网中被访问到)

nextjs 部署到nginx nginx部署nodejs项目_centos_27


可以看到启动占用了终端,我们可以让启动在后台运行。

nextjs 部署到nginx nginx部署nodejs项目_nextjs 部署到nginx_28


看,不会中断3000服务的连接。

四、安装MySQL服务(服务端)

1、yum -y install mysql-server(服务端)
若显示 No package mysql-server。

CentOS7下解决yum install mysql-server 异常:No package mysql-server
available.问题 yum安装mysql-server没有可用包问题解决方法:

step 1: wget
http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

step 2: rpm -ivh mysql-community-release-el7-5.noarch.rpm

经过以上两个步骤后再次执行:yum install mysql-server 命令就可以成功安装了。

2、安装好后,service mysqld status (查看mysql状态)

3、service mysqld restart (重启服务)

----注(若重新安装mysql,要先彻底删除mysql文件才可以正常restart mysql)

nextjs 部署到nginx nginx部署nodejs项目_mysql_29

4、cat /var/log/mysqld.log |grep password(日志中查询,只打印密码)

5、mysql -u root -p 启动 mysql 并输入密码

—注 若复制密码错误

(((则百度重置mysql密码博客,(skip-grant-tables免密登录)后,

连接mysql,再flush privileges;再执行下面命令)))

nextjs 部署到nginx nginx部署nodejs项目_centos_30


(restart后可以直接进入 第五部分的3)6、 alter user ‘root’@‘localhost’ identified by ‘密码’;

nextjs 部署到nginx nginx部署nodejs项目_nginx_31


7、mysql连接成功

nextjs 部署到nginx nginx部署nodejs项目_服务端_32

五、本地数据库数据导入远程服务端 开放3306端口

1、创建新安全组3306

2、客户端打开navicat,新建连接到服务端(会报错,连通,但是host不被允许)

nextjs 部署到nginx nginx部署nodejs项目_centos_33


3、回到服务端 在mysql服务下,输入命令 use mysql;

nextjs 部署到nginx nginx部署nodejs项目_mysql_34


4、创建访问权限,服务端的root连接到哪个地址,就得把这个ip地址输入进来,该行命令%表示允许所以ip访问)

但是mysql8.0之后,必须加入 with mysql_native_password,如下

nextjs 部署到nginx nginx部署nodejs项目_mysql_35


即,使用mysql_native_password这个插件来进行认证,如果不加,那么后续nodejs进行mysql连接的时候就会报错注,要是之前误操作已经加入了一次’root’@‘%’,需要将此用户移出

nextjs 部署到nginx nginx部署nodejs项目_服务端_36

同步修改 root 登录密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'Shilu0706.'

注:5.0+版本mysql
直接修改user表即可:

登录MySQL mysql -u root -p密码
执行 use mysql;
执行update user set host =‘%’ where user = ‘root’;执行会报错,不影响结果
执行flush privileges;

5、赋予权限(开启数据库读写)

grant all privileges on *.* to ‘root’@‘%’;

nextjs 部署到nginx nginx部署nodejs项目_nginx_37


flush privileges;完毕后,再次尝试

nextjs 部署到nginx nginx部署nodejs项目_centos_38


nextjs 部署到nginx nginx部署nodejs项目_mysql_39


导入sql文件。

对connect方法进行改写(目前非服务端的账号和密码)

nextjs 部署到nginx nginx部署nodejs项目_centos_40

完整开放数据库权限命令:

create user 'root'@'%' identified with mysql_native_password by 'root';
grant all privileges on *.* to 'root'@'%';
flush privileges;

前端部分重构没有问题。
主要是后端部分。
1、mysql的版本问题,以及8.0需要 mysql_native_password 库支持
2、添加用户组,需要use mysql内,create user ‘root’@‘%’ …
3、误操作,或操作失误,使mysql库的user数据表已出错,需要drop该字段。比如drop user ‘root’@‘%’
4、开启skip-grant-tables免密登录后,
进入mysql,再输入 flush privileges,刷新权限表,
再对用户root的密码进行修改,然后vim /etc/my.cnf将skip-grant-tables注释掉
最后需要 restart服务。才算修改完成
5、 改密码 修改权限 都需要 flush privileges

MYSQL8.0 安装

mysql 8.0.20 winx64.zip压缩版安装配置方法图文教程