linux服务器部署node+mysql+redis+nginx

1,029 阅读4分钟

在空空的centOs服务器后,第一步就是先安装我们需要的东西。

zlib

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlibhttp 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

wget

yum -y install wget

node

安装

wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.gz

解压

tar -zvxf node-v9.9.0-linux-x64.tar.gz

移动到安装目录并重命名 node

这里我把文件夹移动到/usr/local/node,因为这个目录,环境变量可检查到

 mv node-v9.9.0-linux-x64 /usr/local/node

配置环境变量

打开etc目录下的 profile 文件

vim /etc/profile

在文件的最后添加如下内容

export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH

使刚配置好的环境变量生效

source /etc/profile

配置完毕后,使用node -v,npm -v来查看是否配置成功。 可能你会发现node版本都更新到10几了,为什么还用9的!!!请稍安勿躁。 这里我们安装下 n,来管理我们node版本。

n

npm i n -g

现在,我们来升级虾版本啦。。。

n stable

稳定版 stable ,最新版 latest ,指定版本号v8.11.1

pm2

我们安装node,那当然是使用node项目,那么管理node项目莫过于pm2

npm i pm2 -g

是不是很简单啊?

用法

pm2 start bin/www 或 pm2 start app.js // 启动进程/应用
pm2 start app.js --name wb123 // 重命名进程/应用
pm2 start bin/www --watch // 添加进程/应用 watch
pm2 stop www // 结束进程/应用
pm2 stop all // 结束所有进程/应用
pm2 delete www // 删除进程/应用 
pm2 delete all // 删除所有进程/应用 
pm2 list // 列出所有进程/应用 
pm2 describe www // 查看某个进程/应用具体情况 
pm2 monit // 查看进程/应用的资源消耗情况
pm2 logs // 查看pm2的日志
pm2 logs www // 若要查看某个进程/应用的日志,使用
pm2 restart www // 重新启动进程/应用
pm2 restart all 重新启动所有进程/应用

安装后,那就是启动egg项目了,在启动之前,需要对egg项目根目录下添加个文件。

// server.js
const egg = require('egg');

const workers = Number(process.argv[2] || require('os').cpus().length);
egg.startCluster({
  workers,
  baseDir: __dirname,
});

进入egg项目根目录,使用pm2启动。

pm2 start server.js --name test

错误

(1)ProcessContainerFork.js

启动egg项目,难免有出现一些错误,这里我记录下遇到的问题。

Error: 
Cannot find module '/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js'

ProcessContainerFork.js一些错误,查询github官网的issues得到解决方案。

原因是您的PM2 env被修改。

rm -rf ~/.pm2

然后用pm2重新启动项目。

如果这种方法依旧有错的话,请检查数据库密码,插件配置是否错误。

有时候这些错,egg并不会明确指出。

也可尝试在packaage.json增加--ignore-stderr,具体如下:

// package.json
"scripts": {
    "start": "egg-scripts start --daemon --title=egg-server-node-school-wkdl --ignore-stderr",
    "stop": "egg-scripts stop --title=egg-server-node-school-wkdl",
  },

nginx

PCRE(Perl Compatible Regular Expressions)

PCRE 是一个Perl库,包括 perl 兼容的正则表达式库。nginxhttp 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用pcre 开发的一个二次开发库,nginx也需要此库。

yum install -y pcre pcre-devel

如果安装的时候有问题的话可能需要安装GCCOpenSSL以下提供命令

yum install gcc-c++
yum install -y openssl openssl-devel

安装nginx

wget -c https://nginx.org/download/nginx-1.14.0.tar.gz

可将解压后的nginx-1.14.0.tar.gz移动到/usr/local/下,并更名为nginx

mv nginx-1.14.0.tar.gz /usr/local/nginx

使用

使用nginx的默认配置

./configure  --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf  --with-http_stub_status_module --with-http_ssl_module

编译安装

make
make install

进入nginx/sbin目录,可以看到有一个可执行文件nginx,直接./nginx执行就OK了。

查看

安装好启动好后无法访问到页面

查看是否安装好

ps -ef|grep nginx

如果如上图有nginx的进程说明启动好了,如果无法访问nginx页面可以先查看一下你服务器的安全组策略是否有启用80端口。

如果启用之后还是无法访问需要查看nginx的配置文件nginx.conf

nginx/sbin中可以执行下面这个语句查询自己使用的nginx.conf在哪个位置,同时这也可以验证你的nginx.conf文件是否是正确的。正确的格式会提示test is successful

./nginx -t

编辑sbinnginx.config

把这个路径改为你的文件存放路径

停止

从容停止

ps -ef|grep nginx

杀死进程

kill -QUIT 3905

重启

进入nginx/sbin下,输入命令./nginx -s reload 即可

mysql

mysql

redis

egg(GitHub地址),戳我

node安装,戳我

nginx安装,戳我