首先需要一台服务器,因为是自己用的,所以我的服务器是在阿里云买的最低配新人价,可以直接买3年,linux服务器CentOS系统,具体购买教程就不说了。
如果是新买的或初始化的系统,最好更新一下,避免一些老版本的依赖用不了或者缺少依赖。
sudo yum update
更新过程会有点慢,等待出现Complete即更新成功!
卸载旧版本Docker,如果是新机可以不执行。Docker安装一定要最先执行,因为我的服务器是CentOS8版本,在安装完git、nginx、sdk后有莫名原因导致Docker安装不全,导致Docker命令不能执行,试过网上很多方法都得不到解决。经过反复测试Docker在系统更新后直接安装没有问题。有知道解决方案得小伙伴可以告诉下吗
sudo yum remove docker-ce
Step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoStep 3: 更新并安装Docker-CE
sudo yum -y install docker-ceStep 4: 开启Docker服务
sudo service docker start
设置docker开机启动
systemctl enable docker
启动docker
systemctl start docker
查看版本
docker --version
sudo yum -y install git
安装完成后查看git版本
git --version
新建一个文件夹用来存储源码
mkdir pro
切换到新建的pro文件夹中,下载源码。我的源码是放到码云中的,因为是自己的项目,自己的项目如果放到github的话,会被折磨的心态炸裂。
cd pro
git clone https://gitee.com/xxxx/xxx.git
下载时会让输入你git的账号和密码,就是你的码云账号密码。账号在输入的时候会显示,密码是不显示的,也没有*之类的代替,就是看不见,所以不要以为是没有输入成功。输入完成后回车就开始下载了
下载完成后切换到项目文件夹,git pull一下,更新下代码
可以看到又让输入git账号密码,这个时候Ctrl+C退出,然后运行命令,使git记录账号密码缓存
git config --global credential.helper store
执行后继续git pull代码,输入一次账号密码,之后再对git操作就不需要输入账号密码了。
sudo yum install nginx
启用和启动服务:
sudo systemctl enable nginx
sudo systemctl start nginx
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1
查看sdk版本
dotnet --list-sdks
为了确保项目没有问题,首先在本机发布后上传到服务器,再通过Docker生成容器,避免后续出错难以定位错误原因。
首先添加Dockerfile文件,我的习惯是直接自己新建,不用VS生成的。
Dockerfile文件一定要设置为始终复制,否则发布时带不出去。
发布成功后点击目标位置后面的路径,找到发布后的publish文件夹。
之后到服务器中创建存放发布文件的文件夹
然后将我们发布后的publish文件夹上传到服务器的netcore文件夹中,上传后切换到publish文件夹中。
接下来通过Docker发布
docker build -t technologystacksummary .
docker run --name=technologystacksummary -p 15672:80 -v /log:/app/log -d technologystacksummary
生成镜像后根据镜像生成容器,build镜像时注意后面的.一定要有
通过
docker ps
查看容器是否正常运行,存在即运行成功,可以通过浏览器访问一下。
打开nginx.conf文件,在/etc/nginx/文件夹中,为了避免改错,我直接用记事本打开。
删掉其余部分,只留下server和event就可以。
修改配置
修改后重启一下nginx服务
nginx -s reload
重启后删除原容器,重新生成一个端口是15671的容器,然后浏览器访问15672端口看是否正常请求我们的容器。
docker rm -f technologystacksummary
docker run --name=technologystacksummary -p 15671:80 -v /log:/app/log -d technologystacksummary
哇瑞古德,成功!
接下来模拟负载均衡。在原有镜像上多生成几个容器,换个端口和容器名就可以模拟微服务了。
docker run --name=technologystacksummary1 -p 15673:80 -v /log:/app/log -d technologystacksummary
以此类推,我们先创建四个。
创建完成后修改nginx配置文件模拟负载均衡。
然后重启一下
nginx -s reload
直接在浏览器访问15672端口,查看响应头
这两个就是本次请求转发的地址,可以多请求几次,亲眼看到它转发了所有不同的端口服务才放心。用这种方式看主要是我不想改代码了,能改我不改,就是玩儿!也可以直接在项目中获取地址。
负载均衡就是这么简单!
安装java的SDK
yum install -y java
接下来安装Jenkins,这个鬼东西是很慢的
1.wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
2.rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
3.yum install -y jenkins --nogpgcheck
如果安装不了,就换个方式,下载rpm包
1.wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm
2.rpm -ivh jenkins-2.7.3-1.1.noarch.rpm
最好用第一种方式安装,因为第二种直接用rpm安装会缺少东西。很麻烦
我回来了....经过一个多小时的下载,这个鬼东西终于下载完了。
按照上面步骤安装完后,配置一下Jenkins端口,可以不用配置,最好还是换一下,避免端口冲突
vi /etc/sysconfig/jenkins
重启一下Jenkins
service jenkins restart
在浏览器中访问
首次进入会要求输入初始密码如下图,
初始密码在:/var/lib/jenkins/secrets/initialAdminPassword
输入密码后会让安装插件
选择第二个,然后直接点安装即可。安装完后会让创建管理员用户,随便创建即可,自己记住账号密码。
进入后创建任务
随便起个名字,点击创建自由风格的项目
创建后配置工作区
git配置好后,添加构建部分
因为是安装在linux服务器,也是在linux进行发布,所以选择sh
sh批处理命令添加完后保存。批处理命令最好先放到服务器中手动运行一下,避免出错。
保存后点击Dashboard返回主工作区目录,找到自己创建的工作,点击立即构建。
构建完成后,点击TechnologyStackSummary名称进入工作区。
点击这里,是每次构建的记录。
找到控制台输出,这里是构建的日志,包括错误日志。
可以看到是git的问题,在最下方可以看到是git权限问题。这里需要注意的是现在jenkins的用户默认就是jenkins,所以没有权限。我们需要修改一下jenkins的配置文件,将用户修改为root。
网上有暴力方法,直接将需要权限的更改为所有用户均可用,就是
chorm -R 777 xxx
这种方式不仅麻烦,而且不安全,jenkins在使用时,需要权限的地方很多,通过这种方式每一个涉及到的文件及文件夹都要处理。
打开配置文件
vi /etc/sysconfig/jenkins
修改完成后,执行命令
chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins
重启jenkins
service jenkins restart
按照上面步骤重新构建下项目。
好了。成功!