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...
解决方法:
rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了:
再次输入命令:yum install git git-gui 之后会显示一系列关于git的信息,然后提示你是否可以下载git了:
输入 y 之后会开始下载git,直到下载完毕:
8. 为了检查是否真的下载了git,可输入查询git版本的命令:git --version
9. 接下来为了能够在虚拟机上运行你的本地代码,不仅需要配置ssh key,还需要从远程仓库拉取项目代码。
9.1 配置ssh key,输入:ssh-keygen -t -rsa -C "123456xxxx@qq.com",然后一直回车,直到创建完。
9.2 进入自动创建的 .ssh 文件夹。注意:生成的 .ssh 文件夹是不可见的,所以用 ls 命令时是显示不了 .ssh 文件夹的
9.3 进入后打开id_rsa.pub文件:cat id_rsa.pub ,然后将公钥的字符串复制到github/gitlab上。然后新建一个文件夹用于存放待会拉取的项目代码,并初始化:git init 。最后测试能否连接上远程仓库(这里以拉取我账号具有权限的项目代码):git pull git@@github.com ,若是能拉取代码则说明连接成功
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)解压后使用:
#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(要搜索的内容)