centos7部署Node开发环境

记录 Git + Node + Nginx + Mysql + Redis + Jenkins + SSH 安装流程

git 安装

1
2
3
4
5
6
7
8
9
10
11
12
# root用户可省略sudo
sudo yum install -y gcc-c++
sudo yum install -y zlib-devel perl-ExtUtils-MakeMaker
# 去官网复制最新版本链接
cd /data # 软件包存放目录
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz
tar -zxvf git-2.9.0.tar.gz
cd git-2.9.0
./configure --prefix=/usr/local
make
sudo make install
git --version

Node(nvm)

安装nvm

1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

输出如下:

1
2
3
4
5
6
7
8
9
=> Downloading nvm as script to '/root/.nvm'

=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

指定 nvm 的镜像需要在环境配置中增加 NVM_NODEJS_ORG_MIRROR,在/root/.bashrc中增加以下内容

1
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

使环境变量生效,并验证环境变量是否生效

1
2
3
4
source /root/.bashrc
echo $NVM_DIR
# 输出版本号说明nvm安装Ok
nvm --version

安装nodejs

1
2
3
4
5
6
7
8
# 查看nodejs可用版本
nvm ls-remote
# 安装指定版本
nvm install v12.13.0
# 使用某个版本
nvm use v12.13.0
# 查看已经安装的所有版本
nvm ls

Nginx

安装编译工具及库文件

1
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

安装PCRE

1
2
3
4
5
6
7
8
9
10
11
12
# 下载最新版本的,注意不要用pcre2
cd /data
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz
tar -zxvf pcre-8.43.tar.gz
cd pcre-8.43
# 安装编译
./configure
make && make install
# 查看pcre版本
pcre-config --version
# 删除PCRE
rpm -e --nodeps pcre

安装Nignx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 下载包
cd /data
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
# 编译参数(后面的参数可不带,以默认参数安装)
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=/data/pcre-8.43
make && make install
# nginx命令
/usr/local/nginx/sbin/nginx -V
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -s reload
# 添加到环境变量
export PATH=$PATH:/usr/local/nginx/sbin
source /etc/profile
nginx -v
  1. –with-http_stub_status_module 可以用来启用Nginx的NginxStatus功能,以监控Nginx的当前状态。此模块的使用请自行谷歌,此模块不需要的用户可无需安装。

  2. –with-http_gzip_static_module nginx默认安装ngx_http_gzip_module,采用的是chunked方式的动态压缩,静态压缩需要使用http_gzip_static_module这个模块,进行pre-compress。Nginx的动态压缩是对每个请求先压缩再输出,这样浪费了很多cpu资源,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩。

  3. –with-pcre=/data/pcre-8.43 记得填上自己机器上 pcre的解压缩路径

  4. –with-http_ssl_module 启用 https

Mysql

CentOS7 一般yum安装包中有自带的mariadb,不过更多人更青睐mysql。

下载安装

1
2
3
4
5
6
7
cd /data
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 查看yum源中的mysql安装包
yum repolist all | grep mysql
# 安装完成后就会覆盖掉之前的mariadb
yum install -y mysql-community-server

数据库设置

注意:启动失败可能要装 mariadb-server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 启动MySQL
systemctl start mysqld
# 查看MySQL运行状态
systemctl status mysqld
# 进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码
grep "password" /var/log/mysqld.log
# 进入数据库
mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

# 注意:重点啊,如果你没有设置认证方式,默认的密码加密方式是:caching_sha2_password,而现在很多客户端工具还不支持这种加密认证方式,连接测试的时候就会报错:client does not support authentication protocol requested by server; consider upgrading MySQL client,这里的错误信息就是不支持身份认证方式,没关系,去/etc/my.cnf里面在[mysqld]下面加上这句话即可:
default_authentication_plugin=mysql_native_password

# 配置文件
bind address 0.0.0.0 (原:127.0.0.1)

# 添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 防火墙设置重载
firewall-cmd --reload

开启mysql的远程访问

这里允许root用户远程的时候,可能会出现如下的错误

1
2
3
4
# 开启mysql的远程访问(如要开启所有的,用%代替IP)
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;
# ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'Chjiyun123456' WITH GRANT OPTION' at line 1

非root用户,这里就要先去创建一个用户

1
2
3
4
5
6
7
8
9
10
11
12
use mysql;
CREATE USER 'user1'@'%' IDENTIFIED BY '123456';
grant all on *.* to 'user1'@'%';
# 注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
# GRANT all ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
\q # 退出 mysql

# 最后重启数据库,使配置生效
systemctl restart mysqld
# 设置开机启动
systemctl enable mysqld
systemctl daemon-reload

安装Mysql及初始化
centos7下使用yum源安装mysql5.7记录

Redis

官网可以查看最新的releases版本

下载安装

1
2
3
4
5
6
7
8
9
10
11
# 指定目录下下载安装包
wget http://download.redis.io/releases/redis-stable.tar.gz
# 解压
tar -zxvf redis-stable.tar.gz
# 安装gcc依赖
yum install gcc -y
# 编译安装
make MALLOC=libc
# 进入src目录继续安装
cd src
make install

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 放行 6379 端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 重载配置
firewall-cmd --reload
# redis-stable根目录修改配置文件
vim redis.conf
# 将daemonize no 改为 yes,开启守护进程
daemonize yes
# 设置redis远程连接,注释bind 127.0.0.1
# bind 127.0.0.1
# 搜索 requirepass 这一行,设置密码
requirepass "****"
# 在/etc目录下新建redis目录
mkdir -p /etc/redis
# 将/redis-stable/redis.conf 文件复制一份到/etc/redis目录下,并命名为6379.conf
cp redis.conf /etc/redis/6379.conf
# 将redis的启动脚本复制一份放到/etc/init.d目录下
cp redis_init_script /etc/init.d/redisd
# 设置redis开机自启动
chkconfig redisd on
# 修改redis启动脚本
vim /etc/init.d/redisd
# 修改如下脚本,添加密码
# $CLIEXEC -p $REDISPORT shutdown
$CLIEXEC -a "newpwd" -p $REDISPORT shutdown
# 启动以及关闭redis
service redisd start
service redisd stop

Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是开源CI&CD软件领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需要。

安装jenkins

1
2
3
4
yum install -y java
wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins

注意:

  1. Jenkins 的安装目录是:/var/lib/jenkins/

  2. Jenkins 的配置文件地址:/etc/sysconfig/jenkins

  3. 工作目录:JENKINS_HOME

  4. jenkins的用户:JENKINS_USER

  5. 端口:JENKINS_PORT,JENKINS_PORT是Jenkins的端口,默认端口是8080,为了和别的系统占用端口冲突,建议改变。

有时候Jenkins需要操作别的用户的文件或者执行脚本,那么就得有对应的权限,比如Jenkins用户执行docker命令进行镜像制作与上传,用如下的命令即可。

1
sudo usermod -a -G docker jenkins
1
2
3
4
systemctl enable jenkins # 开机启动
systemctl start jenkins # 启动jenkins
systemctl is-enabled jenkins # 查看服务是否开机启动
systemctl stop jenkins # 停止服务

github配置

去 github 项目的主页面,点击 settings -> Webhooks,设置如下:

19_11_16_01.png

系统设置

主要配置 Jenkins Location 和 Publish over SSH

Jenkins URL: http://IP:8090/

Jenkins SSH Key:
生成密钥对,位置一般在 /root/.ssh,私钥粘贴在 key 框框内,再配置 SSH Servers

19_11_16_02.png

点 Test Configuration 可测试 ssh key 是否连接成功

凭据

github ssh 配置,公钥放在 github,这里粘贴私钥

19_11_16_03.png

token配置

19_11_16_10.png

新建任务

如果项目已配置过项目,可以填写项目名到复制按钮上面的框框,可以复用原有项目的配置

19_11_16_04.png

构建配置

19_11_16_05.png
19_11_16_06.png
19_11_16_07.png
19_11_16_08.png
19_11_16_09.png

更新源码到 github,jenkins 能自动构建就代表配置成功!

环境变量

1
2
3
4
# 永久生效
/etc/profile
# 也是永久,单独设置再一个文件,易维护
/etc/profile.d

ssh密钥管理

SSH是一个专为远程登录会话和其他网络服务提供安全性的协议。默认状态下SSH链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,达到免密登录。

1
2
# “-t rsa” 指定生成算法。
ssh-keygen -t rsa

vim

修改缩进

1
2
3
4
5
6
7
# 显示行数
set number

set tabstop=4
set softtabstop=4
set shiftwidth=4
# set autoindent

Vim 复制粘帖格式错乱问题的解决办法