centos7环境下编译安装apache2.4.41匹配php-fpm模式

六眼飞鱼酱① 提交于 2020-04-15 12:16:19

【推荐阅读】微服务还能火多久?>>>

# 查看apache的版本
# 可以看到使用了 APR 1.6.5 APR-UTIL 1.6.1
# /www/server/apache/bin/httpd -V
Server version: Apache/2.4.41 (Unix)
Server built:   Oct 11 2019 21:26:47
Server's Module Magic Number: 20120211:88
Server loaded:  APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/www/server/apache"
 -D SUEXEC_BIN="/www/server/apache/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

# 查看openssl版本
# /usr/local/openssl/bin/openssl 
OpenSSL> version
OpenSSL 1.0.2l  25 May 2017


# apache已经按照的模块

# /www/server/apache/bin/httpd -M
AH00180: WARNING: MaxRequestWorkers of 25200 exceeds ServerLimit value of 1000 servers, decreasing MaxRequestWorkers to 1000. To increase, please see the ServerLimit directive.
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 ext_filter_module (shared)
 filter_module (shared)
 deflate_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 remoteip_module (shared)
 proxy_module (shared)
 proxy_connect_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_fcgi_module (shared)
 proxy_scgi_module (shared)
 proxy_wstunnel_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_express_module (shared)
 slotmem_shm_module (shared)
 ssl_module (shared)
 lbmethod_byrequests_module (shared)
 lbmethod_bytraffic_module (shared)
 lbmethod_bybusyness_module (shared)
 lbmethod_heartbeat_module (shared)
 mpm_prefork_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
 rewrite_module (shared)
 http2_module (shared)


# 按照依赖
yum -y install gcc make prce-devel openssl-devel expat-devel 

# 获取apache、apr、api-util 软件源码
wget http://archive.apache.org/dist/httpd/httpd-2.4.41.tar.gz
wget https://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
wget https://archive.apache.org/dist/apr/apr-1.6.5.tar.gz

# 按照apr和apr-util
cd /usr/local/src/
tar xf apr-1.6.5.tar.gz
cd apr-1.6.5
./configure --prefix=/usr/local/lab/apr1.6.5
make && make install

tar xf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/usr/local/lab/apr-util1.6.1 --with-apr=/usr/local/lab/apr1.6.5
make && make install


# --with-openssl=/usr/local/openssl-1.0.2p 使用自带的openssl版本后报错,用系统自带的openssl

/usr/bin/ld: /usr/local/lab/openssl-1.0.2p/lib/libssl.a(s3_srvr.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[4]: *** [mod_ssl.la] Error 1
make[4]: Leaving directory `/usr/local/src/httpd-2.4.41/modules/ssl'
make[3]: *** [shared-build-recursive] Error 1
make[3]: Leaving directory `/usr/local/src/httpd-2.4.41/modules/ssl'
make[2]: *** [shared-build-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/httpd-2.4.41/modules'
make[1]: *** [shared-build-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/httpd-2.4.41'
make: *** [all-recursive] Error 1


# 编译 apache2.4.41 参数
./configure --prefix=/usr/local/httpd-2.4.41 --enable-isapi --enable-file-cache --enable-cache --enable-mem-cach --enable-deflate --enable-expires --enable-headers  --enable-proxy --enable-proxy-balancer --enable-proxy-ftp --enable-proxy-http --enable-proxy-scgi --enable-unixd --enable-static-rotatelogs --enable-static-htpasswd --enable-static-htdigest --enable-static-logresolve --enable-static-htdbm --enable-static-ab --enable-static-checkgid --enable-static-htcacheclean --enable-vhost-alias --enable-rewrite --enable-mime-magic --enable-so --enable-ssl --with-ssl=/usr/local/lab/openssl-1.0.2p --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/lab/apr1.6.5 --with-apr-util=/usr/local/lab/apr-util1.6.1 --enable-modeles=most --enable-mpms-shared=all --with-mpm=prefork

# make && make install


# httpd.conf配置

[/usr/local/httpd-2.4.41/conf]# egrep -v '^#|^$' httpd.conf
ServerRoot "/usr/local/httpd-2.4.41"
Listen 80
Listen 443
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule authn_file_module modules/mod_authn_file.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 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 proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.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 dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>
ServerAdmin you@example.com
ServerName 0.0.0.0:80
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/usr/local/httpd-2.4.41/htdocs"
<Directory "/usr/local/httpd-2.4.41/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<Files ".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" common
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/usr/local/httpd-2.4.41/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory "/usr/local/httpd-2.4.41/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule headers_module>
    RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Include conf/vhost.d/*.conf


[/usr/local/httpd-2.4.41/conf]# cat vhost.d/chinasoft.cn.conf 
<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot "/data/www/vhosts/chinasoft.cn"
    ServerName www.chinasoft.cn
    ServerAlias chinasoft.cn ori-www.chinasoft.cn
    errorDocument 404 /404.html
    ErrorLog "/data/www/logs/apache_log/error/chinasoft.cn_error.log"
    CustomLog "/data/www/logs/apache_log/access/chinasoft.cn_access.log" combined

        <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{HTTP_HOST} ^chinasoft.cn [NC]
                RewriteRule ^(.*) https://www.chinasoft.cn/ [L,R=301]
        </IfModule>

     <Files ~ (\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)$>
       Order allow,deny
       Deny from all
    </Files>
    
    #PHP
    <FilesMatch \.php$>
            SetHandler "proxy:unix:/tmp/php-cgi.sock|fcgi://localhost"
    </FilesMatch>
    
    #PATH
    <Directory "/data/www/vhosts/chinasoft.cn">
        SetOutputFilter DEFLATE
        Options FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.php index.html index.htm default.php default.html default.htm
    </Directory>
    
    <IfModule alias_module>
                Alias /viewer/ /data/www/vhosts/chinasoft.cn/server/
    </IfModule>
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmasterexample.com
    DocumentRoot "/data/www/vhosts/chinasoft.cn/"
    ServerName www.chinasoft.cn
    ServerAlias chinasoft.cn ori-www.chinasoft.cn 
    errorDocument 404 /404.html
    ErrorLog "/data/www/logs/apache_log/error/chinasoft.cn_error.log"
    CustomLog "/data/www/logs/apache_log/access/chinasoft.cn_access.log" combined
        <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{HTTP_HOST} ^chinasoft.cn [NC]
                RewriteRule ^(.*) https://www.chinasoft.cn/ [L,R=301]
        </IfModule>

    #SSL
    SSLEngine On
    SSLCertificateFile /usr/local/nginx/conf/cert2016/chinasoft_cn.pem
    SSLCertificateKeyFile /usr/local/nginx/conf/cert2016/chinasoft_cn.key.pem
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1
    SSLHonorCipherOrder On
    
    #PHP
    <FilesMatch \.php$>
            SetHandler "proxy:unix:/tmp/php-cgi.sock|fcgi://localhost"
    </FilesMatch>
    
    
    #DENY FILES
     <Files ~ (\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)$>
       Order allow,deny
       Deny from all
    </Files>
    
    #PATH
    <Directory "/data/www/vhosts/chinasoft.cn/">
        SetOutputFilter DEFLATE
        Options FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.php index.html index.htm default.php default.html default.htm
    </Directory>
    
    <IfModule alias_module>
                Alias /viewer/ /data/www/vhosts/chinasoft.cn/server/
    </IfModule>
</VirtualHost>

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!