我们在使用linux系统时,当我们掌握了基础的命令之后,我们的系统还需要一个很重要的东西,也就是软件,在windows系统中,我们可以通过简单的方法在系统里安装各种想使用到的软件,但是在linux系统中是有着一定差别的。不仅如此,不同的linux版本,安装软件的方法也有差异,这里笔者使用centos系统来进行软件的安装,以及网站环境的搭建(重点),这个在整个安全学习中会陪伴我们整个职业生涯,不会自己搭建网站环境,那么算不上网络安全可以入门,所以希望大家能多动手实践。
冰冰镇楼
开始前,如果你还没有装centos系统,也不知道linux的基本指令 , 或者连虚拟机都没有。。。那先请移步到以下的文章:
1.渗透前期基础—虚拟化技术了解与Linux常用指令(简写)https://blog.csdn.net/weixin_52605156/article/details/118769491?spm=1001.2014.3001.5501
2.VMware虚拟机https://blog.csdn.net/weixin_52605156/article/details/117887784?spm=1001.2014.3001.5501
1.软件包管理工具( yum )
直接把rpm安装包需要依赖文件安装好,无需额外处理
2.rpm二进制包
rpm二进制安装包是已经编译好的,类型和windows下的exe安装文件一样,直接安装即可
3.源码安装
源码安装包需编译安装,可修改源码兼容性,效率较高
上述的三种方法中,第一种方法(yum)类似于我们先通过命令下载安装包,再安装安装包,属于在线安装。第二种方法,类似于windows系统里的.exe文件,直接可以安装,与第一种方法相比,我们需要先把安装包下载到本地,然后再安装。第三种方法,当我们下载好后,里面都是源代码,我们下载完我们需要进行编译,比如像我们的windows系统,里面有.exe文件,那么我们的.exe文件也是通过编译出来的,我们人能看懂的语言叫做编程语言,而计算机需要的是机器码,我们把源代码进行编译,翻译成我们机器能看懂的机器码,我们下载好的源码基本是C/C++语言或者是汇编语言,我们可以对源码进行修改,增强源码的兼容性,进行算法优化,进行漏洞修复。我们的源码安装需要编译,而rpm包已经编译好了。初学者我们选择第一种居多,第二种也会涉及(尤其是在线安装无法安装时,但由于依赖性较强,所以有时会很麻烦),第三种方法笔者也会进行演示。
基于RPM包构建的软件更新机制,可以自动解决rpm包之间的依赖关系,所有软件包由集中的yum软件仓库提供。yum直接在云端下载软件,根据每个不同版本的系统获取不同的软件信息,按顺序下载rpm包,安装软件。
我们的软件在云端下载软件,可以根据操作系统不同版本,比较智能的选择不同版本进行安装。
yum源文件
/etc/yum.repos.d
所有yum源的默认存放目录,所有yum源文件都是以 .repo 结尾。
上图这里面有很多链接,这些链接就是在线仓库的地址。
我们如果把源地址放到国内,速度就会快很多,下图是Ubuntu的源,我们安装好Ubuntu系统后默认是国外的源,换成国内的源后就会快很多。
我们可以查找centos系统所对应的源:
链接:https://cloud.tencent.com/developer/article/1464422
笔者这里下载的是阿里云
然后我们就会发现在线仓库地址变为了阿里云,我们就可以把源理解为软件仓库。
yum软件安装命令
install -> 安装软件
update -> 升级软件
remove -> 卸载软件
clean -> 清除缓存
搜索软件 [root@localhost ~]# yum search 软件包名或描述的重要关键字
安装软件 [root@localhost ~]# yum install 要安装的软件
升级软件 [root@localhost ~]# yum update 要升级的软件
卸载软件 [root@localhost ~]# yum remove 安装的软件
我们知道我们在软件仓库找东西,我们先进行搜索,有就安装,没有就换别的安装方法。如下,我们搜索火狐浏览器是否在软件仓库里,然后我们发现一个32位的(i686),一个64位的(x86_64)。
笔者的centos上有firefox了,这里,笔者先进行卸载,再安装一遍。
我们卸载firefox:
我们再进行安装:
由于我们选用了第一种安装方法,前面也说过了,比较智能一些,所以我们直接输入firefox就可以了,它会根据系统自动匹配适合的版本进行安装,这样大大的简化了我们的流程。
上面还出现了作为依赖被安装,所谓的作为依赖,其实就是我们安装一些软件时,可能由于它需要其他的组件才能正常启动,所以又安装了别的程序。
我们再进行升级:
由于笔者的火狐刚安装上,所以这里就显示没有升级所用的一些程序可用。
显示软件信息:
[root@localhost ~]# yum info 软件包名或描述的重要关键字
显示操作系统已经安装过的软件:
[root@localhost ~]# yum list installed
升级所有软件:
[root@localhost ~]# yum update
检查可更新的软件:
[root@localhost ~]# yum check-update
我们输入yum info firefox
我们下载完之后,可能不知道下载到那个目录里了,我们也可以用命令查找which 软件的名称:
RPM类型的文件在安装的时候,会先去读取文件内记载的设置参数内容,然后将该数据用来比对Linux系统的环境,以找出是否有属性相依的软件尚未安装的问题。
RPM使用自动化安装软件,比较类似windows下的.exe需要下载安装包,但是它安装过程中会有很多的依赖问题。
RPM包的命名格式:
对于一个rpm包来说,都是由 " - " 和 " . " 构成的 , 基本上由以下几部分组成:
包名、版本信息、发布版本号、运行平台,当出现 noarch 时,代表软件可以平台兼容。
RPM包命名格式:包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
i386 —386以上的计算机都可以安装
i586 —686 以上的计算机都可以安装
i686 —奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多
x86_64 — 64 位 CPU 可以安装
noarch — 没有硬件限制
查询已安装的RPM软件信息,结合不同的字选项完成不同的查询格式 :
rpm -q[子选项]软件名
-q :
仅查询,指定的软件是否有安装
-qa :
列出已经安装在本机 Linux系统上面的所有软件名称
-ql :
列出该软件所有的文件与目录所在完整文件名( list )
-qR :
列出与该软件有关的相依软件所含的文件(Required 的意思)
通过RPM安装软件:
[root@localhost ~]# rpm -ivh package_name --force --nodeps
-i : 安装指定的rpm文件
-v : 显示安装过程中的详细信息
-h : 以" # "号显示安装的进度
-U : 用指定的 .rpm 文件升级同名包
-e : 卸载软件
我们可以先下载好本地的包,然后再安装,但是,我们实际上不是把linux当windows使用,我们大多数其实是在非图形化界面进行操作的,所以面对那个黑框框,我们就需要用命令去做事情,比如下图,我们先在真机里找到地址,复制下来,然后粘贴到虚拟机里去
我们使用wget命令,先把包下载下来,然后进行安装,我们可以使用pwd命令,进行查看安装到的目录。
然后我们进行安装命令:
我们可以发现,有大量的依赖关系都检测失败了,这种情况大多数我们可以换成源码安装,不过我们也可以想办法把这些依赖关系都解决。
这里我们进行依赖问题解决:
首先我们发现有一个什么.so.30的文件没有:
我们先强制安装一波,看看它提示我们什么:
显示缺少一个什么文件,我们去查找错误,借助谷歌或者百度,查阅后初步感觉可能和centos的共享库有关,我们继续查找(此处省略n个错误步骤),先看一下这个缺失的东东是放在什么地方的,使用命令:
我们发现,我们现在的这个版本里面没有那个so.30的版本,所以下面的目标就是怎么把它整进去,继续查阅资料,发现可以使用链接来解决问题,参考链接:https://www.runoob.com/linux/linux-comm-ln.html,来我们输入命令:
我们发现哈,第一个错误已经不在了,但是又出现了新的问题,.so.6的文件出现了问题,我们继续查找资料,似乎又是共享库的问题,解决方案:https://www.cnblogs.com/effortsing/p/10363921.html,然后根据提示,根据你系统自己的所需文件,进行安装操作即可
源代码安装就是tar包安装,源代码就是别人开发好的软件程序,没有经过加密直接公布出来的 , 源代码不能直接运行,必须将源代码编译成可执行的二进制文件才可以运行,所以源代码安装比较麻烦,需要编译.
使用源代码安装软件的优点:
1.获取最新的软件版本,及时修复bug
2.根据用户需要,灵活定制软件功能
什么时候使用此安装方式???
a.安装较新版本的应用程序,软件的最新版本大都以源码形式发布
b.当前安装的程序无法满足需求时,编译安装可由用户自行修改、定制功能
需要为应用程序添加新功能时,用户可以重新配置、自由修改源代码,加入新的功能
我们用源码安装可以安装到最新的版本,用户也可以自定义功能,笔者举个例子,大家双十一肯定会多多少少看看淘宝啥的,买不买的,看看总会有,当访问量过大时,我们的开发维护人员就可以通过修改源码里的配置,从而达到容纳更多的访问量的目的,在大公司,尤其是一些比较大的项目,基本都会选择源码安装方式。
1 : tar解包
解压缩源代码包到指定的目录
2: ./configure
配置生成makefile文件
3: make编译生成可执行的二进制文件
4: make install安装
复制二进制文件到系统,配置应用环境
我们打开刚才的虚拟机安装好的压缩包:使用解包命令
我们会发现有一堆.h啊,.c之类的文件,我们感觉似乎是和c语言有关系的,我们进入再看一看,我们随便选一个文件进入,使用命令:vim netkey.c(为了方便查看,我们使用vim查看),如下,确实是一行行代码所写:
configure可以检测当前系统环境是否适合编译,起到检测作用,我们要认真去看后面的检测结果。
这里提示我们缺少C++的测试环境,我们的linux系统是gcc的编译环境,我们先检查一下我们的系统有没有安装gcc的编译环境。
然后我们继续解决我们的问题,查阅资料,尝试安装C++编译器:
然后我们再用configure检测一下,发现又出现了新的错误:
再次查找资料,尝试安装对应的程序:
再次运行,成功!
使用configure命令再次检查,发现又有了新的问题,我们按上面的方法继续执行命令:
然后再次使用configure命令检测,笔者发现又有了一个错误(雨越下越大了…):
继续查资料,继续修改:
注意:1.安装前,仔细阅读源码目录下的README或者INSTALL文件
2 ./configure配置:
首先跳转到源码的解压目录,configure实际上是一个脚本文件,在当前目录中键入"./configure"。这一步配置指定安装目录,安装模块等,可以通过选项只安装需要的,这一步还会检查编译环境是否满足。如果这一步没有报错就可以继续进行了,如果这一步报错,必须解决好了才可以进行下一步。
当检测通过后,下一关就是编译了:
1.如果configure 过程正确完成,那么在源码目录,会生成相应的 Makefile文件
2.Makefile文件是一组文件依赖关系以及编译链接的相关步骤,make只是一个通用的工具
3.make 会根据 Makefile 中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件,最后再使用链接器生成最终的可执行程序
4.简单的说就是将源代码文件编译成二进制文件
我们直接使用make命令,就是编译当前文件下的makefile文件,你也可以指定编译其他文件,加上名称即可。如果编译没问题,他就是把C语言给编译成了二进制形式,系统不会提示错误:
1.当上面两个步骤正确完成,代表着编译链接过程已经完全结束,最后要做的就是将可执行程序安装到正确的位置在这个步骤,普通用户可能没有相关目录的操作权限,最好切换到root账号。
2.如果在configure阶段没有使用"–prefix=/xxx/”指定应用程序的安装目录,那么应用程序一般会被默认安装到/usr/local/bin。
3.简单的说,就是将编译好的二进制文件复制到相应的目录。
软件可以执行操作了:
之后我们就可以测试或者删除等等操作了,笔者就不演示了
启动安装好的服务进行测试:
[root@localhost ~]#安装目录/bin/apachectl start
删除安装产生的临时文件:
[root@localhost lftp-4.9.2]# make clean
卸载已安装的程序:
前提是makefile文件指定过uninstall,如果makefile没有uninstall,则需要手动删除
[root@localhost lftp-4.9.2]# make uninstall
LAMP环境概述:
LAMP : Linux + Apache + Mysql + PHP
LAMP是一种常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台
LAMP的组件:
Linux : Linux处在最底层,提供操作系统。其它组件运行于Linux之上,但不一定局限于Linux,也可以在Windows上运行
Apache : Apache位于第二层,它是一个Web服务平台,提供可让用户获得 Web页面的机制。
MySQL:是最流行的开源关系数据库管理系统,是LAMP的数据存储端
PHP:是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合web开发
apache环境搭建
使用yum搭建LAMP环境
安装Apache环境
安装Apache和扩展
[root@localhost 桌面]# yum -y install httpd httpd-devel httpd-manual mod_ssl
为了不用每次开机都输入一次命令启动阿帕奇,我们使用开机自启动命令去方便我们自己的操作:
设置为开机自启动
[root@localhost /]# systemctl enable httpd
mysql环境搭建
笔者恢复了3次快照,在网上找了大量的方法,一遍一遍入坑,终于成功了,这里笔者就把大佬的文章放这里了,大家跟着一步步搭建,有问题在评论区留言。https://blog.csdn.net/baidu_32872293/article/details/80557668
(这里笔者就不一步一步截图了,直接上成功的截图)
PHP环境搭建
安装PHP环境
1.安装PHP 5和扩展包
[root@localhost html]# yum -y install php php-mysql php-common php-gd php-mbstring php-mcryptphp-devel php-xml
2.安装完成后重启httpd服务
[root@localhost html]# systemctl restart httpd
3.安装完成后在/var/www/html下新建一个1.php文件 php
phpinfo( );
?>
安装成功!!!
扩展:
LNMP环境介绍
对于LAMP环境中的Apache服务器,可以使用nginx来替代 nginx + php-fpm + mysql安装PHP和扩展包
Nginx服务器∶
Nginx是一款轻量级的高性能Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好使用Nginx服务器的代表网站用户有:百度、"京东、新浪、网易、腾讯、淘宝等
LAMP的环境搭建好后,关于使用我们之后再细说,这里先把环境搭好,掌握软件安装方法是本文的重点,更重要的是学会使用搜索引擎去解决我们遇到的问题,因为每个人的系统可能都不一样,笔者没法把所有版本的环境搭建方法都列举出来,希望大家学会自己查资料,不断去试错,而不是想着像windows环境下我们用小皮面板一键搭建一样容易。
文中若有错误,请大家及时指出,如果有什么问题,欢迎大家在评论区留言,感谢大家的支持哈。
“不要羡慕大佬,因为他们只会抢你的工作。”