linux操作学习(六)

配置软件仓库

软件仓库是一种能进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术。可以把Yum或DNF想象成是一个硕大的软件仓库,里面保存有几乎所有常用的工具,而且只需要说出所需的软件包名称,系统就会自动为您搞定一切。

既然要使用软件仓库,就要先把它搭建起来,然后将其配置规则确定好才行。

Yum与DNF软件仓库的配置文件是通用的,也就是说填写好配置文件信息后,这两个软件仓库的命令都是可以正常使用

  1. 进入/etc/yum.repos.d/目录中(因为该目录存放着软件仓库的配置文件)
  2. 使用vim编辑器创建一个名为centos.repo的新配置文件(文件名随意,但是后缀必须为.repo)逐项写入下面的配置参数并保存退出.
    • 仓库名称:具有唯一性的标识名称,不应与其他软件仓库发生冲突
    • 描述信息(name):可以是一些介绍性的词,可以使用FTP或者HTTP下载,也可以是本地文件(需要在后面添加file参数)
    • 是否启用(enabled):设置此源是否可用;1为可用,0为禁用
    • 是否校验(gbgcheck):设置此源是否校验文件;1为校验,0为不校验
    • 公钥位置(gbgkey):若上面的参数开启了校验功能,则此处为公钥文件位置.若没有开启,则省略不写
  3. 按照配置参数中所填写的仓库位置挂载光盘,并把光盘挂载信息写入/etc/fstab文件中
  4. 使用”dnf install httpd -y”命令检查软件仓库是否已经可用

安装httpd(可能不对)

image-20220324164851853

启动httpd服务程序并将其加入到开机启动项中,使其能够随着系统的开机而运行,从而持续为用户提供web服务

image-20220324165010728

打开浏览器访问80端口

image-20220324165601382

配置服务文件参数

在linux系统中配置服务,其实就是在修改服务的配置文件.因此还需要知道这些配置文件的所在位置及其用途.

Linux系统中的配置文件

作用 文件名称
服务目录 /etc/httpd
主配置文件 /etc/httpd/conf/httpd.conf
网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log

主配置文件中保存的是最重要的服务参数,一般会被保存到/etc目录中以软件名称命名的一个文件夹中,名字为”服务名称.cong”,例如治理的”/etc/httpd/conf/httpd.conf”

打开配置文件,所有以(#)开始的行都是注释行,其目的是对httpd服务程序的功能或者某一行参数进行介绍.

在httpd服务程序的主配置文件中,存在三种类型的信息:注释行信息 全局配置 区域配置

image-20220324170318342

全局配置参数就是一种全局性的配置参数,可以用作于所有的子站点,即保证了子站点的正常访问,也有效降低了频繁写入重复参数的工作量.区域配置参数则是单独针对没做独立的子站点进行设置的.

配置httpd服务程序时最常用的参数以及用途描述

参数 作用
ServerRoot 服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Listen 监听的IP地址与端口号
DirectoryIndex 默认的索引页页面
ErrorLog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默认为300秒

DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是/var/www/html(即把网站数据存放到这个目录中);而当前网站普通的首页面名称是index.html,因此可以向/var/www/html/index.html文件中写入一段内容,替换掉httpd服务程序的默认首页.

image-20220324173710373

image-20220324173720024

在默认情况下,网站数据保存在/var/www/html目录中,如果想把保存网站数据的目录修改为/home/wwwroot目录

  1. 创建网站数据的保存目录,并创建首页文件

  2. 打开httpd服务程序的主配置文件,将用于定义网站数据保存路径参数DocumentRoot修改为/home/wwwroot,同时还需要将用于定义目录权限的参数Directory后面的路径也修改为/home/wwwroot.配置文件修改完毕之后即可保存并退出image-20220324174919017

  3. 重新启动httpd服务程序并验证效果image-20220324175153057

使用LNMP架构部署动态网站环境

源码包程序

源码包的可移植性非常好,几乎可以在任何Linux系统中安装使用,而RPM软件包是针对特定系统和架构编写的指令集,必须严格地符合执行环境才能顺利安装(即只会去“生硬地”安装服务程序)。

使用源码包安装服务程序时会有一个编译过程,因此能够更好地适应安装主机的系统环境,运行效率和优化程度都会强于使用RPM软件包安装的服务程序。也就是说,可以将采用源码包安装服务程序的方式看作是针对系统的“量体裁衣”

  1. 下载及解压源码包文件,为了方便在网络中传输,源码包文件通常会在归档后使用gzip或者bzip2等格式进行压缩,因此一般会就要.tar.gz或者.tar.bz2的后缀,想要使用源码包安装服务程序,必须先把里面的内容解压出来,然后再切换到源码包文件的目录中image-20220324181257153
  2. 编译源码包代码,在正式使用源码包安装服务程序之前,还需要使用编译脚本针对当前系统进行一系列的评估工作,包括对源码包文件 软件之间及函数库之间的依赖关系 编译器 汇编器及链接器进行检查.我们还可以根据需要来追加 –prefix参数,以指定稍后的源码包程序的安装路径,从而对服务程序的安装过程更加可控.当编译工作结束之后,如果系统环境符合安装要求,一般会自动在当前目录下生成一个makefile安全文件image-20220324181733125
  3. 生成二进制安装程序,刚生成的Makefile文件中会保存与系统环境 软件依赖关机和安装规则等相关的内容,接下来便可以使用make命令来根据Makefile 文件内容提供的合适规则编译生成出真正可以提供给用户安装服务程序的二进制可执行文件了image-20220324182005993
  4. 运行二进制的服务程序安装包 由于不需要在简称系统环境,也就不需要在编译源码 ,因此运行二进制的服务程序安装包应该速度最快的步骤.如果在源码包编译阶段使用了 –prefix参数,那么此时服务程序就会被安装到那个目;如果没有自行使用参数定义目录的话,一般会被默认安装到/usr/local/bin目录image-20220324182246043
  5. 清理源码包临时文件,由于在安装服务程序的过程中进行了代码编译的工作,因此在安装后目录中会遗留下很多历史垃圾文件,本着尽量不要浪费磁盘存储空间的原则,可以使用make clean命令对临时文件进行彻底的清理image-20220324182452218

LNMP动态网站架构

LNMP动态网站部署架构是一套有linux + Nginx + MySQL + PHP组成的动态网站解决方案.LNMP中的字母L是linux系统的意思.

在使用源码包安装服务的时候需要先让安装主机具备编译程序源码的环境,这需要具备c语言 c++语言 perl语言的编译器,以及支持常见的编译支持数据库程序,因此配置软件仓库

image-20220325125441652

接着还需要从外部网络来获取Nginx MySQL PHP 及WordPress等一系列的安装包.因此需要配置虚拟机使链接到互联网

image-20220325125649099

可以直接使用wget命令下载这些源码包文件.这里将其放到lnmp目录下保存

[root@linuxprobe ~]# mkdir /lnmp
[root@linuxprobe ~]# cd /lnmp
[root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/rpcsvc-proto-1.4.tar.gz
[root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/nginx-1.16.0.tar.gz
[root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/mysql-8.0.18.tar.xz
[root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/php-7.3.5.tar.gz
[root@linuxprobe lnmp]# wget https://www.linuxprobe.com/Software/wordpress.tar.gz
[root@linuxprobe lnmp]# ls
rpcsvc-proto-1.4.tar.gz nginx-1.16.0.tar.gz mysql-8.0.18.tar.xz
php-7.3.5.tar.gz wordpress.tar.gz

image-20220325130303343

rpcsvc-proto是一款包含rcpsvc协议文件的支持软件包名称.rcpsvc协议在或许nginx与mysql服务程序的部署过重中都需要被调用到.想要通过源码包安装服务程序,就一定要严格遵循上面的安装步骤,下载及解压源码包文件 编译源码包代码 生成二进制安装程序 运行二进制的服务程序安装包.

image-20220325130504871

配置nginx服务

nginx服务是一款优秀的部署动态网站的轻量级服务程序

  1. 创建用于管理网站服务的系统账户,这次在新建账户时应使用-M参数不创建对应的家目录,以及使用-s参数指定登录后的shell解释器为/sbin/nologin,确保任何人不能通过这个账号登录主机image-20220325130948624

  2. 编译nginx网站服务程序,为了能够让网站服务支持更多的功能,需要在编译过程中添加二外的参数,其中较为重要的是使用prefix参数指定服务将被安装到那个目录,方便后面找到和调用它,其次,考虑到https协议使用越来越广泛,索引这里用with-http_ssl_module参数来开启nginx服务的ssl加密模块,以便以后开启https协议功能image-20220325131441444

    相对来说,编译脚本文件(configure)比生成二进制文件(make)要快,而安装程序(make install)则是最快的,它相当于以双击的方式运行二进制安装包,在编译 生成和安装三个阶段中,屏幕上会输出各式各样的信息,主要包含软件包的概要情况,当前系统的软件依赖关系,以及是否有条件及进行安装操作,但只要进程没有被强行终止,或是没有输出明显的报错信息,则都是正常情况.

  3. 安装完成后进入最终配置阶段,既然在编译环境中使用prefix参数指定了安装路径,那么nginx服务程序的配置文件一定在/user/local/nginx目录中

    接下来修改/usr/local/nginx/conf/nginx.conf文件的第二行注释删除,然后再后面写上负责运行网站服务程序的账户名称和用户组名称,这里的就是由nginx用户及nginx用户组负责管理网站服务image-20220325132523860

    接着修改第45行的首页面文件名称,在里面添加index.php的文件.这个文件也是让用户浏览网站时第一眼看到的文件,也叫首页文件

    最后在删除65~71行前面的注释符#来启用虚拟主机功能,然后将第69行后面对应的网站根目录修改为/usr/local/nginx/html,其中的fastcgi_script_name参数用于指代脚本名称,也就是用户请求的url.只有想你想填写正确了,才能使nginx服务正确解析用户请求,否则访问的页面会提示 “404 Not Found”错误

    image-20220325133221548

  4. 通过编译源码的方式安装的服务默认不能被systemctl命令所管理,而要使用nginx服务本身的管理工具进行操作,相应命令所在的目录时/usr/local/nginx/sbin.由于使用绝对路径的形式输入命令未免会太麻烦,建议将/usr/local/nginx/sbin路径添加到PATH变量中,让bash解释器在后续执行命令时自动搜索到他,然后再source命令后加载配置文件,让参数立即生效.下来就只需要输入nginx命令即可启动网站服务了image-20220325133834331

    image-20220325134140481

配置mysql服务

在使用软件仓库安装服务程序时,系统会自动根据RPM软件包中的指令集完成软件配置等工作,但是一旦选择使用源码包的方式来安装,这一切就需要自己来完成了.对于mysql数据库来说,我们需要在系统中创建一个mysql的用户,专门用于负责运行mysql数据库.要记住将这类用户的bash终端设置成nologin解释器

准备配置mysql服务

image-20220325134631818

  1. 解压mysql安装软件包,将解压出来的程序目录改名并移动到/usr/local目录下,对其进行初始化操作后便可使用,要注意的是以.tar.xz结尾的压缩包软件,不应用z参数进行解压image-20220325135022743

  2. 在生产环境中管理mysql数据库是,有两个比较常用的目录,一个是/usr/local/mysql目录,这里用于保存mysql数据库程序文件的路径.还有一个就是/usr/local/mysql/data目录,他用于存储数据库的具体内容,每个数据库的内容会被单独存放到一个目录内.对于实际数据库文件的data目录,用户需要先手动创建出来image-20220325135436430

  3. 初始化mysql服务程序,对目录进行授权,确保数据能够被mysql系统用户读取,在初始化阶段,应使用mysqld命令确认管理mysql数据库服务的用户名称 数据保存目录 及编码信息,在信息确认无误后开始进行初始化.在初始化最后阶段,系统会给用户分配一个初始化的临时密码(w+an-r3kGpuD)image-20220325135815903

  4. 与nginx服务相似,mysql数据库的二进制可执行命令也单独存放在自身的程序目录/usr/local/mysql/bin中.若每次在执行命令之前都要切换到这个目录,则有些麻烦,要加入到PATH变量中image-20220325140200150

    在这样设置之后,几遍返回到源码目录.也可以继续执行mysql数据库的管理命令.接着将启动脚本mysql.server放入带/etc/init.d目录中,让服务器每次重启后都能自动启动数据库,并给予可执行权限

    libtinfo.so.5文件是mysql数据库在8.0版本后新添加的重要函数库文件,但默认不存在,需要将libtinfo.so.6.1文件复制过来或者作为链接文件才能正常启动image-20220325140912391

  5. 执行mysql数据库服务启动文件,并进行初始化工作,为了安全,mysql自8.0版本起不在允许用户使用临时密码来管理数据库内容,也不能进行远程控制,用户必须修改初始化密码后才能使用mysql数据库.image-20220325143136787

    出现报错信息

    image-20220325143301039

    检查系统是否安装过mysql。

    rpm格式安装的mysql卸载方式

    rpm -qa|grep -i mysql

    rpm -e mysql-5.1.47-4.el6.x86_64 –nodeps

    说明:-e参数表示删除 –nodeps表示不校验依赖关系
    主要卸载内容一般包括以下包
    mysql-5.1.47-4.el6.x86_64
    mysql-connector-odbc-5.1.5r1144-7.el6.x86_64
    mysql-libs-5.1.47-4.el6.x86_64
    mysql-devel-5.1.47-4.el6.x86_64
    mysql-server-5.1.47-4.el6.x86_64

    二进制包格式安装的mysql卸载
    #停掉mysql
    service mysql stop
    #查看状态
    service mysql status


    rm -rf `find / -name mysql`

    之后重新安装image-20220325154904459

    但是这样还不行,需要切换到mysql数据库中,修改user表单的密码值image-20220325155418264

    先建立一个数据库image-20220325155507947

配置php服务

  1. 解压php安装包软件并编译安装,在编译期间,需要使用profix参数指定安装路径,使用–with-mysqli等参数开启对数据库的支持模块,为后面的在线安装网站做好准备image-20220325155858960

    生成二进制文件并进行安装

  2. 将生成的php服务配置文件复制到安装目录中(/usr/local/php),让其生效.现在主配置文件有了,接下来还需要php-fpm的配置文件,在/usr/local/php/etc/目录中有提供,只需复制就好image-20220325160156873

    复制一个模板文件到php-fpm.d的目录中,用于后续控制网站的连接性能image-20220325160239059

  3. 把php服务加入到启动项中,使其重启后依然生效image-20220325160318868

  4. 由于php服务程序的配置参数会对web服务的运行环境造成影响,如果默认开启了一些不必要的高危功能(如允许用户在网页中执行linux命令).因此需要编辑phpini配置文件,在第310行的disable_functions参数后面加上要禁止的功能.下面推荐禁止的.image-20220325160605094

  5. 开启php服务image-20220325160636276

搭建wordpress博客

为了检验lnmp动态网站架构环境是否配置妥当,可以在上面部署wordpress博客系统,然后查看效果.如果能在lnmp动态网站环境中成功安装并使用wordpress网站系统,也就意味着这套机构是可以使用的.

把nginx服务程序根目录的内容清空后,将wordpress解压后的文件复制进去

image-20220325161718333

为了能够让网站文件被Nginx服务程序顺利读取,应设置目录所有权的身份及可读写的权限

image-20220325161732077

启动nginx服务,打开本机ip

image-20220325162055068

单击图20-4中的“现在就开始”按钮,在随后出现的界面中依次输入刚刚建立的数据库名称、用户名及重置过的密码值。由于WordPress会要求用户自行创建好数据库,因此请确保网页中填写的数据库名称与刚才创建的一致,

image-20220325162152640

image-20220325162339012

image-20220325162420730