linux nginx vue_【Devops】Linux服务器上搭建持续集成环境及实战体验
本文内容比较多,先上一个目录,对文本内容有个总体的认识,可以择选需要的部分直接阅读。
目录清单:
1、nginx安装
2、jenkins安装
3、gitlab安装
4、从0搭建vue前端框架
5、从0搭建springboot后端框架
6、搭建ftp服务器
7、手动部署vue项目
8、手动部署springboot项目
9、 jenkins安装后的配置
10、jenkins自动部署vue项目
11、 jenkins自动部署springboot项目
12、服务器重启后带来的问题
13、安装mysql数据库
14、线上从vue-->springboot-->mysql 全流程走通
本文讲解的环境是,Ubuntu 18.04 server 64bit
01
—
nginx安装
参考https://www.runoob.com/linux/nginx-install-setup.html上Nginx安装配置
由于我个人用的是系统Ubuntu,而参考资料中用的是CentOs
第一步有区别,资料中用的yum安装,而Ubuntu14.0不支持yum下载安装机制
所以我这里是如下操作的:
安装编译工具及库文件:
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install zlib1g-dev
openssl version查看版本号 1.1.1
执行./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
当接下来执行make时,会出现错误,经调查网上是nginx与openssl的版本兼容问题导致的。这里nginx版本是1.6.2.下面重新参考资料把nginx取版本1.14.0
最终参考这个https://www.jianshu.com/p/8d3e1689b884进行安装Nginx
<1>安装gcc和g++
apt-get install build-essential
apt-get install libtool
<2>安装pcre依赖库
apt-get install libpcre3 libpcre3-dev
<3>安装zlib依赖库
apt-get install zlib1g-dev
<4>安装openssl依赖库
apt-get install openssl
// 未安装该库会报 SSL modules require the OpenSSL library
apt-get install libssl-dev
<5>安装nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make(会报错,找到对应的Makefile文件,将gcc参数中的-Werror去掉)
make install
<6>启动nginx
/usr/local/nginx/sbin/nginx
<7>访问站点
http://122.119.204.125/(这里ip地址是服务器的公网ip)
nginx的主页
<8>正常看到nginx主页,Nginx安装成功!
02
—
jenkins安装
<1>检查是否已安装java
java -version
如果没有安装,则执行下面命令安装:
sudo apt-get install openjdk-8-jre
//openjdk-8-jre 仅包含JRE,如果需要开发java程序,需要下载openjdk-8-jdk
sudo apt-get install openjdk-8-jdk
配置环境变量,在/etc/profile中添加
#set jdk environment
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
<2>安装Jenkins
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
<3>在/usr/share/jenkins 下运行 jenkins.war
java -jar jenkins.war
nohup java -jar jenkins.war —httpPort=3389 & (这个可以后端启动)
<5>访问Jenkins(这里要在此服务器的入方向规则中加入3389端口)
http://122.119.204.125:3389/
防火墙可能会禁止直接访问3389端口,可以使用如下命令:
firewall-cmd --zone=public --add-port=3389/tcp --permanent
firewall-cmd —reload
<6>正常看到jenkins主页,Jenkins安装成功!
firewall-cmd添加端口访问操作:
1.查看开放端口
firewall-cmd --zone=public --list-ports
2.添加端口
#永久添加80端口,协议为tcp
firewall-cmd --add-port=80/tcp --permanent
#重新加载
firewall-cmd --reload
3.移除端口
#删除tcp下的80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
03
—
gitlab安装
参考
https://www.jianshu.com/p/74a3a181dc36
https://www.cnblogs.com/yangfan-123/p/11592905.html
https://www.linuxidc.com/Linux/2018-01/150319.htm
<1>sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix
使用左右键和回车键选择确定、取消,弹出列表选项的时候,选择 Internet Site
<2>信任 GitLab 的 GPG 公钥
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
<3>使用镜像配置
vi /etc/apt/sources.list.d/gitlab-ce.list #添加以下内容
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main
<4>安装 gitlab-ce
sudo apt-get update
sudo apt-get install gitlab-ce
vi /etc/gitlab/gitlab.rb
修改如下:external_url 'http://122.119.204.125:7800/‘
Unicorn[‘port’] = 8800(这行好像可以不用)
<5>启动各项服务
sudo gitlab-ctl reconfigure
<6>检查GitLab是否安装好并且已经正确运行
sudo gitlab-ctl status
<7>添加防火墙规则
firewall-cmd --zone=public --add-port=7800/tcp --permanent
firewall-cmd —reload
<8>浏览web页面并设置密码
http://122.119.204.125:7800/
这时候可能会发生502,分析原因可能是因为内存只有1G,而gitlab要求2G导致的;解决方案是创建交换内存,
sudo ddif=/dev/zero of=/swapfile bs=1024count=2048k
sudo mkswap/swapfile
sudo swapon/swapfile
sudo vim/etc/fstab
/swapfile none swap defaults 0 0
<9>用设置的密码和用户名root登录gitlab主页,然后新建group和其下面的project
<10>使用另外一台机器,这里用我自己电脑,克隆新建的project到本地
git clone http://122.119.204.125:7800/testgroup/test.git(这了使用http方式的clone)
第一次会提示输入用户名和密码,输入用户名和密码即可
<11> 补充,如何使用ssh方式的git clone?
我这里是mac电脑,之前创建过ssh keys,所以直接在~/.ssh文件夹下找到公钥文件,然后把文件中内容复制粘贴到gitlab中的User Settins>SSH Keys的Key编辑框中保存即可
在本地电脑用git clone git@122.119.204.125:testgroup/test.git无需密码直接克隆仓库到本地电脑
gitLab常用命令
sudo gitlab-ctl start # 启动所有 gitlab 组件;
sudo gitlab-ctl stop # 停止所有 gitlab 组件;
sudo gitlab-ctl restart # 重启所有 gitlab 组件;
sudo gitlab-ctl status # 查看服务状态;
sudo gitlab-ctl reconfigure # 启动服务;
sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
sudo gitlab-ctl tail # 查看日志;
04
—
从0搭建vue前端框架
这里用vue-cli3.0+脚手架搭建
<1>先检查是否已经按照了脚手架
vue -V
如果版本不是3.0+,则需要安装,npm install vue@cli -g
再验证vue -V
<2> vue create 工程名
根据提示选择即可
<3> 最简单的vue前端框架就搭建好了
05
—
从0搭建springboot后端框架
这里选择通过web页面使用Spring Initializr搭建
<1> 首先按照下方web页面填写好后点击GENERATE按钮
<2>从第一步中生成的zip包解压后,以已存在的maven工程导入到eclipse中即可
<3> 自己创建一个Controller即可验证接口调用
<4> 最简单的springboot后端工程就搭建好了
06
—
搭建ftp服务器
<1> sudo apt install vsftpd 安装vsftpd
<2> netstat -antup | grep ftp 查看ftp服务端口
<3>这里浏览器无法打开,但是用FileZilla工具以不安全连接方式可以连接
07
—
手动部署vue项目
<1> 在本地执行npm run build,生产dist
<2> 讲dist文件夹上传到服务器
<3> 把dist文件夹放入到nginx 的web加载指向的根目录下
<4> 把nginx的conf文件中location对应的root指向修改下,目录后面追加dist文件夹
<5> 此时会出现403问题,查看dist文件夹和内部文件夹及文件的访问权限,执行如下命令:
chmod -R 755 dist
08
—
手动部署springboot项目
<1>eclipse打开springboot项目
<2>Maven install执行后会在target文件夹下有生成的jar包(jar或war可以在配置文件中配置)
<3>把jar上传至服务器
<4> nohup jar -jar *.jar --server-port=8080 & (后台启动springboot程序)
09
—
jenkins安装后的配置
进入系统管理——>全局工具配置—>JDK和Maven(可以自行安装然后配置JAVA_HOME和MAVEN_HOME,或者勾选自动安装直接用jenkins安装)
10
—
jenkins自动部署vue项目
<1> 新建任务 选择自由风格
<2> 构建中执行shell脚本 (这里需要写shell脚本执行构建vue工程)
<3> 构建vue工程需要用到npm命令,所以要安装nodejs和npm
<4> 在构建中执行shell
11
—
jenkins自动部署springboot项目
<1> 新建任务 选择Maven工程
<2> 构建中执行shell脚本 (这里需要写shell脚本执行构建springboot工程)
这里写脚本有几步:
第一步,获取到此springboot程序的运行进程号pid
第二步,强制杀掉此进程
第三步,启动刚构建完的.jar 服务
<3> 在构建中执行shell
12
—
服务器重启后带来的问题
(1) 导致http://122.119.204.125/无法访问
(2) 导致http://122.119.204.125:3389/无法访问
(3) 导致jenkins服务跑到了8080端口上,访问http://122.119.204.125:8080/ 进入jenkins安装之后的初始化配置向导页面
(4) 导致后端java服务本来是8080端口,结果被jenkins占用无法访问
原因: 因为nginx服务没有设置随系统自启动
jenkins服务随系统自启动后给的是默认端口8080; 之前用命令启动配置的3389端口没有放入到jenkins配置文件中。
java服务对应的工程代码配置中端口号改成8080,即可以8080端口自启动java服务。
13
—
安装mysql数据库
参考 https://blog.csdn.net/weixx3/article/details/80782479安装即可
14
—
线上从vue-->springboot-->mysql 全流程走通
浏览器中输入http://122.119.204.125/
点击'调用后端接口从数据库中获取信息展示'按钮,在network会看到请求执行成功并且获取到的信息展示在页面中。