• LAMP环境搭建与配置


     

    一.安装MySQL

    1. 下载软件包或上传MySQL压缩包
    2. 初始化

       cd /usr/local/src/

       tar -xzvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz//解压MySQL压缩包

       mv mysql-5.6.43-linux-glibc2.12-x86_64   /usr/local/mysql //移动MySQL包到/usr/local/mysql

       cd /usr/local/mysql/   //进入mysql文件

       useradd -s /sbin/nologin  mysql  //建立MySQL用户

       mkdir -p /data/mysql ; chown -R mysql:mysql  /data/mysql  //创建一个存放数据库的文件,并将这个文件的所有这者所属组都设定为mysql

       ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  //执行一个块脚本,执行后无需自行编译

    -bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器没有那个文件或目录)出现错误,进行安装yum install -y perl-Module-Install无法安装,经将yum源移动回来后安成功。再次执行# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/  

    yum -y install perl perl-devel

    有时会用到一个特殊符号&&  他的意思是当前面的命令执行成功时,才会执行后面,类似于if判断。

    最后一条执行完出现两个OK 代表成功 ,或者用echo $?查看,看输出结果是否为0

     

     

    3.配置MySQL

    cp support-files/my-default.cnf   /etc/my.cnf    //将拷贝文件放到etc下面,会询问是否覆盖,确认覆盖y

    vi /etc/my.cnf //修改配置内容

    basedir = /usr/local/mysql     //basedir表示MySQL包所在路径

    datadir = /data/mysql        //datadir表示定义存放数据的位置

    port = 3306               //port表示定义MySQL服务监听的端口号,默认3306

    server_id = 155           //server_id表示该MySQL服务的ID

    socket = /tmp/mysql.sock  //socket定义MySQL服务监听的套接字地址

    cp support-files/mysql.server  /etc/init.d/mysqld  //拷贝启动脚本

    vi /etc/init.d/mysqld   //修改启动脚本

    basedir=/usr/local/mysql

    datadir=/data/mysql

     

       chkconfig --add mysqld  //mysql加到服务项

       chkconfig mysqld on    //设定开机自启

       service mysqld start     //启动mysql (如果显示是SUCCESS则启动成功

       ps -ef | grep mysqld     //查看它的进程

       netstat -ltunp | grep 3306 //查看它的端口

       (失败就安装yum install net-tools

    二.安装Apache

    上传压缩包

    解压压缩包tar -zxvf httpd-2.4.39.tar.gz

    tar -zxvf apr-util-1.6.1.tar.gz

    tar -zxvf apr-1.6.5.tar.gz

    cd /usr/local/src/apr-1.6.5 //进入apr

     ./configure --prefix=/usr/local/apr //编译出make文件  有依赖包报错就安装依赖包,yum install -y libtool* //安装libtool依赖包除了依赖包可能出现错误意外还有可能出现无法编译的情况如果出现gcc编译器报错,则安装yum install -y gcc

     ./configure --prefix=/usr/local/apr //重新启动看是否出错

    make &&make install  //安装  

    echo $?

    cd  //退出当前目录

    cd  apr-util-1.6.1

    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 

    make && make install  (报错xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录yum install -y expat-devel //安装这个包)

    make && make install //再次运行make 

    echo $?

    cd /usr/local/src/httpd-2.4.39

    ./configure  

    --prefix=/usr/1ocal/apache2.4   

    --with-apr=/usr/local/apr 

    --with-apr-util=/usr/local/apr-util   

    --enable-so 

    --enable-mods-shared=most     \执行./configure命令,命令运行结束后会出现报错,和之前的一样会显示缺少一个依赖包。安装yum install -y pcre-devel

    ./configure --prefix=/usr/1ocal/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most //再次执行确认报错是否消失

    echo $? //查看返回值是否为零

    make && make install //安装make 这个地方可能会出错。将两个apr文件复制到httpd...文件中的srclib  cd     cd /usr/local/src/   cp -r apr-1.6.5  httpd-2.4.39/srclib/apr

    cp -r apr-util-1.6.1  httpd-2.4.39/srclib/apr-util复制完成后进httpd文件后进行make clean清理一下之后再执行make && make install,如果还会出现错误就./configure --prefix=/usr/1ocal/apache2.4  --enable-so  --with-pcre   --with-included-apr   -enable-modules=most   --enable-mpms-shared=all   --with-mpm=prefork再次执行make -j4 && make install

    /usr/local/apache2.4/bin/apachectl -M 查看加载了那些模块。

    报错:有时进入apache2.4进不去,目录不存在,需要进入httpd-2.4.39中,make install,运行后复制/usr/local/路径进行tab补全才能进入

     

     

    三.安装PHP

    1)下载

    2)解压

    #cd /usr/local/src

    #tar -zxvf php-5.6.30.tar.gz

    3)安装和配置编译参数

    # yum install -y libxml2-devel

    # yum install -y openssl openssl-devel

    # yum install -y bzip2 bzip2-devel

    # yum install -y libpng libpng-devel

    # yum install -y freetype freetype-devel

    # yum install -y epel-release

    # yum install -y libmcrypt-devel

    //为防止配置时出错提前安装库文件

    # cd php-5.6.30

    #./configure

    --prefix=/usr/local/php

    --with-apxs2=/usr/local/apache2.4/bin/apxs

    --with-config-file-path=/usr/local/php/etc

    --with-mysql=/usr/local/mysql

    --with-libxml-dir

    --with-gd

    --with-jpeg-dir

    --with-png-dir

    --with-freetype-dir

    --with-iconv-dir

    --with-zlib-dir

    --with-bz2

    --with-openssl

    --with-mcrypt

    --enable-soap

    --enable-gd-native-ttf  

    --enable-mbstring

    --enable-sockets  

    --enable-exif  

    #make && make install

    //编译安装

    (4)复制配置文件

    cp php.ini-production /usr/local/php/etc/php.ini

    四.配置httpd支持PHP

    cd  /usr/local/apache2.4/conf/httpd.conf   //进入httpd的主配置文件

    编辑文件:#vim /usr/local/apache2.4/conf/httpd.conf  

    搜索 ServerName,把 ServerName www.example.com:80 #去掉;找到:

    <Directory />

    AllowOverride none

    Require all denied

    </Directory>

    改成:

    <Directory />

    AllowOverride none

    Require all granted

    </Directory>

    //修改他的目的是,允许所有请求,如果不设置该行,则访问时会报403错。

    AddType application/x-gzip .gz .tgz 在下面添加一行 AddType

    application/x-httpd-php  .php;找到

    DirectoryIndex index.html

    </IfModule>

    改成:

    <IfModule dir_module>

    DirectoryIndex index.html index.php

    </IfModule>

    五.测试LAMP是否成功

    1.测试配置文件是否正确

    启动httpd前需要先检验配置文件是否正确

    # /usr/local/apache2.4/bin/apachectl -t

    正确显示Syntax OK ,错误继续修改httpd.conf

    启动 httpd 命令 /usr/local/apache2.4/bin/apachectl start

    查看是否启动 netstat -lnp |grep httpd

     

    或使用 curl 命令简单测试:curl localhost

    显示了<html><body><h1>It works!<h1><body><html> 就是成功

    2.测试是否正确解析PHP

    编写测试脚本:#vim /usr/local/apache2.4/htdocs/1.php

    <?

    echo “php 解析正确

    ?>

     #curl localhost/1.php

    php 解析正确

    //如显示此信息则 PHP 解析正确

    六.Httpd配置

    1.默认虚拟主机

    虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
    域名解析服务器IP地址,是由DNS服务器来完成的

    #vim /usr/local/apache2.4/conf/httpd.conf //搜索关键词httpd-vhost,找到这行把前面的井号删除

    保存主配置文件,编辑虚拟主机配置文件

    vim /usr/local/apa

    che2.4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80>

        ServerAdmin admin@aminglinux.com

        DocumentRoot "/data/wwwroot/aming.com"

        ServerName aming.com

        ServerAlias www.aming.com

        ErrorLog "logs/aming.com-error_log"

        CustomLog "logs/aming.com-access_log" common

    </VirtualHost>

     

    <VirtualHost *:80>

        DocumentRoot "/data/wwwroot/www.123.com"

        ServerName www.123.com

    </VirtualHost>

    //ServerAdmin 指定管理员邮箱,

    //DocumentRoot 为该虚拟主机站点的根目录,网站程序在这个目录下

    //ServaerName 为网站的域名 ,但后面的域名不支持写多个

    //ServerAlias 为网站的第二域名,他后面可以写多个,用空格分隔

    //ErrorLog 为站点的错误日志

    //CustomLog 为站点的访问日志

     mkdir -p /data/wwwroot/aming.com  /data/wwwroot/www.123.com

    echo "aming.com" > /data/wwwroot/aming.com/index.html

    //网站默认的主页就是 index.html

    echo "www.123.com" > /data/wwwroot/www.123.com/index.html

    /usr/local/apache2.4/bin/apachectl -t

    /usr/local/apache2.4/bin/apachectl graceful

    curl -x127.0.0.1:80 aming.com

    curl -x127.0.0.1:80 www.123.com

    curl -x127.0.0.1:80 www.abc.com

     

    2.用户认证

    #vim /usr/local/apache2.4/conf/extra/httpd-vhost.conf  //编辑虚拟主机

     

    <VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    <Directory /data/wwwroot/www.123.com> // 指定认证的目录

    AllowOverride AuthConfig // 这个相当于打开认证的开关

    AuthName "www.123.com user auth" //自定义认证的名字,作用不大

    AuthType Basic //认证的类型,一般为 Basic

    AuthUserFile /data/.htpasswd //指定密码文件所在位置

    require valid-user // 指定需要认证的用户为全部可用用户

    </Directory>

    </VirtualHost>

     

    /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd test

    //htpasswd 为创建用户的工具,-c creat ,-m 为指定密码加密的方式为 MD5,data/.htpasswd 为密码文件, test为创建的用户。第一次执行需加-c ,第二次不用加,否则密码文件会重置

    #/usr/local/apache2.4/bin/apachectl -t

    Syntax OK //验证配置文件是否有问题

    #/usr/local/apache2.4/bin/apachectl graceful

     

    Windows 访 www.123.com 文件在

    C:WindowsSystem32driversetchosts。打开文件在最后一行输入:#你的 IP www.123.com

    然后,去浏览器访问会有弹窗出现。(关闭防火墙:setenforce 0   

                                                                                   systemctl stop firewalld)

     

     3.配置域名跳转

    当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就

    会用到域名跳转。

    123.com 域名跳转为 www.123.com:

            

    <VirtualHost * :80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias 123.com

    <IfModule mod_rewrite.c> //- 需要 mod_ _rewrite 模块 支持

    RewriteEngine on

    // 打开 rewrite 功能

    RewriteCond %{HTTP_HOST} !^www.123.com$

    //定义 rewrite 的条件,当主机名不是 www.testdomain.com 时满足

    条件

    RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]

    //定义 rewrite 规则,满足条件,规则才会执行。RewriteRule 后面分为三个部分,第一部分

    为当前网址,第二部分为要跳转的网址,第三部分是选项,需要方括号括起来,301位为状态码,称作永久重定向,302为临时重定向   L为last,跳转一次就结束

    </IfModule>

    </VirtualHost>

    要实现跳转,需要 rewrite 模块的支持,所以查看是否安装该模块。如果没

    有则还需要一些配置:

    /usr/local/apache2.4/bin/apachectl -M |grep -i rewrite   //如果没有输出则需要继续编辑

    vim /usr/local/apache2.4/conf/httpd.conf   //搜索 rewrite,把前面#去掉

    /usr/local/apache2.4/bin/apachectl graceful

    /usr/local/apache2.4/bin/apachectl -M |grep -i rewrite

    Rewrite_module(share)    //有这行输出,说明正常加载 rewrite 模块

    curl -x127.0.0.1:80 -I 123.com    //测试,可以看见状态码 301,跳转的网址是 www.123.com

     

     4.配置访问日志

    访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发

    生时帮助我们定位问题

    vim /usr/local/apache2 .4/conf/httpd.conf  //搜索LogFormat

     

    %h为访问网站的ip%1为远程登录名,这个字段基本上为“-”%u为用户名,%t为时间,%r为请求动作,%s为请求的状态码,写成%>s为最后的状态码,%b为传输数据大小,%{Referer}iReferer信息,%{User-Agent}i为浏览器标识

     

    # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    // 123.com 虚拟主机改写如下 配置

    <VirtualHost *: 80>

    DocumentRoot " /data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias 123.com

    <IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond  %{HTTP_HOST}  !^www. 123. com$

    RewriteRule  ^/(.*)$  http://www.123.com/$1  [R=301,L]

    </IfModule>

    CustomLog "1ogs/123.com-access_log"  combined

    </VirtualHost>

    保存配置文件后,测试语法并重新加载配置:

    #/usr/local/apache2.4/bin/apachectl -t

    Syntax OK

    #/usr/local/apache2.4/bin/apachectl graceful

    #curl -x127.0.0.1:80 -I 123.com

    #tail /usr/local/apache2.4/logs/www.123.com-access_log

     

    访问日记不记录静态文件;访问日记切割

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

     

    <VirtualHost *:80>

        DocumentRoot "/data/wwwroot/www.123.com"

        ServerName www.123.com

        ServerAlias 123.com

    <IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond %{HTTP_HOST} !^www.123.com$

    RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]

    </IfModule>

     SetEnvIf Request_URI ".*.gif$" image-request

     SetEnvIf Request_URI ".*.jpg$" image-request

     SetEnvIf Request_URI ".*.png$" image-request

     SetEnvIf Request_URI ".*.bmp$" image-request

     SetEnvIf Request_URI ".*.swf$" image-request

     SetEnvIf Request_URI ".*.js$"  image-request

     SetEnvIf Request_URI ".*.css$" image-request

    CustomLog "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400”  combined env=!image-request

    </VirtualHost>

    先定义了一个 image-request 环境变量,把 gif,jpg,png, bmp,swf,js,css 等格式

    文件全归类到image-request里,后面的env=!image-request有用到一个“!”,相当于取反,意思是吧image-request以外的类型文件记录到日志里

    rotatelogshttpd自带切割工具的日志,86400单位是秒相当于一天

    保存配置后,测试配置文件是否正确,没有错误重新加载服务:

    /usr/local/apache2.4/bin/apachectl -t

    Syntax OK

    /usr/local/apache2.4/bin/apachectl graceful

    配置验证:

    curl -x127.0.0.1:80 -I 123.com

    ls /usr/local/apache2.4/logs/

     

    测试: 

     

     5.配置静态元素过期时间

    httpd 上我们可以控制文件过期时间,配置如下:

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

     

    <VirtualHost *:80>

        DocumentRoot "/data/wwwroot/www.123.com"

        ServerName www.123.com

        ServerAlias 123.com

    <IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond %{HTTP_HOST} !^www.123.com$

    RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]

    </IfModule>

     SetEnvIf Request_URI ".*.gif$" image-request

     SetEnvIf Request_URI ".*.jpg$" image-request

     SetEnvIf Request_URI ".*.png$" image-request

     SetEnvIf Request_URI ".*.bmp$" image-request

     SetEnvIf Request_URI ".*.swf$" image-request

     SetEnvIf Request_URI ".*.js$"  image-request

     SetEnvIf Request_URI ".*.css$" image-request

    CustomLog  "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!image-request

    <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"

     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>

    这里 gif,jpeg, png 格式的文件过期时长为 1 天,css. js. flash 格式的文件

    过期时长为 2 小时,其他时长为0,就是不缓存。

    保存配置后,测试配置文件是否正确,没有错误重新加载服务:

    /usr/local/apache2.4/bin/apachectl -t

    Syntax OK

    /usr/local/apache2.4/bin/apachectl graceful

     

    检查 httpd 是否加载 expires 模块:

    /usr/local/apache2.4/bin/apachectl -M |grep -i expires

    //没有输出则说明当前 httpd 并不支持 expires 模块,所以需要修改配置文

    vim /usr/local/apache2.4/conf/httpd.conf   //搜索关键词 expires,找到这一行

    LoadModule expires_ module modules/mod_ expires .so    //把前面#删掉

    /usr/local/apache2.4/bin/apachectl graceful   //重新加载服务

    /usr/local/apache2.4/bin/apachectl -M|grep -i expires

    expires_module(share   //有这行输出说明正确加载 expires 模块

     

    测试

    curl -x127.0.0.1:80 -I www.123.com/aming.txt

    curl -x127.0.0.1:80 -I www.123.com/aming.jpg

    //max-age=86400 说明将缓存 86400 秒,max-age=0 说明没有该类型缓存

    文件

     

     6.配置防盗链

    防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的

    是图片、视频、歌曲、文档等

    配置防盗链先编辑主机配置文件:

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80>

        ServerAdmin admin@aminglinux.com

        DocumentRoot "/data/wwwroot/www.123.com"

        ServerName www.123.com

        ServerAlias 123.com

    <IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond %{HTTP_HOST} !^www.123.com$

    RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]

    </IfModule>

     SetEnvIf Request_URI ".*.gif$" image-request

     SetEnvIf Request_URI ".*.jpg$" image-request

     SetEnvIf Request_URI ".*.png$" image-request

     SetEnvIf Request_URI ".*.bmp$" image-request

     SetEnvIf Request_URI ".*.swf$" image-request

     SetEnvIf Request_URI ".*.js$"  image-request

     SetEnvIf Request_URI ".*.css$" image-request

    CustomLog  "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined

    <Directory /data/wwwroot/www.123.com>

     SetEnvIfNoCase Referer "http://www.123.com" local_ref

     SetEnvIfNoCase Referer "http://www.123.com" local_ref

     SetEnvIfNoCase Referer "^$" local_ref

     <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">

     Order Allow,Deny

     Allow from env=local_ref

     </filesmatch>

     </Directory>

    </VirtualHost>

    首先定义允许访问链接的 referer,其中^$为空 referer,当直接在浏览器里输入图片地址去访问它时,它的 referer 就为空。 然后使用filesmatch来定义需要保护的文件类型,访问txt,doc,mp3,zip,rar,jpg,gif格式的文件,当访问这样的类型的文件时就会被限制

    /usr/local/apache2.4/bin/apachectl -t

    Syntax OK

    /usr/local/apache2.4/bin/apachectl graceful

    curl -x127.0.0.1:80 -I -e “ http://www.123.com/123.txt ” http://www.123.com/aming.jpg

    //用-e来定义,referfer不用http://开头不管用

     

     curl -x127.0.0.1:80 -I -e "http://www.1234.com/1.txt" http://www.123.com/aming.jpg

     

     curl -x127.0.0.1:80 -I -e "http://www.1234.com/1.txt" http://www.123.com/index.html

     

     7.访问控制

    访问控制限制白名单 IP,针对文件和目录。

    对于一些比较重要网站内容,除了可以使用用户认证限制访问之外,还可以用比如限制ip,user_agent。

    目录配置:

    限制 IP 访问,编辑配置文件:

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

     

    <VirtualHost *:80>

        ServerAdmin admin@aminglinux.com

        DocumentRoot "/data/wwwroot/www.123.com"

        ServerName www.123.com

        ServerAlias 123.com

    CustomLog "|/usr/1ocal/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined

    <Directory /data/wwwroot/testdomain.com/admin/>

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

    </Directory>

    </VirtualHost>

    Directory 是用来指定限制访问的目录,order定义控制顺序

    验证过程:

    mkdir  /data/wwwroot/www.123.com/admin/   //创建 admin 目录,模拟网站后台

    echo “admin" >  /data/wwwroot/www.123.com/admin/index.html //在后台目录下创建文件,并写入内容

    > /usr/local/apache2. 4/1ogs/123.com-access_20201120.1og  //清空当天访问日志

    配置验证

    curl -x192.168.134.130:80 -I  www.123.com/admin/index.html

    curl -x127.0.0.1:80 -I  www.123.com/admin/index.html

    cat /usr/local/apache2.4/logs/123.com-access_20201120.log

     

    针对文件配置:

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias www.123.com

    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined

    <Directory /data/wwwroot/www.123.com>

    <Filesmatch "admin.php(.*)">

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

    </Filesmatch>

    </Directory>

    </VirtualHost>

    禁止解析PHP代码,配置:

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias www.123.com

    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined

    <Directory /data/wwwroot/www.123.com/upload>

    php_admin_flag engine off

    </Directory>

    </VirtualHost>

    验证

    /usr/local/apache2. 4/bin/apachectl -t

    Syntax OK

    /usr/local/apache2 .4/bin/ apachectl graceful

    cp /usr/local/apache2.4/htdocs/1.php  /data/wwwroot/www.123.com/upload/

    curl -x127.0.0.1:80 www.123.com/upload/1.php

     

    针对user_agent来做访问控制:

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias www.123.com

    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined

    <IfModule mod_rewrite.c>

    RewriteEngine on

    RewriteCond  %{HTTP_USER_AGENT} .*curl.* [NC,OR]

    RewriteCond  %{HTTP_USER_AGENT} .*baidu.com.* [NC]

    RewriteRule  .*  -  [F]

    </IfModule>

    </VirtualHost>

    七.PHP配置

    查看 PHP 配置文件得位置

    /usr/local/php/bin/php -i |grep -i "loaded configuration file"

     

    vim /usr/local/php/etc/php.ini

    1. PHP的disable_functions

    /usr/local/php/bin/php -i |grep -i "loaded configuration file"

    vim /usr/local/php/etc/php.ini

    搜索 disable_functions,编辑如下:

     

     2.配置error_log

    # vim /usr/local/php/etc/php. ini

    //记录错误日志:搜索 log_errors, 改成如下

    log_errors=On

    //记录错误日志目录位置:搜索 error. log,改为

    error_log = /var/log/php/php_errors.log

    //记录错误日志级别:搜索 error_reporting 改为

    error_reporting = E ALL & ~E_ NOTICE

    //再搜索 display_errors,改为

    display_errors = Off

    配置完 php.ini,可以额外配置:

    mkdir /var/log/php

    chmod 777 /var/log/php

     /usr/local/apache2.4/bin/apachectl graceful

    下面做一个演示:

     vim /data/wwwroot/www.123.com/test.php

    <?php

    echo 111

     curl -A "123" -I -x127.0.0.1:80 www.123.com/test .php

     cat /var/1og/php/php_errors.log

    //显示错误日志

    3.配置open_basedir

    先在 php.ini 中设置 open_basedir

    vim /usr/local/php/etc/php.ini    //搜索 open_basedir,改成如下

    open_ basedir = /tmp:/data/wwwroot/www.123.com

    因为限制了 PHP只能在/tmp 和/data/wwwroot/www.123.com 两个目录下面活

    动,演示如下:

    /usr/1ocal/apache2.4/bin/ apachectl graceful

     cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/www.123.com/

     curl -x127.0.0.1:80 -I www.123.com/1.php

     

    vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80>

    DocumentRoot "/data/wwwroot/.com"

    ServerName www.123.com

    ServerAlias  www.123.com

    CustomLog "|/usr/local/apache2.4/bin/rotatelogs

    -l

    logs/123.com-access_%Y%m%d.1og 86400"combined

    php_admin_value open_basedir "/data/wwwroot/ www.123.com/:/tmp/"

    </VirtualHost>

    //起作用的是 php_admin_value,它定义了 php.ini 的参数

    八.PHP动态扩展模块安装

     /usr/local/php/bin/php -m   //查看 PHP 加载了哪些模块

    cd /usr/local/src

    wget http://pecl.php.net/get/redis-2.2.5.tgz

    //安装一个新的 redis

    tar -zxvf redis-2.2.5.tgz 

    cd redis-2.2.5

    (yum install -y autoconf

    //因为有一处错误需要安装

    /usr/local/php/bin/phpize   //目的生成 configure 文件

     

     ./configure --with-php-config=/usr/local/php/bin/php-config

     make

     make install

    Installing shared extensions: /usr/local/php/lib/ php/extensions/ no-debug- zts -

    20131226/      //make install 时候编译好的就会放在这个目录里

    ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ //可以看到 redis.so

     

    vim /usr/local/php/etc/php.ini    //增加一行配置(可以放在文件最后一行)

    extension = redis.so

    /usr/local/apache2.4/bin/apachectl -t

    /usr/local/apache2.4/bin/apachectl graceful

    /usr/local/php/bin/php -m |grep redis

    //查看是否加载了 redis 模块

     

     

  • 相关阅读:
    insert 和 if x is not None
    python3和Python2的区别(被坑太久了)
    python面试题大全
    Python里的拷贝=====》很容易错误的
    Python中函数参数传递问题
    重回:类,对象,方法,属性
    30 个 Python 语言的特点技巧
    centos7下使用yum安装mysql
    phpinfo.php
    添加开机启动项命令
  • 原文地址:https://www.cnblogs.com/sxt0103/p/14070411.html
Copyright © 2020-2023  润新知