虚拟机+Linux+Jenkins+Nginx, 部署前端项目简单介绍

319 阅读7分钟

前言,文章用来自己的学习记录和复习,写的不好额地方请各位见谅和指正哦

vm安装Linux(简单过下,如下图操作即可)

虚拟机只是为了在本地操作熟悉Linux免得花钱,去服务商买服务器是一样的

先用桥接模式, 不行就用nat模式

等待安装...

设置用户和密码(可以只设置密码, 用户是管理员)

完成

到此,安装完毕

虚拟机Linux暴露ip(方便用xshell连接)

进入xshell官网申请下个人免费版xshell和xftp并下载,附上相关文章

打开xshell连接本地的Linux

输入用户名和密码登入

现在就可以用xshell连接Linux了, 操作更方便些, 虚拟机最小化运行即可

安装node

先安装wget(会默认安装到/usr/bin/目录下 )

yum -y install wget

淘宝node镜像找到Linux的node

复制node下载地址连接到Linux中,下载(先进入 cd /usr/local/bin 文件夹中 )

wget npm.taobao.org/mirrors/nod…

执行解压

tar -xvf node-v16.13.0-linux-x64.tar.gz

进入到 node-v16.13.0-linux-x64 ,执行一下命令安装Node.js的依赖组件

cd node-v16.13.0-linux-x64

yum install gcc gcc-c++

重命名node-v12.16.1-linux-x64.tar.gz文件夹为Node.js

cd .. 先回到上一级级)

mv node-v16.13.0-linux-x64 Node.js

部署bin文件并建立软连接

ln -s /usr/local/bin/Node.js/bin/node /usr/bin/node
ln -s /usr/local/bin/Node.js/bin/npm /usr/bin/npm
ln -s /usr/local/bin/Node.js/bin/npx /usr/bin/npx

至此,node安装完毕.

安装git

这里用yum安装git更简单(node都也可以用yum安装, 看个人去查看怎么操作吧)

yum install -y git

安装完毕

现在我们已经可以手动的在Linux拉取 打包 运行我们的项目了

尝试简单的手动拉取项目并打包,先用node服务器运行下

(先尝试下, 后面不用这么搞, 但这样搞也没问题)

打包出来了一个build, 我们用服务器运行这个build中的文件即可运行我们的项目了, 这里我们可以先用node写一个服务器来试试运行. 可看这个简单的node服务器项目

1直接把上面的node服务器项目clone到了上的项目中(复制到任何位置都行的)

2把build文件夹移动or复制到node服务器项目中

3安装node服务器项目依赖

4运行node服务器项目(我写的是start命令,npm run start)即可,会默认部署到8777端口

展示下:

发现是访问不了的, 原因是防火墙没有开放8777端口, 打开即可

(注: 在服务商提供的服务器上这步操作是配置安全组,如腾讯云[我的是window系统就算了, 就行下面的按钮进入配置]

)

查看所有开启的端口
firewall-cmd --list-ports

防火墙开启端口访问(这里面是8777,其他端口也是一样的)
firewall-cmd --zone=public --add-port=8777/tcp --permanent

注:开启后需要重启防火墙才生效

firewall-cmd --reload

再次展示:

到此, 已经可以了, 如果是服务商提供的服务器的话我们已经可以用外网ip访问了,这里是本地服务器,用的是局域网ip访问的

不过我们发现用npm run start启动服务器十分不好,十分不方便

这是拿出我们的pm2来运行即可

全局安装pm2

npm i pm2 -g

( 这里出了个小意外,全局安装后出现pm2找不到的问题 [在服务器上应该不会出现,反正我之前服务器上没出现,🤭], 就直接按上面安装node的添加软连接的方式给pm2也添加一个就解决了,

1先找到全局npm安装的文件位置

npm root -g

2添加软连接

ln -s /usr/local/bin/Node.js/lib/node_modules/pm2/bin/pm2 /usr/bin/pm2

)

用pm2执行npm run start命令(最后个start就是package.json中的start)

pm2 start npm -- run start

这下可以运行多个命令且方便管理了,pm2常用命令

安装Nginx

Nginx是一款轻量级Web服务器,也是一款反向代理服务器

先下载些必要的程序

yum -y install gcc gcc-c++ autoconf pcre-devel make automake

yum -y install wget httpd-tools vim

安装Nginx

yum install nginx

查看版本

nginx -v

如果80端口开放了的话则会看到

没有开放就看上面的如何开放端口

查看Nginx各项文件位置

rpm -ql nginx

cd进入cd /etc/nginx, 其中含有Nginx的配置文件

打开nginx.conf文件(vim nginx.conf)可发现

有句include /etc/nginx/conf.d/*.conf;我们就可以去/etc/nginx/conf.d/找个文件夹中写上用.conf结尾的文件来配置服务器

新建了个如下内容的test1.conf文件, 就创建了个监听8778端口的简单的服务器, 文件指向的就是我们上面的build文件夹, (记得开放8778端口)

重新载入Nginx配置

nginx -s reload

(如果执行重新载入报错: nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)

那么先执行下这个命令,再执行重新载入命令:

sudo nginx -c /etc/nginx/nginx.conf

)

页面可见

配置好后我们就不需要node服务器了, 每次从git拿取代码后build下就可更新到页面上,

也可以在本地打包好后通过xftp传到对应的文件位置即可

至此, 附上Nginx的文章

用docker安装: docker run -it --name nginx1 -v /dockerNginxProject:/project -p 80:80 nginx /bin/bash

(-v /dockerNginxProject:/project是容器卷, 把项目放到dockerNginxProject用Nginx容器Nginx配置指向project即可)

安装Jenkins

按照官网依次执行以下命令即可安装

修改Jenkins配置(如果没有找到,先执行rpm -ql jenkins 查看下位置 )

vi /etc/syscofifig/jenkins

可修改内容如下:

JENKINS_USER="root" (运行的Linux账号)

JENKINS_PORT="8080"(运行端口, 看个人设置, 默认8080)

启动Jenkins

systemctl start jenkins

打开浏览器访问(记得开放端口)

http://192.168.66.101:8080 (当前服务器的ip+端口)

后面按照Jenkins的提示进行即可

安装插件时选择不安装, 后面需要再安装即可

添加一个管理员账户,并进入Jenkins后台

后面按步骤进行即可,没啥难度

安装完成可见

更改Jenkins插件安装源为国内

cd /var/lib/jenkins/updates

执行命令

sed -i 's/updates.jenkins-ci.org/download/ht…' default.json && sed -i 's/www.google.com/https://www…' default.json

重启Jenkins,

http://192.168.66.101:8080/restart 即可重启

下载部分插件

汉化插件:

Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"

git插件:

node插件:

node安装好后去Jenkins的 系统设置->全局工具配置 页面配置下(这一步有疑问,1不配置不选择node环境可以打包成功, 2本地安装的16配置时写的非自动路径为/usr/bin/node失败 3本地安装了16,这里选自动安装17会再安装个node吗?如何将本地的16配置到这里面了呢? ------问了下运维, 这里会在Jenkins的环境下再安装node虽然本地的Linux已有node但不冲突. 如果配置项目时不选node也能打包成功是因为它会去本地找对应的node,有则打包成功)

名称随意

尝试用Jenkins打包个项目

\

成功了即可见,如上提示的, /var/lib/jenkins/workspace/test1打包后在这个文件夹下

Jenkins实现git钩子

先安装Jenkins的 Generic Webhook Trigger Plugin插件

配置gitwebhooks:

http://106.52.**.**:8080/generic-webhook-trigger/invoke?token=11b59209b42c4446ff3cdb22649114099d6

前面的改为自己的Jenkins服务器ip和端口(因为用虚拟机创建的Linux是局域网访问,外网访问会有问题, 这里用的是腾讯云的Linux系统举的列),后面的token到jenkins的系统管理-管理用户-admin-设置里获取

再配置流水线:

就ok了

现在每次push代码即可触发流水线

Jenkins配置ssh链接

先安装Publish Over SSH插件

补充:

上面配置好后打包流水线完成打包后就会将打包出来的build文件内容上传到指定服务器的指定目录下(

作用就是一台服务器用来打包流水线(就这当前这太台), 其他ssh配置的服务器用来存放运行项目/网站(可以是多台)

)

前端部署就暂时介绍到这里了