Linux高级管理-搭建网站服务
在Ihternet 网络环境中,Web 服务无疑是最为流行的应用系统。有了Web站点,企业可以充分 展示自己的产品,宣传企业形象。Web站点还为企业提供了与客户交流、电子商务交易平台等丰富 的网络应用。部署与维护Web 服务是运维工程师必须掌握的一个技能。 本章将介绍著名的Web网站服务—“Apache HTTP Server”的安装及httpd服务的基本配置。
Apache HTTP Server是广泛应用的Web应用系统之一,要运用好它,必须先了解它的特点及其编译安装过程。
安装httpd服务器
在配置 Apache 网站服务之前,需要正确安装好httpd服务器软件。httpd服务器的安装可以选用 RPM安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。 在实际的生产环境中,使用源码编译安装的方式要更加普遍。
1.准备工作
为了避免发生端口冲突、程序冲突等现象,建议卸载使用RPM方式安装的httpd。
把系统光盘先挂载到目录 /mnt/[root@lgcllc ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
Apache的配置及运行需要apr.pcre等软件包的支持,因此应从系统光盘镜像中预先安装这些软 件及其开发包(devel),以便提供相应的库和头文件,确保Apache的安装顺利完成。
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/expat-devel-2.1.0-10.el7_3.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/libdb-devel-5.3.21-24.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/openldap-devel-2.4.44-20.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-util-devel-1.5.2-6.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/pcre-devel-8.32-17.el7.x86_64.rpm
[root@lgcllc ~]# rpm -ivh /mnt/Packages/pcre-8.32-17.el7.x86_64.rpm
2.源代码编译及安装
(1)解包
-连接FTP把httpd-2.4.25.tar.gz下载下来
[root@lgcllc ~]# wget --ftp-user=135 --ftp-password=123.123 ftp://172.16.37.13/软件下载/y2/y2c/httpd-2.4.25.tar.gz-或者直接从主机鼠标移过来
[root@lgcllc ~]# rz -E
rz waiting to receive.挂载到/usr/src目录
[root@lgcllc ~]# tar zvxf httpd-2.4.25.tar.gz -C /usr/src
(2)配置
根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支 持等。
[root@lgcllc ~]# cd /usr/src/
[root@lgcllc src]# ls
debug httpd-2.4.25 kernels
[root@lgcllc httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-like --enable-cgi
上述配置命令中,各选项的含义如下。
--prefix:指定将httpd服务程序安装到哪个目录下,如/usr/local/httpd。
--enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力。
--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。
--enable-cgi:启用CGl脚本程序支持,便于扩展网站的应用访问能力。
(3)编译及安装
完成配置以后,执行“make"命令进行编译,将源代码转换为可执行的程序;然后执行"make install” 命令完成最后的安装过程;将编译完的httpd程序及相关目录、文件复制到预设的安装目录(由配置 时的“一-prefix”选项指定)。其中“make”的过程可能会需要较长的时间。
[root@lgcllc httpd-2.4.25]#make
[root@lgcllc httpd-2.4.25]#make install
3.确认安装结果
由于指定的安装目录为/usr/local/httpd,因此 httpd服务的各种程序,模块、帮助文件等都将复制到此目录下。
[root@lgcllc ~]# ls /usr/loca/httpd/
bin cgi-bin error icons logs manual
build conf htdocs include man modules
在安装后的/usr/local/httpd目录下,主要子目录的用途如下.
/usr/local/httpd/bin:存放httpd服务的各种执行程序文件,包括主程序httpd、服务控制工 具apachectl等。
/usr/local/httpd/cgi-bin:存放各种CGl程序文件。
/usr/local/httpd/logs:存放httpd服务的日志文件。
/usr/local/httpd/conf:存放httpd服务的各种配置文件,包括主配置文件httpd.conf、增强 配置子目录 extra 等。
/usr/local/httpd/htdocs:存放网页文档,包括默认首页文件 index.html等。 /usr/local/httpd/modules:存放httpd 服务的各种模块文件。
4.优化执行路由
通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接,添加超链接。
[root@lgcllc httpd-2.4.25]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@lgcllc httpd-2.4.25]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
这样,再执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd-v”命令(用于查看 程序版本)时,即相当于执行“/usr/local/httpd/bin/httpd-v”命令。
[root@lgcllc httpd-2.4.25]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Dec 9 2023 01:49:29
5.添加httpd系统服务
CentOS 7系统下,将编译安装的程序添加为系统服务有两种方式:①通过chkconfig命令添加为 系统服务,然后由systemctl进行管理;②在/lib/systemd/system/目录下,手动编写以.service结尾 的单元(unit)配置文件。
(1)使用chkconfig添加系统服务
若希望将httpd添加为系统服务,以便通过chkconfig进行管理,需要建立可控的服务脚本,例如,可将apachectl脚本复制为/etc/init.d/httpd,并在文件开头添加chkconfig识别配置,然后将其 添加为标准的Linux系统服务。
[root@lgcllc ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@lgcllc ~]# vim /etc/init.d/httpd#!/bin/sh#chkconfig: 35 85 21 //服务识别参数,在级别3、5中启动;启动和关闭//的顺序分别为85、21#description: Startup script for the Apache HTTP Server //服务描述信息[root@lgcllc ~]# chkconfig --add httpd //将httpd添加为系统服务
(2)建立[service].service配置文件
在/lib/systemd/system/目录下,建立一个以.service结尾的单元(unit)配置文件,用于控制由 systemd控制或监控的htpd服务。配置文件主要分为三个部分,控制单元[Unit]的定义,服务[Service] 的定义以及安装部分[Install],具体内容如下所示。
[root@lgcllc ~]# vim /lib/systemd/system/httpd.service
写入下面代码:
[Unit]
Description=The Apache HTTP Server
After=network.target[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Intall]
WantedBy=graphical.target
配置文件的各配置项的作用如下所示
> Description:设置服务单元描述字符串。
> After:设置服务单元的启动先后顺序。例如,httpd.ervice 单元文件中出现“After= network.target“表示启动时先启动network.target.后启动httpd.service,关闭时顺序相反。 与After字段相对应的还有一个Before字段,如htpd.service 单元文件中出现 “Before=network.target”表示启动时先启动httpd.service,后启动network.target.
>Type:设置服务进程的启动类型.需要注意的是,当启动类型为forking时需要同时设置PIDFile 配置项,以帮助systemd准确定位到服务的主进程,
>PIDFile:设置服务的守护进程的PID文件.
>ExecStart:设置服务启动时执行的命令。
>ExecReload:设置服务重新加载时执行的命令。
>KillMode:设置在单元停止时,杀死进程的方法。
>process表示仅杀死主进程。
>Restart:设置服务进程正常退出.异常退出、被杀死,超时的时候,是否重启该服务.on-failure 表示仅在进程异常退出时重启。
>RestartSec:设置在重启服务前暂停多长时间,默认值是100毫秒(100ms). > WantedBy:设置该服务所在的Target(运行目标)。
>WantedBy=graphical.target(图形界面多 用户系统)是指,httpd 所在的Target是graphical.target,这个设置非常重要,因执行systemctl enable httpd.service”命令时,httpd.service 的符号链接就会放在/etc/systemd/system 目录 下的graphical.terget.wants子目录中。在系统进入graphical,target 运行目标时,该目录下的 所有服务均开机启动。该配置项常用的Target 除了 graphical.target之外,还有multi-user.target (非图形界面多用户系统)。
[root@lgcllc ~]# systemctl enable httpd.service
[root@lgcllc ~]# systemctl is-enabled httpd.service
enabled
完成结果:
查看/usr/local/httpd/htdocs/index.html 可以看到网页的内容
[root@lgcllc ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
客户机直接访问服务器IP就可以进入

相关文章:
Linux高级管理-搭建网站服务
在Ihternet 网络环境中,Web 服务无疑是最为流行的应用系统。有了Web站点,企业可以充分 展示自己的产品,宣传企业形象。Web站点还为企业提供了与客户交流、电子商务交易平台等丰富 的网络应用。部署与维护Web 服务是运维工程师必须掌握的一个技…...
Windows 系统,TortoiseSVN 无法修改 Log 信息解决方法
使用SVN提交版本信息时,注释内容写的不全。通过右键TortoiseSVN的Show log看到提交的的注释,右键看到Edit log message的选项,然而提交后却给出错误提示: Repository has not been enabled to accept revision propchanges; ask …...
编译 Android gradle-4.6-all.zip 报错问题记录
编译 Android gradle-4.6-all.zip 报错问题记录 方法一:替换资源:方法二:修改源方法三:修改版本 编译时候无法下载 gradle-4.6-all Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip 方法一…...
Linux系统调试课:Valgrind 内存调试
文章目录 一、为什么要学会Valgrind二、什么是内存泄露三、Valgrind的移植四、Valgrind相关参数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Valgrind 是一个开源的内存调试和性能分析工具,用于帮助开发者找出程序中的内存错误,如内存泄漏、使用未初始化的内存、非…...
python主流开发工具排名,python开发工具有哪些
本篇文章给大家谈谈python的开发工具软件有哪些,以及python主流开发工具排名,希望对各位有所帮助,不要忘了收藏本站喔。 python中用到哪些软件 一、Python代码编辑器1、sublime Textsublime Text是一款非常流行的代码编辑器,支持P…...
Spring Boot Async:从入门到精通,原理详解与最佳实践
Spring Boot 的异步功能(Async)允许我们将某些任务异步执行,而不会阻塞主线程。这对于处理耗时的操作非常有用,如发送电子邮件、生成报表、调用外部 API 等。通过异步处理,我们可以释放主线程,让它继续处理…...
oracle 19c创建db_link名称带.com域名问题处理
文章目录 一、修改PDB的global_name二、重启数据库实例三、修改domain后重试 一、修改PDB的global_name SYSorcl1>sho pdbsCON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ----------2 PDB$SEED …...
银行卡二要素API的应用案例:从在线购物到金融投资
引言 随着互联网技术的不断发展,人们的金融需求也在不断增加。随之而来的是各种新型金融服务的涌现,让用户的金融体验更加便利快捷。其中,银行卡二要素API的应用,则为用户的金融体验和安全性提供了极大的保障。 银行卡二要素API…...
MySQL 忘记root密码后重置密码操作
在忘记 MySQL 密码的情况下,可以通过 --skip-grant-tables 关闭服务器的认证,然后重置 root 的密码,具体操作步骤如下。 步骤 1):关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2):输入mysqld -…...
开源电子合同签署平台小程序源码/电子文件签字+在线合同签署系统源码/电子合同小程序源码
源码简介: 开源电子合同签署平台小程序源码,它是电子文件签字在线合同签署系统源码/电子合同小程序源码 目前商业端和开源端一致,免费开源状态! 聚合市场上各类电子合同解决方案商,你无需一个一个的对接电子合同厂商…...
J.408之数据结构
J-408之数据结构_北京信息科技大学第十五届程序设计竞赛(同步赛) (nowcoder.com) 思维好题,直接用两个set存没出现的数字就好了 // Problem: 408之数据结构 // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/68572/J // Me…...
前端食堂技术周刊第 107 期:技术播客节、Deno Cron、FEDAY、XState v5、Electron 2023 生态系统回顾
美味值:🌟🌟🌟🌟🌟 口味:烤椰拿铁 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...
三防平板|手持终端PDA|8寸/10寸工业三防平板电脑主板方案定制
近年来,随着科技的快速发展,三防平板成为了各行各业中不可或缺的工具。三防平板采用IP67级别的防护设计,通过了多项测试标准,如国标和美标,具备防水、防摔、防尘、防撞、防震、防跌落以及防盐雾等多重防护功能。因此&a…...
【C语言】动态内存管理(C语言的难点与精华,数据结构的前置知识,你真的掌握了吗?)
文章目录 引言一、为什么要动态内存分配二、动态内存分配的相关函数2.1 malloc2.2 free2.3 calloc2.4 realloc 三、常见的动态内存的错误3.1 对NULL指针的解引用3.2 对动态内存越界访问3.3 对非动态内存释放3.4 对动态内存部分释放3.5 对动态内存多次释放3.6 未对动态内存释放&…...
最长子序列问题(LCS)--动态规划解法
题目描述: 如果Z既是X的子序列,又是Y的子序列,则称Z为X和Y的公共子序列。 如果给定X、Y,求出Y及其长度。 示例: 输入 ABCPDSFJGODIHJOFDIUSHGD OSDIHGKODGHBLKSJBHKAGHI 输出 SDIHODSHG 9 分析: c…...
实时流式计算 kafkaStream
文章目录 实时流式计算Kafka StreamKafka Streams 的关键概念KStreamKafka Stream入门案例编写SpringBoot 集成 Kafka Stream 实时流式计算 一般流式计算会与批量计算相比较 流式计算就相当于上图的右侧扶梯,是可以源源不断的产生数据,源源不断的接收数…...
西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告
一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) 预习计算内容根据运放的非线…...
Ubuntu与Windows通讯传输文件(FTP服务器版)(没用的方法,无法施行)
本文介绍再Windows主机上建立FTP服务器,并且在Ubuntu虚拟机上面访问Windows上FTP服务器的方法 只要按照上图配置就可以了 第二部:打开IIS管理控制台 右击网站,新建FTP站点。需要注意的一点是在填写IP地址的时候,只需要填写Window…...
2024年AI视频识别技术的6大发展趋势预测
随着人工智能技术的快速发展,AI视频识别技术也将会得到进一步的发展和应用。2023年已经进入尾声,2024年即将来临,那么AI视频识别技术又将迎来怎样的发展趋势?本文将对2023年的AI视频技术做一个简单的盘点并对2024年的发展趋势进行…...
一篇文章了解JDK的前世今生
我们每天都在开发Java,每天都在使用JDK,那么我们了解JDK的发展史吗,这篇文章将带你深入了解JDK的发展史。 JDK(Java Development Kit)是Java开发者工具包,是用于编写Java程序和运行Java程序的软件开发工具集。自从1995年Java语言首次发布以来,JDK已经经历了数十年的发展…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
