vim /usr/local/apache2.4/conf/httpd.conf //修改如下4个地方javascript
#ServerNamephp
这就是在Apache启动start时的输出内容,打开注释掉的www.example.com:80css
#Require all denied修改成Require all granted是受权容许访问的意思,不容许就是403html
#controls who can get stuff from this server后面修改denied为grantedjava
#容许PHP服务解析该服务器nginx
用/AddType 搜索到对应的信息添加“AddType application/x-httpd-php .php”算法
#添加索引页apache
用/index 搜索到 DirectoryIndex index.html 在后面追加上index.phpvim
修改完配置文件检查是否正确:/usr/local/apache2.4/bin/apachectl -t (syntax ok)浏览器
最后从新加载配置文件:/usr/local/apache2.4/bin/apachectl graceful
/usr/local/apache2.4/bin/apachectl start //启动服务
/usr/local/apache2.4/bin/apachectl graceful //从新加载服务
netstat -lntp 查看端口
检测服务器是否支持PHP解析:
vim /usr/local/apache2.4/htdocs/1.php //增长以下内容
<?php phpinfo(); ?> //该参数的含义是PHP的信息 //该命令的含义是:在访问该地址时,直接打印PHP的相关信息
curl loaclhost/1.php
php解析正常一堆东西就说明成功了,而后能够在网页上也测试一下,记得修改Windows的hosts
若是能够正常访问,说明该服务器支持PHP解析,若是不支持php解析的话,访问该文件时会显示源代码
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com serveralias www.111.com <Directory /data/wwwroot/111.com> //指定认证的目录 AllowOverride AuthConfig //这个至关于打开认证的开关 AuthName "111.com user auth" //自定义认证的名字,做用不大 AuthType Basic //认证的类型,通常为Basic,其余类型阿铭没用过 AuthUserFile /data/.htpasswd //指定密码文件所在位置 require valid-user //指定须要认证的用户为所有可用用户 </Directory> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost>
建立密码文件(后面lnmp的时候须要yum安装httpd来实现此工具)
htpasswd命令:
Apache的Web服务器内置工具,用于建立和更新储存用户名、域和用户基本认证的密码文件
-c:=create,建立一个加密文件(二次不须要加此选项)
-n:不更新加密文件,只将更新后的用户名密码显示在屏幕上
-m:使用MD5算法对密码进行加密(默认)
-d:使用CRYPT算法对密码进行加密
-p:不对密码进行加密,即明文密码
-s:使用SHA算法对密码进行加密
-b:在命令行一并输入用户名和密码,而不是根据提示输入密码
-D:删除指定用户
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming(这个aming是指定用户) New password: Re-type new password: Adding password for user aming ##在“/data/.htpasswd”为用户aming(自动建立)建立一个使用MD5算法加密的密码文件 ##再次建立用户密码时不须要-c,由于文件以及建立了
也能够单独针对文件进行认证
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com <FilesMatch 123.php> 只有在访问到123.php时才须要认真☆☆☆ AllowOverride AuthConfig AuthName "111.com user auth" AuthType Basic AuthUserFile /data/.htpasswd require valid-user </FilesMatch> </VirtualHost>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.111.com <IfModule mod_rewrite.c> //须要mod_rewrite模块支持 RewriteEngine on //打开rewrite功能 RewriteCond %{HTTP_HOST} !^111.com$ //定义rewrite的条件,主机名(域名)不是111.com知足条件 RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] //定义rewrite规则,当知足上面的条件时,这条规则才会执行 </IfModule> ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" combined </VirtualHost>
此方法实现www.111.com跳转到111.com
注意的是若是缺乏rewrite模块没法实现此功能
/usr/local/apache2.4/bin/apachectl -M|grep -i rewrite //若无该模块 vim /usr/local/apache2.4/conf/httpd.conf 删除rewrite_module (shared) 前面的#
日志文件路径: ls /usr/local/apache2.4/logs 日志格式路径: vim /usr/local/apache2.4/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common h表示host来源IP l表示login用户, u表示user用户密码 t表示time时间 r表示request(行为) s表示status状态码 b表示byte大小 User-Agent:用户代理,经过什么去访问,好比浏览器或者curl这些就是用户代理 Referer:浏览器上次访问的网址,跳过来前的地址 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ... ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" combined(把格式从原来的common修改成combined) </VirtualHost>
cat /usr/local/apache2.4/logs/111.com-access_log
tail -F /usr/local/apache2.4/logs/111.com-access_log
<VirtualHost *:80> ... SetEnvIf Request_URI ".*\.gif$" img SetEnvIf Request_URI ".*\.jpg$" img SetEnvIf Request_URI ".*\.png$" img SetEnvIf Request_URI ".*\.bmp$" img SetEnvIf Request_URI ".*\.swf$" img SetEnvIf Request_URI ".*\.js$" img SetEnvIf Request_URI ".*\.css$" img #以上为定义变量:将全部关于图片的请求定义为变量img CustomLog "logs/111.com-access_log" combined env=!img #“env=!img”表示非img变量。本行命令的含义是:不记录关于变量img的请求日志 </VirtualHost> ##将全部访问图片的请求定义为变量img,在访问记录(日志)中将其排除便可。从新加载后使用curl访问img变量中所指定格式的文件内容时将不会产生访问记录。
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ... CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img (combined将日志记录详细,日志按天切割) </VirtualHost> #rotatelogs是切割日志的工具 -l 以当前系统的时间为基准切割日志 中国为CST 定义切割后的名字,_%Y%m%d.log,Y年m月d日,切割时间为一天换算成秒文86400秒 日志保存在/usr/local/apache2.4/logs中 每小时切割一第二天志就是CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 3600"
<VirtualHost *:80> ... <IfModule mod_expires.c> ExpiresActive on //打开该功能的开关 ExpiresByType image/gif "access plus 1 days" //全部图片定义为一天 ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType text/css "now plus 2 hour" //全部css定义为两小时 ExpiresByType application/x-javascript "now plus 2 hours" ExpiresByType application/javascript "now plus 2 hours" ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" </IfModule> </VirtualHost> #模块/usr/local/apache2.4/bin/apachectl -M | grep -i expire vim /usr/local/apache2.4/conf/httpd.conf搜索/expires并打开其模块
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> (防盗链目录为本站点) SetEnvIfNoCase Referer "http://111.com" local_ref (白名单) SetEnvIfNoCase Referer "http://aaa.com" local_ref (白名单) SetEnvIfNoCase Referer "^$" local_ref (空的referer) <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> (针对这些的访问作防盗链) Order Allow,Deny (定义访问控制顺序,这里是先把白名单的referer作一个容许其余的禁止) Allow from env=local_ref (这两行指把白名单的referer作一个容许) </filesmatch> </Directory>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/admin/> #本节用于设定指定IP访问指定目录的权限 Order deny,allow (Order用来定义顺序,先allow容许仍是deny拒绝看顺序) Deny from all Allow from 127.0.0.1 #只容许IP--127.0.0.1访问“/data/wwwroot/111.com/admin/”目录中的内容 #这里限制的ip是源ip,-x指定的是目标ip,可是目标来源ip相同因此指定目标ip就能够实现需求 </Directory>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> <FilesMatch "admin.php(.*)"> (针对连接和文件名进行控制) Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/upload> php_admin_flag engine off </Directory> #若是只限制php解析,用户访问时还会看到php的源码,为了更安全能够直接没法访问php文件提升安全性 <Directory /data/wwwroot/111.com/upload> php_admin_flag engine off <FilesMatch (.*)\.php(.*)> Order Allow,Deny Deny from all </FilesMatch> </Directory>
user_agent是浏览器的标识,用curl访问时,出现curl/7.29.0为Firefox浏览器,工做中用它来限制一些访问,当受到cc攻击,可是它的攻击都有规律,user_agent是相同的,因此使用限制它来实现控制
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC] RewriteRule .* - [F] </IfModule> #NC表示忽略大小写,OR选项表示或者(不加任何选项表而且)链接下一个条件,F=forbidden禁止。
在PHP的源码包中没有第三方模块的包,可是在PHP源码包的/ext/目录下有好多扩展模块,若是所须要的扩展模块在该目录下,能够直接进行安装: 先切换到指定模块目录下 生成configure文件:/usr/local/php7/bin/phpize 环境配置:./configure --with-php-config=/usr/local/php7/bin/php-config make&&make install 安装完成后在编辑PHP配置文件php.inid加载模块!