引言
嗨嗨嗨,来喽。
你还在为不会部署项目而烦恼吗?你还在为项目组没有运维而留下你个测试而感到奇怪吗?这篇文章将手把手教会你最最最基础的Linux系统下项目部署,不保过面试,不保会使用,甚至不保证你能读懂。理解了以上这些,那我们该进入正题了。
应用场景
显而易见,作为一个测试人员,我们的任何行动都应该由“测试”这一个核心的需求驱动,那么由我们所搭建的项目环境自然也是测试环境。由此又引发了两个问题,其一:对于一个测试人员而言,部署项目、搭建环境是必要技能吗?其二:部署项目、搭建环境在测试人员的工作中处于怎样的地位?
解答其一:显然,并不是。部署项目、搭建环境是运维人员所必须要做的工作之一,测试人员原本只需要在运维完成这项工作后在这个环境中进行测试工作即可。但是,在项目组中运维离职或暂时不在的状态下,测试人员有时不得不担当这方面的工作合理加班。
解答其二:测试人员的工作可以非常笼统的归类为两个步骤:①对测试工作进行计划 ②进行测试工作并做好记录,你可以很清晰的发现部署项目、搭建环境就夹在了这两个步骤之间,如果迟迟未决,那么我们的本职工作也难以进行。
从上面的这些话中你应该了解了这一环节对于测试工作的地位,那么下面我们就来实际操作一下吧。
环境搭建
先来熟悉一下我们马上要用到的项目,来自黑马程序员的在线开源商城项目“TP商城”,这是一个非常基础的Linux+Nginx+MySQL+PHP(简写:LNMP)项目,除此之外主流的还有项目还有LAMP(A指Apache)和LANMP。
第一步 安装环境套件
我们可以通过该网站来生成一条可以在Linux系统中执行的批处理命令,执行命令后等待它运行完成就可以非常轻松地完成环境套件的安装。
检查套件的安装状态和版本
MySQL:mysql --version
Nginx:nginx -v
PHP:php -v
通过上述命令来检查对应软件,如果使用中存在任何问题,请仔细检查软件的版本是否与项目要求的一致
确认软件对应的服务程序启动状态
MySQL:systemctl status mysqld
Nginx:systemctl status nginx
PHP:systemctl status php-fpm
请注意这里使用的命令中PHP对应的格式与另外两条稍有不同
一些异常情况的处理
服务程序无法正常启动
重启该程序:服务名 restart
关闭该服务:服务名 stop
启动该服务:服务名称 start
tips:无法自动重启的情况下请使用后两条命令手动重启
服务启动、运行途中卡死
获取该服务进程号:ps -aux | grep 服务名(获取对应的进程号PID)
杀死卡死的进程:kill -9 进程号
tips:杀死进程后请不要忘记重新启动服务
安装、启动服务时,端口号被占用
查看占用端口号的程序进程号:lsof -i:端口号
获取端口号后可以杀死对应进程
请注意如果占用该端口的是之后工作中需要使用到的服务,请更改待安装、启动的服务所使用的端口,防止出现拆东墙补西墙的情况
如需通过第三方方式访问、设置服务程序时,获取服务端口号的方法
netstat -anp | grep 服务名
完成上述操作之后我们的运行环境就算是搭建完成了,接下来就正式进入到项目部署的部分
第二步 项目部署
首先我们此时应该已经获取到了项目的代码包,一般这是由开发人员提交给运维的,现在我们在干运维的活所以也由我们代收。 代码包通常是以zip压缩包的形式存在的,我们要做的就是把这个代码包上传到服务器指定目录中,再把它解压、添加权限、进行配置。
代码部署
先切换到项目需要部署的路径下,这方面的信息请仔细询问你的上级或是与你对接的人员
cd 指定目录
随后我们需要确认自己正确的切换了路径
pwd
如果未在指定路径下,请重复第二行的代码
随后我们就可以把代码包上传到该路径下
rz
请根据自己操作环境的不同进行上传文件的选择,这里就不讨论某一种情况了
上传完成后我们需要查看上传是否成功
ls -la
查看到当前目录下所有文件和目录的信息,确认无误后我们进行下一步操作
unzip 代码包名
这是一个省略写法,作用是将该包解压到当前目录下
完整命令在这里不给出,请自行搜索
解压完成后我们可以使用ls -la命令来确认解压成功
随后我们添加权限就完成了代码的部署
chmod -R 777 指定目录
此处使用的-R选项会为指定目录下的所有内容添加同样的权限,请仔细确认项目要求的权限,后果自负
配置文件
如果我们有修改项目对应配置文件的需求,请先向对应的开发人员或是与你对接的人员索要更改完成的配置文件,如果自行修改配置文件产生了任何不良后果,请好好反省一下
首先我们要获取配置文件所在的位置
find / -name 配置文件名
这里的/指的是Linux系统下的根目录,作用是划定搜索的范围,如果你有更详细的搜索范围可以缩短搜索的时间
cd 切换到对应目录下
rm -rf 配置文件名
将旧的配置文件删除
rz
上传新的配置文件
更新配置文件后我们需要重启服务来使其生效
这里我们简单粗暴的重启服务器来一并重启服务
shutdown -r now
tips:请不要在实际生产或是测试环境下使用这种方式,会给正在使用服务器的其他人造成困扰
重启完成后我们可以查看一下服务是否正确启动了
systemctl status 服务名
到这里我们就完成了项目的部署,随后就是各个项目之间不同的本地部署、项目初始化,就不讨论了。