利用虚拟机模拟学习项目代码发布

1. 安装VM

2. 下载CentOS 7 64位

3. 打开VM,并创建虚拟机,将下载的CentOS导入安装

4. 启动虚拟机,点击Applications/Favorites/Terminal打开终端命令窗口
4.1 输入 ls 查看当前目录下的文件夹

5. 创建一个属于自己的工作文件夹:mkdir App
5.1 若是命名错误可删除后再创建:rmdir App(该命令是删除空文件夹)
5.2 其他命令:

mkdir 目录名         => 创建一个目录

rmdir 空目录名      => 删除一个空目录

rm 文件名 文件名   => 删除一个文件或多个文件

rm –rf 非空目录名 => 删除一个非空目录下的一切

touch 文件名        => 创建一个空文件

6. 进入App文件夹,再创建一个文件夹git并进入

7. 输入命令:yum install git git-gui 安装git。报如下错误:you need to be root to perform this command

是提示要获取root权限,输入 su 回车输入密码即可解决(密码为不可见)

再次安装git时,又出现错误:Another app is currently holding the yum lock; waiting for it to exit...

利用虚拟机模拟学习项目代码发布_第1张图片

解决方法:
rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了:

利用虚拟机模拟学习项目代码发布_第2张图片

 再次输入命令:yum install git git-gui 之后会显示一系列关于git的信息,然后提示你是否可以下载git了:

利用虚拟机模拟学习项目代码发布_第3张图片

输入 y 之后会开始下载git,直到下载完毕:

利用虚拟机模拟学习项目代码发布_第4张图片

8. 为了检查是否真的下载了git,可输入查询git版本的命令:git --version

9. 接下来为了能够在虚拟机上运行你的本地代码,不仅需要配置ssh key,还需要从远程仓库拉取项目代码。
9.1 配置ssh key,输入:ssh-keygen -t -rsa -C "[email protected]",然后一直回车,直到创建完。

利用虚拟机模拟学习项目代码发布_第5张图片

9.2 进入自动创建的 .ssh 文件夹。注意:生成的 .ssh 文件夹是不可见的,所以用 ls 命令时是显示不了 .ssh 文件夹的
9.3 进入后打开id_rsa.pub文件:cat id_rsa.pub ,然后将公钥的字符串复制到github/gitlab上。然后新建一个文件夹用于存放待会拉取的项目代码,并初始化:git init 。最后测试能否连接上远程仓库(这里以拉取我账号具有权限的项目代码):git pull git@@github.com ,若是能拉取代码则说明连接成功

利用虚拟机模拟学习项目代码发布_第6张图片

9.4 代码拉取完毕(后台服务代码也拉取完毕)之后,开始运行项目,因为后台服务要运行,前端代码也要运行,甚至需要打包,那么可打开多个终端进行操作。

10. 如果在虚拟机里面不好操作命令,可以下载XShell协助(该版本只能使用于非商业用途):https://www.netsarang.com/zh/free-for-home-school/

--------------------------------------------------------------------------------------------------------------------------

准备工作结束,下面是进入工作

---------------------------------------------------------------------------------------------------------------------------

11. 接下来就需要使用可以发版的工具docker,首先准备好nodejs和docker环境

11.1 nodejs环境的准备
11.2 通过ssh命令进入你的虚拟机:ssh yourusername@your ip address
(生产环境登录:通过某某系统(腾讯云)登录部署你项目代码的服务器)
11.3 前端环境需要在nodejs环境下运行,所以需要安装nodejs环境. 目前使用的是最新的nodejs v10.15.3版本,安装方法如下: Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载(https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz)解压后使用:

利用虚拟机模拟学习项目代码发布_第7张图片

#wget https://nodejs.org/dist/v8.12.0/node-v10.15.3-linux-x64.tar.xz  // 下载
#tar xf  node-v10.15.3-linux-x64.tar.xz      // 解压
#cd node-v8.12.0-linux-x64/                  // 进入解压目录
#./bin/node -v                               // 执行node命令 查看版本
V10.15.3

 解压文件的bin目录底下包含了node, npm 等命令,我们可以使用 ln 命令来设置软连接:

sudo ln -s [安装路径]/bin/npm   /usr/local/bin/ 
sudo ln -s [安装路径]/bin/node   /usr/local/bin/

sudo ln -s [安装路径]/bin/npm   /usr/bin/ 
sudo ln -s [安装路径]/bin/node   /usr/bin/
#注: 此方法将node和npm链接到sudo下 上面的方法将node和npm安装到了用户下,两者不通用
#node –v
V10.15.3

#sudo node –v
V10.15.3
则安装成功

注意:这里在设置软连接的时候,会报一个错误:xx is not in the  sudoers file.
那是因为你自定义的用户名不具有权限,要切换到根用户,利用它的权限把你自定义的用户权限添加进去,可参考:
https://jingyan.baidu.com/article/3ea51489ceccd652e61bba22.html

11.4 docker环境:sudo yum install docker
11.5 其他的一些准备:
安装一些必要的系统工具:

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

添加软件源信息:

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

更新yum 缓存:

sudo yum makecache fast

安装docker-ce

sudo yum -y install docker-ce

启动docker 后台服务

sudo systemctl start docker

测试运行

docker run hello-world

至此,虚拟机项目打包学习在此就差不多结束了,因为要想真正把项目代码打包至服务器上,是需要服务器支撑的,而服务器又需要购买才能使用,所以,正式发布的硬性条件是你必须要有一台线上服务器(国内一般买的都是阿里系或者腾讯系服务器)

-------------------------------------------------------------------------------------------------------------------------------

正式进入发布工作(最好是对docker打包命令有个基础认识,也就是掌握一些linux的常用命令)

-------------------------------------------------------------------------------------------------------------------------------

12. 进入并连接到你的服务器(自己购买的,或者公司给你玩的服务器),若是服务器内无任何项目代码,则可以先创建一个文件夹用于存放,与上述步骤:创建文件夹--安装git、node环境并检查版本号--配置权限--git拉取最新代码--安装docker类似。

13. 项目中有publish.sh和Dockerfile两个文件,Dockerfile是docker打包需要配置的一些信息,比如服务器地址、端口号、项目代码在服务器中的路径等;而publish.sh里的配置信息是:可选择打包的环境,比如有生产环境prod、测试环境test等。(注:如果没有则需自己配置,博主目前没这个实力)

14. 以打包测试版本为例:在进入相关项目代码根目录下之后,输入以下命令:
sh publish.sh test
如果打包成功会显示success,否则会显示docker: Error response from daemon: driver programming external connectivity on endpoint recursing_brahmagupta (xxxxxxxxx) : Bind for 0.0.0.0:xxxx failed: port is already allocated.

错误的原因是这个端口已被分配了,需要将之前的版本删掉,空出该端口号,否则该端口一直被占用,致使你打包无法成功。

删除命令:docker rm -f dff34ac6e9fd(占用该端口的版本号)

查看删除后的版本是否还存在:docker ps
如果查看不到,则说明删除成功,进行下一步操作

你可以重新执行sh publish.sh test,也可以直接输入命令:
docker run -d -p xxxx:xxxx ipaddress:xxxx/项目名:打包的版本号
示例:docker run -d -p 3306:3306 127.0.0.1:5000/my-project:20190401134817_0ca6764
因为之前有过一次打包,这行命令是把该打包后的代码设置镜像后,映射到该3306端口号

再次输入:docker ps 进行查询,如果有你打包之后的项目,那么便是成功。在浏览器输入你服务器的ip address + port number就可以加载出产品的新一代版本。

附:查询打包项目命令:docker ps | grep xx(要搜索的内容)

你可能感兴趣的:(常用命令,开发工具)