保姆级Apache安装教程(非常详细)零基础入门到精通,收藏这一篇就够了

256 篇文章 2 订阅
161 篇文章 0 订阅

Apache安装

  • Step 1 创建运行时用户和组

    $ groupadd www
    $ useradd -g www www -s /sbin/nologin -M
  • Step 2 安装工具集和依赖

    $ yum install -y wget
    $ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    $ yum install -y gcc wget make libtool expat-devel pcre-devel openssl-devel libxml2-devel
  • Step 3 安装apr

    $ cd ~
    $ wget http://10.0.16.133/src/x86_64/apr/apr-1.6.5.tar.gz
    $ tar -zxvf apr-1.6.5.tar.gz
    $ cd apr-1.6.5
    $ sed -i s/"RM='\$RM'"/"RM='\$RM -f'"/ configure
    $ ./configure --prefix=/usr/local/apr
    $ make
    $ make install
  • Step 4 安装apr-util

    $ cd ~
    $ wget http://10.0.16.133/src/x86_64/apr/apr-util-1.6.1.tar.gz
    $ tar -zxvf apr-util-1.6.1.tar.gz
    $ cd apr-util-1.6.1
    $ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    $ make
    $ make install
  • Step 5 安装httpd

    $ cd ~
    $ wget http://10.0.16.133/src/x86_64/httpd/httpd-2.4.43.tar.gz
    $ tar -zxvf httpd-2.4.43.tar.gz
    $ cd httpd-2.4.43
    $ ./configure --prefix=/usr/local/apache \
    --with-apr=/usr/local/apr \
    --with-apr-util=/usr/local/apr-util \
    --enable-so \
    --enable-ssl \
    --enable-cgi \
    --enable-rewrite \
    --with-pcre \
    --with-zlib \
    --with-mpm=event \
    --enable-modules=most \
    --enable-mpms-shared=all
    $ make
    $ make install
  • Step 6 创建日志存放目录

    $ mkdir -pv /data/logs/apache
    $ chown -R www:www /data/logs/apache
  • Step 7 创建Apache主配置文件

$ mv /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/http.conf.default
$ mkdir -p /usr/local/apache/conf/vhost
$ cat >/usr/local/apache/conf/httpd.conf <<EOF
Listen 0.0.0.0:80
ServerRoot /usr/local/apache

# 加载模块
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
<IfModule !mpm_prefork_module>
  LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
  LoadModule cgi_module modules/mod_cgi.so
</IfModule>
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so

ServerAdmin admin@feisu.com
ServerName localhost

###############
# 日志格式定义#
###############
<IfModule log_config_module>
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %>s %b" common
  <IfModule logio_module>
      LogFormat "{\"server_ip\": \"%A\",\"client_ip\": \"%a\",\"@timestamp\": \"%{%Y-%m-%dT%H:%M:%S%z}t\",\"server_name\": \"%v\",\"mehtod\": \"%m\",\"request\": \"%U%q\", \"url\": \"%U\",\"query\": \"%q\",\"status\": \"%>s\",\"user_agent\": \"%{User-agent}i\",\"referer\": \"%{Referer}i\",\"response_time\": \"%D\",\"x_forward_for\": \"%{X-Forwarded-For}i\",\"send_bytes\": \"%I\",\"recv_bytes\": \"%O\"}" json
  </IfModule>
</IfModule>

ErrorLog /data/logs/apache/error.log
CustomLog /data/logs/apache/access.log json
LogLevel warn

###############
# Mime类型加载#
###############

<IfModule mime_module>
  TypesConfig conf/mime.types
  AddType application/x-gzip .tgz
  AddEncoding x-compress .Z
  AddEncoding x-gzip .gz .tgz
  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml
  AddType application/x-httpd-php .php
</IfModule>

###############
# 全局安全规则#
###############

# 禁止通过web访问.htaccess
<Files ".ht*">
  Require all denied
</Files>

# 隐藏Apache版本号
ServerTokens ProductOnly
ServerSignature Off

# 开启同源策略限制,只允许同域名访问
<IfModule headers_module>
  Header always append X-Frame-Options SAMEORIGIN
</IfModule>

# 禁止.ssh访问
<LocationMatch "\.ssh">
  Order allow,deny
  Deny from all
</LocationMatch>

# 禁止.git访问
<LocationMatch "\.git">
  Order allow,deny
  Deny from all
</LocationMatch>

# 限制Apache运行时用户
<IfModule unixd_module>
  User www
  Group www
</IfModule>

###########
# 虚拟主机#
###########
Include conf/vhost/*.conf
EOF
  • Step 8 创建默认虚拟主机

    $ mkdir -pv /data/wwwroot/default
    $ echo "hello world" > /data/wwwroot/default/index.html
    $ cat >/usr/local/apache/conf/vhost/0.conf <<EOF
    <VirtualHost *:80>
      DocumentRoot /data/wwwroot/default
      ServerName localhost
    DirectoryIndex index.html
    </VirtualHost>
    EOF
  • Step 9 添加系统服务

    $ cat > /usr/lib/systemd/system/httpd.service << _EOF
    [Unit]
    Description=The Apache HTTP Server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    ExecStartPre=/usr/local/apache/bin/httpd  -t
    ExecStart=/usr/local/apache/bin/httpd -k start
    ExecReload=/usr/local/apache/bin/httpd -k graceful
    ExecStop=/usr/local/apach/bin/httpd -k stop
    KillSignal=SIGKILL
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    _EOF
    
    $ systemctl daemon-reload
  • Step 10 启动服务并添加到开机自启动

    $ systemctl start httpd
    $ systemctl enable httpd
  • Step 11 添加日志切割脚本

    $ cat > /etc/logrotate.d/httpd << _EOF
    /data/logs/apache/*.log {
    daily
    rotate 15
    compress
    nodelaycompress
    ifempty
    dateext
    missingok
    postrotate
        [ -e /usr/local/apache/bin/httpd ] && /usr/local/apache/bin/httpd -k graceful &>/dev/null
    endscript
    }
    _EOF

验证

$curl http://localhosthello world

配置文件详解

配置文件详解文件位置:/etc/httpd/conf/httpd.conf

ServerRoot "/etc/httpd"     //服务器的根路径,改文件中所有涉及到的路径的根都是相对它而言的。
Listen 80       //监听的端口
Include conf.modules.d/*.conf   //包含辅助配置文件目录下的所有以.conf结尾的;;;文件(/etc/httpd/conf.modules.d/*.conf)

User apache       //运行web服务的用户
Group apache    

ServerAdmin root@localhost   //管理员邮件地址
#ServerName www.example.com:80 //服务器的名字
ServerName www.uplooking.com:80

<Directory />   ---容器,对整个目录中的东西进行设置,权限等等
  AllowOverride none
  Require all denied
</Directory>

DocumentRoot "/var/www/html"   //web服务文档根路径

<Directory "/var/www">
  AllowOverride None
   # Allow open access:
  Require all granted
</Directory>

<Directory "/var/www/html">
  Options Indexes FollowSymLinks     //Indexes:索引目录,(默认没有主页时),允许索引目录   FollowSymLinks:支持符号链接 软连接
  AllowOverride None     //和访问权限有关 可以进行认证       None --不使用认证 all--应用所有的认证指令 AuthConfig  --允许使用与认证授权相关的指令
  Require all granted   //访问控制 所有人方行
</Directory>
   
<IfModule dir_module>
  DirectoryIndex index.html   //网站索引页的名称
</IfModule>

<Files ".ht*">   //以所有.ht开头进行模式匹配不能进行访问
  Require all denied
</Files>

ErrorLog "logs/error_log"   //错误日志的设定

LogLevel warn //日志级别

<IfModule log_config_module>
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined   //日志格式规定
  LogFormat "%h %l %u %t \"%r\" %>s %b" common     //日志格式规定
  <IfModule logio_module>
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio   //日志格式规定
  </IfModule>
  CustomLog "logs/access_log" combined //访问日志
</IfModule>

<IfModule alias_module>  
   # Alias /webpath /full/filesystem/path   //给路径设置别名 意味着访问http://Server_ip/webpath时,其页面文件来自于/full/filesystem/path中
  ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"   //脚本路径的别名
</IfModule>

<Directory "/var/www/cgi-bin">  
  AllowOverride None
  Options None
  Require all granted
</Directory>

<IfModule mime_module>
  TypesConfig /etc/mime.types   //支持哪些非二进制文件
  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8   //默认字符集


#EnableMMAP off   //线程模式
EnableSendfile on   //开启进程模式(默认)

IncludeOptional conf.d/*.conf   //包含辅助配置文件目录下的所有以.conf结尾的文件(/etc/httpd/conf.d/*.conf)

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Apache Flink 是一个分布式流处理框架,它可以处理实时数据流和批处理数据。如果你想学习 Apache Flink,可以从以下几个方面入手: 1. 学习 Flink 的基本概念和架构,包括数据流、数据源、数据转换、数据汇聚等。 2. 学习 Flink 的编程模型和 API,包括 DataSet API 和 DataStream API。 3. 学习 Flink 的部署和配置,包括集群部署和单机部署。 4. 学习 Flink 的应用场景和实践,包括实时数据处理、批处理、机器学习等。 如果你是零基础入门,可以先从 Flink 的官方文档入手,了解 Flink 的基本概念和架构,然后通过实践来深入学习 Flink 的编程模型和 API。同时,可以参考一些 Flink 的教程和案例,加深对 Flink 的理解和应用。 ### 回答2: Apache Flink是一个开源的流处理框架,能对流数据进行实时处理和分析。它提供了多种处理功能,如数据流的转换、聚合、窗口计算等。在大数据时代,实时处理已经成为了一个不可或缺的需求,因此学习和掌握Flink框架具有非常重要的意义。 下面是Flink的零基础入门指南: 1. Flink的运行环境 Flink的运行环境可以分为本地模式和集群模式。在本地模式下,可以通过Flink命令自动启动一个Flink进程,进行代码测试与调试工作;在集群模式下,需要先构建一个Flink集群,然后在集群中启动Flink程序。 2. Flink的数据模型 Flink的数据模型包括了DataStream和DataSet两种。DataStream主要用于流计算,而DataSet主要用于批处理计算。在Flink中,数据是以并行的数据流或批次进行传输的。 3. Flink的操作符 Flink中的操作符包括了以下几种:Source(数据源),Transformation(转换操作)和Sink(数据输出)。Source用于获取数据源,Transformation用于数据处理,而Sink则是将计算结果输出到外部。 4. Flink的核心API Flink的核心API包括了DataStream API和DataSet API两种。DataStream API主要用于流数据处理,而DataSet API主要用于批处理数据。其中,DataStream API提供了多种类型的转换操作,如map、filter等;而DataSet API则提供了多种聚合和关联操作,如group、join等。 5. Flink的窗口函数 在流处理中,为了处理非无限的数据流,通常需要将数据按照一定的规则分成有限大小的窗口。而Flink的窗口函数就是用于实现这个功能的。Flink提供了多种窗口函数,如滚动窗口、滑动窗口、会话窗口等。 总之,掌握Flink框架具有重要的意义,尤其是对于需要进行实时大数据处理的行业。通过对Flink的API和窗口函数的了解,可以更好地了解其中的分布式计算和容错机制,从而更好地运用Flink进行大数据实时计算。 ### 回答3: 作为一种分布式流式计算框架,Apache Flink 不仅可以处理批处理任务,在处理实时数据的时候也十分出色。而且,Apache Flink 在容错性、可伸缩性和高效性方面都表现得相当优秀,并且它具有易于使用的 Java API 和 SQL 接口。 如果您是想要学习 Apache Flink 的零基础用户,以下是一些可以帮助您入门的建议。 1.去官网了解 Flink 的基本知识 在开始学习 Apache Flink 之前,建议去官网先了解一下 Flink 基本的架构和使用方法,以及相关的概念和体系架构。这样可以帮助您更快地开始构建您自己的 Flink 应用程序。 2.学习 Flink API Flink 提供了三种类型的 API:DataStream API、DataSet API 和 Table/SQL API。其中,DataStream API 和 DataSet API 是 Flink 的核心 API,可以通过编写 Java 或 Scala 代码来使用。而 Table/SQL API 则是最近推出的一种新型 API,可以更方便地处理 SQL 查询。 3.使用文档和示例 Apache Flink 官网提供了丰富的文档和示例代码,以帮助用户更好地理解和应用 Flink。通过按照教程操作,并对示例代码进行修改和调试,可以帮助您更快地了解如何使用 Flink 并使其工作。 4.尝试使用 Flink 社区现成的解决方案 Apache Flink 的社区已经开发了许多解决方案和应用场景,比如 FlinkML、FlinkCEP、FlinkGraph 等等,可以用来解决不同的业务需求和数据处理问题。尝试使用这些现成的解决方案,并在实践中不断优化和修改,可以巩固您对 Flink 的理解和使用。 总之,学习 Apache Flink 需要一定的时间和耐心,但掌握 Flink 的核心概念和 API 可以帮助您更轻松地构建快速、可靠的数据流处理系统。尝试多练习并与 Flink 社区互动,在实践中不断探索 Flink 系统的优化和升级,相信您一定能在 Flink 技术上迅速成长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值