安装jdk

首先查看是否含有jdk

// 执行
javac

// 或者
java -version

如果没有安装

yum install -y java-1.8.0-openjdk-devel.x86_64

找到jdk 位置

which java

安装jenkins

官方下载,但是下载失败了, 因为被墙了

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
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install java-11-openjdk
sudo yum install jenkins

其他方式下载

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.332.3-1.1.noarch.rpm
rpm -ivh jenkins-2.332.3-1.1.noarch.rpm

启动jenkins

# 启动jenkins
systemctl start jenkins
# 查看jenkins
systemctl status jenkins
# 重启jenkins
systemctl restart jenkins
# 停止jenkins
systemctl stop jenkins

初始端口是8080, 可以通过修改vim /etc/sysconfig/jenkins 配置文件更改端口号

FAQ

打开网站ip:[端口] 配置jenkins, 如果是线上ECS 服务器 有可能访问不成功, 请检查下面几个原因

  • 是否已安装jdk,命令:Java -version
  • 查看防火墙状态: systemctl status firewalld.service
  • 查看端口号是否开放netstat -natp
  • 如果是阿里云等服务器 需要将端口号加入到安全组

安装 nginx

  • 安装额外的软件仓库 sudo yum install epel-release -y
  • 安装nginx sudo yum install nginx -y

在服务器上设置 git

git config --global user.name "Bill"
git config --global user.email "735051883@qq.com"

设置ssh

ssh-keygen -t rsa -C "735051883@qq.com"

验证是否通过

ssh -T git@github.com

坑:在jenkins 上建立项目,无法连接github

是因为在jenkins 上连接github 是用了jenkins 用户的ssh, 重新生成秘钥,添加到github上即可
或者从~/.ssh 复制过去也行

su root
cd /var/lib/jenkins/.ssh
ssh-keygen -t rsa -C your-email@sample.com
# 注意下一步提示保存位置的时候,要再输入
/var/lib/jenkins/.ssh/id_rsa
# Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
# 改变用户
chown jenkins:jenkins id_rsa id_rsa.pub
cat id_rsa.pub

或者

sudo mv ~/.ssh/id_rsa.pub /var/lib/jenkins/.ssh/
sudo mv ~/.ssh/id_rsa /var/lib/jenkins/.ssh/
sudo mv ~/.ssh/knows_host /var/lib/jenkins/.ssh/
chown jenkins:jenkins id_rsa id_rsa.pub knows_host

配置nginx

cd /etc/nginx/conf.d

vi cra-app.conf

使用以下配置

server {
  listen        80;
  server_name   localhost;
  root          /home/www/cra-app;
  index         index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
}

注意: 虚拟机需要关闭 selinux, 否则上面配置会没法显示;

# 查看seLinux 状态
getenforce

关闭它

sudo vim /etc/selinux/config 
# SELINUX=enforcing改为   SELINUX=disabled

这里记录一下nginx rootalias 的区别

当我们这样设置 root 的时候:

location /i/ {
    root /data/w3;
}

当请求 /i/top.gif/data/w3/i/top.gif 会被返回。

当我们这样设置 alias 的时候:

location /i/ {
    alias /data/w3/images/;
}

当请求 /i/top.gif/data/w3/images/top.gif 会被返回。

乍一看两者很像,但细一看,就能看出两者的区别,root 是直接拼接 root + locationalias 是用 alias 替换 location,所以 root 中最后的路径里有 /i/,而 alias 中最后的路径里没有 /i/

所以如果你这样使用 allias 定义一个路径:

location /images/ {
    alias /data/w3/images/;
}

其实使用 root 会更好:

location /images/ {
    root /data/w3;
}

server 和 location 中的 root

server 和 location 中都可以使用 root,举个例子:

http { 
  server {
    listen 80;
    server_name www.yayujs.com;
    root /home/www/website/;
    location / {
        root /home/www/ts/;
        index index.html;
    }
  }
}

如果两者都出现,是怎样的优先级呢?
简单的来说,就是就近原则,如果 location 中能匹配到,就是用 location 中的 root 配置,忽略 server 中的 root,当 location 中匹配不到的时候,则使用 server 中的 root 配置。