CentOS 7 安装与配置Git、Node、Python3、Docker、Jenkins

在今年六月份毕业前正好以学生价购买了腾讯云的基础配置的云主机,恰好可以拿来玩玩Linux命令。目前机子上运行了两个服务,一个是自己六月份空闲时间写的node前后台项目,豆瓣租房论坛的爬虫项目DoubanSpider。第二个就是GitHub上一个挺有名的免费代理ip爬虫服务Scylla(效果不好,目前已停止运行)。这些服务都需要对应的依赖环境,所以记录一下相关依赖的安装和配置命令。

概述

我的习惯:将软件源代码压缩包放在/usr/local/download目录下,软件源码放在 /usr/local/src 目录下,软件装在 /usr/local/software 目录下

安装Git

安装必要的依赖

1
yum install -y gcc-c++ perl-devel zlib-devel
  • gcc-c++
  • perl-devel
  • zlib-devel

安装 Git 需要的依赖

1
yum install -y curl-devel
  • curl-devel ( Git 使用中与 httphttps 相关操作需要)

使用 wget 下载源码 ,此示例为 2.17.0 版本

1
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.19.0.tar.gz -P /usr/local/download

解压下载好的压缩文件到源码目录 /usr/local/src

1
tar -zxvf /usr/local/download/git-2.19.0.tar.gz -C /usr/local/src

切换到源码目录

1
cd /usr/local/src/git-2.19.0

检测、编译、安装

1
2
./configure --prefix=/usr/local/software/git
make && make install

配置环境变量

1
vim /root/.bashrc

添加如下代码

export PATH=/usr/local/software/git/bin:$PATH

使环境变量立马生效

1
source /root/.bashrc

验证

1
git --version

安装Node

使用wget 获取源代码压缩包到/usr/local/download

1
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz -P /usr/local/download

解压压缩包到 /usr/local/src

1
tar -zxvf /usr/local/download/node-v8.12.0.tar.gz -C /usr/local/src

切换到源代码目录

1
cd /usr/local/src/node

编译安装到 usr/local/software

1
2
./configure --prefix=/usr/local/software/node
make && make install

配置环境变量

要想 node 能够在全局能够使用,需要添加软链接

1
2
ln -s /usr/local/software/node/bin/node /usr/local/bin/node  
ln -s /usr/local/software/node/bin/npm /usr/local/bin/npm

验证

1
node -v

安装并使用pm2管理Node项目

安装pm2

1
npm install pm2 -g

配置软链接

1
ln -s /usr/local/software/node/bin/pm2 /usr/local/bin/

其中第一个地址为pm2的安装地址,在本机中为usr/local/software/node/bin/pm2,安装的时候命令行也会提示安装地址

使用pm2管理Node项目

pm2 start app.js -i 4 --name myApp

部署项目的时候,先cd 进入到项目的app.js文件所在路径,然后执行上述命令

这里我使用pm2部署了一个项目,并取名为myApp,-i 是设置4个进程来运行项目,注意不要乱设置,请结合自己服务器的cpu来使用,并不是越多越好,pm2实现了cluster可以简单的实现负载均衡,4个进程如果其中一个挂了,pm2会自动重启该进程来保持程序的运行。如果不设置或者设置-i 为1,则是单进程程序(fork)。

相关命令

1
pm2 list

该命令能查看pm2所有部署的项目状态,可以看到如下图所示的项目列表

查看所有node项目

还有其他命令

1
2
3
4
pm2 stop app   #停止指定项目
pm2 stop all #停止所有项目
pm2 restart app #重启指定项目
pm2 restart all #重启所有项目

安装 Python3,pip3

安装依赖

1
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

使用 wget 获取源代码压缩包到 /usr/local/download/

1
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz -P /usr/local/download

解压压缩包到 /usr/local/src

1
tar -xvf /usr/local/download/Python-3.7.0.tar.xz -C /usr/local/src

切换到源代码目录

1
cd /usr/local/src/python

编译安装到 usr/local/software

1
2
./configure --prefix=/usr/local/software/python3
make && make install

错误: ModuleNotFoundError: No module named ‘_ctypes’

make install安装遇到ModuleNotFoundError: No module named ‘_ctypes’问题,执行如下命令:

1
2
3
4
# Python3.7中缺少libffi-devel依赖
$ yum install libffi-devel -y
# 然后再执行即可
$ make install

创建python3、pip3 的软链接

1
2
ln -s /usr/local/software/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/software/python3/bin/pip3 /usr/bin/pip3

验证

1
2
python3 --version
pip3 --version

安装Docker

从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。

Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

本文介绍 Docker CE 的安装使用。

移除旧的版本:

1
2
3
4
5
6
7
8
9
10
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安装一些必要的系统工具:

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

1
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

1
sudo yum makecache fast

安装 Docker-ce:

1
sudo yum -y install docker-ce

启动 Docker 后台服务

1
sudo systemctl start docker

验证

测试运行 hello-world

1
[root@runoob ~]# docker run hello-world

安装 Jenkins

准备工作

  1. 安装 JDK

    参考链接:【CentOS环境部署】CentOS下部署Java7/Java8

    将 jdk1.8.0_181 部署在目录/usr/local/software/java/,部署完成后,jdk的根目录就是:/usr/local/software/java/jdk1.8.0_181/

  2. 安装 Nginx(非必要步骤)

    参考:Nginx的快速搭建|技术胖

    部署Nginx是为了方便我们通过域名访问Jenkins,如果无此需求可忽略次操作

安装

  • yum源导入
1
2
3
4
5
#添加Yum源
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

#导入密钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
  • 安装
1
sudo yum install -y jenkins

开放端口

Jenkins站点的默认监听端口是8080

1
2
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

配置 Java 可选路径

因为Jenkins默认的java可选路径不包含我们部署的jdk路径,所以这里要配置一下,不然Jenkins服务会启动失败

1
2
3
4
5
6
7
8
9
10
11
12
13
#修改jenkins启动脚本
sudo vi /etc/init.d/jenkins

#修改candidates增加java可选路径:/usr/java/jdk1.8.0_181/bin/java
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/usr/java/jdk1.8.0_181/bin/java
"

启动 Jenkins 并设置开机启动

1
2
3
4
5
6
7
8
9
#重载服务(由于前面修改了Jenkins启动脚本)
sudo systemctl daemon-reload

#启动Jenkins服务
sudo systemctl start jenkins

#将Jenkins服务设置为开机启动
#由于Jenkins不是Native Service,所以需要用chkconfig命令而不是systemctl命令
sudo /sbin/chkconfig jenkins on

浏览器输入 http://<ip address>:8080 访问 Jenkins

Nginx 反向代理设置(非必要步骤)

新建配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#新增Jenkins专用Nginx配置文件
sudo vi /etc/nginx/conf.d/jenkins.conf

#输入以下内容并保存
server {
listen 80; #监听80端口
server_name jenkins.ken.io; #监听的域名
access_log /var/log/nginx/jenkins.access.log main;
error_log /var/log/nginx/jenkins.error.log error;

location / { #转发或处理
proxy_pass http://127.0.0.1:8080;
}
error_page 500 502 503 504 /50x.html;#错误页
location = /50x.html {
root /usr/share/nginx/html;
}
}

重载

1
sudo nginx -s reload

配置 SELinux

如果不配置SELinux,通过Nginx反向代理访问,可能会产如下错误

1
2
3
4
5
#查看错误信息
/var/log/nginx/jenkins.error.log

#错误信息示例
connect() to 127.0.0.1:8001 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1

解决方法两个:

  • 1
    setsebool -P httpd_can_network_connect 1
  • 1
    2
    3
    4
    #关闭SELinux: 
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
    #重启:
    reboot

修改本地hosts,将域名jenkins.ken.io指向CentOS IP,通过域名测试访问

Jenkins 初始化

解锁 Jenkins

查询root账号默认密码并填入

1
cat /var/lib/jenkins/secrets/initialAdminPassword

选择插件

这里直接选择“安装推荐的插件”即可

添加管理员

插件安装完成后会自动进入添加管理员界面

配置 Jenkins URL

这里的URL指的是默认访问Jenkins的地址。默认是 http://<ip>:8080,如果你通过 Nginx 配置了域名,那么直接填写配置的域名即可。

Donate comment here