Linux——centos7搭建node + Nginx + vue + mysql 的服务安装详细步骤

6 篇文章 0 订阅
3 篇文章 0 订阅

一、安装所需的软件
二、进行具体配置
三、使用

以下配置及安装为已运行实测的笔记整理,严格按照该步骤进行配置,大概率上不会有问题。不懂linux的小白也可配置使用。当然,最好还是了解一些linux基本的命令和文件的作用,可能会更好一些。欢迎评论区交流!!!

配置centos镜像源整理

1、先将原文件备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

2、下载阿里源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、建立cache

yum makecache

4、更新源包

yum -y update

5、更新epel源

因为标题一中换好源后,依旧没有特定的软件。
yum install epel-release

Node

Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/,
你可以根据不同平台系统选择你需要的 Node.js 安装包,这里选择的是Linux Binaries (x64)。

1、下载

# 进入到安装目录
cd /usr/local/src

# 下载指定版本的 node 文件
wget https://nodejs.org/dist/v18.15.0/node-v18.15.0-linux-x64.tar.xz    

2、解压

tar xf node-v18.15.0-linux-x64.tar.xz   

3、进入解压目录

cd node-v18.15.0-linux-x64   

// 解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以修改linux系统的环境变量(profile)来设置直接运行命令:

4、进入系统变量页面进行配置

系统变量配置文件路径:/etc/profile     编辑命令:vi /etc/profile
最初进入时为默认的只读模式,
进去之后按i开始编辑,编辑完后按Esc,再按Shift+zz组合键保存退出】:
tip:如遇到使已设定选项 'readonly' (请加 ! 强制执行)警告时      用 :wq! 保存退出、
在最后一一行加入node、npm命令所在的地址(根据你把node解压到的文件地址为准),这里我放到root目录
export PATH=$PATH:/usr/local/src/node-v18.15.0-linux-x64/bin

5、立即生效

source /etc/profile

6、检测是否安装成功

node -v   // 显示版本号,即为成功安装

欢迎关注公众号:前端学海

PM2

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单

https://pm2.keymetrics.io/docs/usage/quick-start/

1、下载

npm install pm2@latest -g

基于终端的仪表板

pm2 monit

常用操作

1、 pm2需要全局安装
npm install -g pm2
2、进入项目根目录
2.1 启动进程/应用 pm2 start bin/www 或 pm2 start app.js
2.2 重命名进程/应用 pm2 start app.js --name wb123
2.3 添加进程/应用 watch pm2 start bin/www --watch
2.4 结束进程/应用 pm2 stop www
2.5 结束所有进程/应用 pm2 stop all
2.6 删除进程/应用 pm2 delete www
2.7 删除所有进程/应用 pm2 delete all
2.8 列出所有进程/应用 pm2 list
2.9 查看某个进程/应用具体情况 pm2 describe www
2.10 查看进程/应用的资源消耗情况 pm2 monit
2.11 查看pm2的日志 pm2 logs
2.12 若要查看某个进程/应用的日志,使用 pm2 logs www
2.13 重新启动进程/应用 pm2 restart www
2.14 重新启动所有进程/应用 pm2 restart all

Nginx

NGINX是一个高效的HTTP和反向代理的服务器:https://nginx.org/en/
Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包。
原因是nginx位于第三方的yum源里面,而不在centos官方yum源里面很多软件包在yum里面没有的

解决的方法: 使用epel源,也就是安装epel-release软件包。EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS等系统。可以找到对应的系统版本,架构的软件包

解决办法,安装epel

yum install epel-release

1、查看可以安装的源

yum list nginx

2、更新

yum update

3、安装

yum install nginx -y

4、检测是否安装成功

nginx -v

5、配置

vim /etc/nginx/nginx.conf 修改server部分

新添加部分:由于默认端口被占用,需重新配置一个 server 服务,此处设置了不同的端口。

server {
    listen       80;
    server_name  121.196.177.219;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    root      /opt/tutou/dist;
    index     index.html;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

// 保存后执行以下命令
 /usr/sbin/nginx -t 验证conf文件是否配置正确
 /usr/sbin/nginx -s reload 重新加载NGINX配置生效

Git

yum安装git被安装在/usr/libexec/git-core目录下

yum -y install git
输入 git --version查看Git是否安装完成以及查看其版本号

yum安装缺点: 版本你不好控制。如果想要使用最新版的git,那还是得自己下载源码安装。git中没有更新命令

源码安装 (推荐)

1、进入git在GitHub上发布版本页面

https://github.com/git/git/releases,这里我们选择最新版的tar.gz包,复制下载地址
wget https://github.91chifun.workers.dev//https://github.com/git/git/archive/v2.28.0.tar.gz

2、解压缩

tar -zxvf git-2.22.0.tar.gz

3、进入到解压后的文件夹

cd git-2.22.0

4、拿到解压后的源码以后我们需要编译源码了,不过在此之前需要安装编译所需要的依赖。

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

耐心等待安装完成,中途出现提示的时候输入y并按回车。

5、提示,安装编译源码所需依赖的时候,yum自动帮你安装了git,这时候你需要先卸载这个旧版的git。

yum -y remove git

6、编译git源码

make prefix=/usr/local/git all

7、安装git至/usr/local/git路径

make prefix=/usr/local/git install

8、配置环境变量

vi /etc/profile 
 在底部加上
export PATH=$PATH:/usr/local/git/bin
( 输入 :wq! 保存修改)

9、刷新环境变量

source /etc/profile

10、查看Git是否安装完成

git --version

MariaDB

安装mariadb-server,默认依赖安装mariadb,一个是服务端、一个是客户端。

1、下载

yum install mariadb-server

2、配置MariaDB
安装完成后首先要把MariaDB服务开启,并设置为开机启动

[root@mini ~]# systemctl start mariadb  # 开启服务
[root@mini ~]# systemctl enable mariadb  # 设置为开机自启动服务

首次安装需要进行数据库的配置,命令都和mysql的一样

[root@mini ~]# mysql_secure_installation

配置时出现的各个选项

Enter current password for root (enter for none):  # 输入数据库超级管理员root的密码(注意不是系统root的密码),第一次进入还没有设置密码则直接回车

Set root password? [Y/n]  # 设置密码,y

New password:  # 新密码
Re-enter new password:  # 再次输入密码

Remove anonymous users? [Y/n]  # 移除匿名用户, y

Disallow root login remotely? [Y/n]  # 拒绝root远程登录,n,不管y/n,都会拒绝root远程登录

Remove test database and access to it? [Y/n]  # 删除test数据库,y:删除。n:不删除,数据库中会有一个test数据库,一般不需要

Reload privilege tables now? [Y/n]  # 重新加载权限表,y。或者重启服务也许


测试是否能够登录成功,出现  MariaDB [(none)]> 就表示已经能够正常登录使用MariaDB数据库了
[root@mini ~]# mysql -u root -p
Enter password: // 在这里输入刚刚设置的密码

3、设置MariaDB字符集为utf-8(可选)
vi /etc/my.cnf 编辑改文件

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

#该值指在服务器中创建数据库的默认设置--新增该项
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

#该项值使用客户端连接改数据库时的客户端默认设置--新增该项
[client] 
default-character-set=utf8

[mysql]
default-character-set=utf8

4、重启服务

[root@mini ~]# systemctl restart mariadb

5、登录进入mariadb查看字符集,如value一行大多为utf-8 则设置成功

show variables like "%character%";

远程链接mariadb数据库

mariadb默认是拒绝 root 远程登录的。这里用的是 navicat 软件连接数据库

1、查看开启端口3306(数据库默认端口)

[root@mini ~]# firewall-cmd --query-port=3306/tcp  # 查看3306端口是否开启
no
[root@mini ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent  # 开启3306端口
success
[root@mini ~]# firewall-cmd --reload  # 重启防火墙
success
[root@mini ~]# firewall-cmd --query-port=3306/tcp  # 查看3306端口是否开启
yes

2、先查看mysql数据库中的user表

[root@mini ~]# mysql -u root -p  # 先通过本地链接进入数据库

MariaDB [(none)]> use mysql;

MariaDB [mysql]> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost      | root |
+-----------+------+
3 rows in set (0.00 sec)

3、将与主机名相等的字段改为 “%” ,我的主机名为localhost(默认的主机名),

MariaDB [mysql]> update user set host='%' where host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| %         | root |
| 127.0.0.1 | root |
| localhost | root |
+-----------+------+
3 rows in set (0.00 sec)

4、刷新权限表,或重启mariadb服务,一下二选一即可

1、MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

注意:刷新权限表是在数据库中,重启服务是在外部命令行中

2[root@mini ~]# systemctl restart mariadb // 刷新权限表

6、重新远程链接mariadb,正确输入账号密码即可

Firewalld 防火墙

CentOS 7及更高版本,中使用firewalld作为默认防火墙管理工具https://firewalld.org/ ,可在官网查看当前系统是否支持默认安装
提供了动态托管的防火墙,并支持定义网络连接或接口的信任级别的网络/防火墙区域。它支持IPv4,IPv6防火墙设置,以太网桥和IP集。运行时和永久配置选项分开。它还为服务或应用程序提供了一个接口,以直接添加防火墙规则。

基本使用:

启动: systemctl start firewalld
查看状态: systemctl status firewalld / firewall-cmd state 这个命令也可以,只是信息会简单点
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

常用命令:

添加
firewall-cmd --zone=public --add-port=80/tcp --permanent   (--permanent永久生效,没有此参数重启后失效)
重新载入,添加端口后重新载入才能起作用
firewall-cmd --reload
查看端口
firewall-cmd --zone=public --query-port=80/tcp
删除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
查看开启了哪些服务
firewall-cmd --list-services
查看开启了哪些端口
firewall-cmd --list-ports
查看还有哪些服务可以打开
firewall-cmd --get-services
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
更新防火墙规则:
firewall-cmd --reload

这里我开启了80和443端口使用,tip:每次设置好打开后关闭的端口后,都需要重新载入才可生效

自动化构建 (这里指的是前端项目及node项目)

监听gitee 或github等代码仓库的 push请求,自动构建项目

// 这里我没有用webhook的npm包,是自己接收到指定接口发过来的数据,过滤push请求,然后使用shell脚本处理
// 这会有安全隐患,因为只是自己使用,所以这里只管实现
// 这里以拦截vue项目的push为主,进行项目的更新和重新构建,
// 旨在最简单的实现自动构建项目的目的,node项目也可按此方式,
// 进行项目更新和重启运行
var http = require('http')
var shell = require('shelljs')

http.createServer(function (req, res) {
    console.log(req.headers['x-git-oschina-event'],req.headers['x-git-oschina-event'] === 'Push Hook', '接收')
   if(req.headers['x-git-oschina-event'] === 'Push Hook'){
    	console.log('接受到push请求')
	rebuild()
   }
}).listen(443,() =>{
    console.log('WebHooks Listern at 443');
})

 // shell脚本处理,重新构建项目
function rebuild () {

	shell.cd('/opt/tutou')
	console.log('开始执行git!')
	//即同步运行外部工具
	if (shell.exec('git pull').code !== 0){ // 拉取最新代码
   	  shell.echo('Error: Git pull failed');
 	  shell.exit(1);
 	}

	if (shell.exec('npm install').code !== 0){ // 下载依赖
  	  shell.echo('Error: installt failed');
  	  shell.exit(1);
	}
	
	console.log('开始构建!')

	if (shell.exec('npm run build').code !== 0){ // 构建项目
  	  shell.echo('Error: installt failed');
  	  shell.exit(1);
	}

	console.log('构建成功!')
}

nodemailer 邮箱通知

自动化构建之后,我使用nodejs处理nodemailer的npm包,在构建完成或失败之后,发送详细的代码执行情况的邮件到我的邮箱,通知我
理论上支持所有主流邮箱,但我只测试了 QQ 和 163,都成功了。若其他邮箱出问题请留言交流。

1、安装:

npm install nodemailer -D

2、代码实现

 //引入模块 nodemailer
 const nodemailer = require('nodemailer')

 const config = {
    // 163邮箱 为smtp.163.com
    // 其他邮箱也可,详细可问度娘这里只管实现
    host: 'smtp.163.com',
    //端口必要
    port: 465, 
    auth: {
        // 发件人邮箱账号
        user: '*******@163.com', 
        //发件人邮箱的授权码 需要开启邮箱的 POP3/SMTP 服务。
        // 改服务的开启可问度娘,这里不展开了,只管实现
        pass: '*****'  // 我这里隐藏的自己的授权码
    },
    tls: {
      rejectUnauthorized: false
  }
 }

 const transporter = nodemailer.createTransport(config)

  const mail = {
    // 发件人 邮箱  '昵称<发件人邮箱>' 这里要记住,是 昵称 后面跟 <邮箱> 
    from: '超<*****@163.com>',
    // 主题
    subject: '测试',
    // 收件人 的邮箱 可以是其他邮箱 不一定是qq邮箱
    to: '****@qq.com',
    // 内容
    text: `123` ,
    //这里可以添加html标签
    html: '<a href="https://www.baidu.com/">百度</a>'
 }

 transporter.sendMail(mail, function(error, info){
    if(error) { // 发送失败,打印错误
        return console.log(error);
    }
    transporter.close()
    console.log('mail sent:', info.response) // 发送成功
 })

常见错误:
535 错误:可能是账号密码错误
553 错误:发件人和认证的邮箱地址不一致,auth.user 需要与 from 中的邮箱一致

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值