• LAMP环境搭建与配置


    LAMP环境搭建与配置

     1.安装MySQL

       下载软件包

       #uname -i x86_64//查看Linux多少位

    (选择多少位源码包)

      1)初始化

     #tar zvf mysql ***

     [ -d /usr/local/mysql ] && mv /usr/local/mysql  /usr/local/mysql_old

    #mv mysql**** /usr/local/mysql   //移动位置

    #cd /usr/local/mysql

    #mkdir -p /data/mysql  //数据库存放的位置

    #chown -R mysql:mysql /data/mysql  //更改权限

    ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

      

     

     

     

     如遇到错误信息“FATAL ERROR”:...是缺少包prel-moudule-install 使用命令yum install -y 包名

     

      2)配置MySQL

       #cp sopport-files/my-default.cnf /etc/my.cnf

     

     

     

     

     

     

       #vim /etc/my.cnf  //配置文件

     

     

     

       #cp support-files/mysql.server /etc/init.d/mysql   //复制启动脚本

       #chmod 755 /etc/init.d/mysql   //修改属性为755

       #vim /etc/init.d/mysql    //修改启动脚本 (修改地方datadir=/data/mysql//数据库存放目录

       #chkconfig --add mysql //mysql服务加入到系统服务列表

       #cjkconfig mysql on // 使其开机就启动

       #service mysql start // 启动服务

       如果启动不了请到/data/mysql/目录下查看错误日志,名通常是主机名.err。检查MySQL是否启动的命令

       #ps aus |grep mysql  //结果应大于2

       #netstat -lnp |grep 3306  //查看有没有监听3306端口

      2)安装Apache

     进入目录#cd /use/local/src

       下载相应的包 (httpd apr  apr-util

     解压源码包(tar -xzvf   ........

      aprapr-util (可以理解为一个通用的函数库,主要为上层应用提供支持。

     #cd /usr/local/src/apr

     #./configure --prefix=/usr/local/apr

      #make &&make intall  编译安装

      #cd /usr/local/src/apr-util  进入目录

     ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr // 指定数据存放路径

     #yum install -y pcre-devel  //安装库文件

     #make&&make install  //编译安装

     如果安装apr-util 时出错(yum install -y expat-devel

     继续安装 httpd

    #cd /usr/local/src/httpd

     #./configuer --perfix=/usr/local/apache --with-apr=usr/local/apache --with-apr=/usr/local/apr --with-apr-uitl=/usr/loacl/apr-uitl --enable-so enable-mods-shared=most // 配置编译参数

     #yum install -y pcre=devel(避免出现错误)

     #make&&make install   //编译和安装

     3)安装PHP

     #cd /usr/local/src

     下载源码包解压

     cd php //进入目录

      配置参数

      ./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 

     

     

     安装完成

     

      #cp php.ini-production /usr/local/php/etc/php.ini   /复制配置文件

     httpd 的主配置文件为/usr/local/apache/conf/httpd.conf    

     vim /usr/local/apache/conf/httpd.conf    //配置文件

     

     

     

     

     

     

     

     测试LAMP是否成功

      检查配置文件  #/use/local/apache/bin/apachectl -t

     

     

     

      #/usr/local/apache/bin/apachectl start   //启动

       查看是否启动

       Netstat -lnp |grep httpd

     出现80端口则成功。

    测试是否解析成功 

    #curl localhost/1.php

     

     

     (未出现源码,解析成功)

    Httpd配置

    (1)默认虚拟主机

      配置文件(httpd.conf

       Vim  /usr/local/apache/conf/httpd.conf

           //搜素关键词httpd.conf,把本行#好删除

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

      Vim   /usr/local/apache/conf/extra/httpd-vhost.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.wyy.com"

     ServerName www.wyy.com

    ServerAlias wyy.com

    </VirtualHost>

     修改配置文件 定义两个站点aming.com www.wyy.com

       #mkdir -p /data/wwwroot/aming.com  /data/wwwroot/www.wyy.com

       #echo “aming.com” > /data/wwwroot/aming.com/index.html

       #echo “wyy.com” > /data/wwwroot/wyy.com/index.html

       #usr/local/apache/bin/apachectl -t

    #usr/local/apache/bin/apachectl -graceful

    #curl  -x127.0.0.1:80 aming.com

    #curl  -127.0.0.1:80 www.wyy.com

     显示内容!

      2)用户认证 (对www.wyy.com站点作用户认证)

     #vim /usr/local/apache/conf/extra/httpd-vhosts.conf

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

           AllowOverride AuthConfig

           AuthName "wyy.com user auth"

           AuthType Basic

           AuthUserFile /data/.htpasswd

           require valid-user

       </Directory>

     #/usr/local/apahe/in/htpasswd -cm /data/.htpasswd www.wyy.com

       New password:

       Re-type new passdword:

       Adding password for user wyy

      #/usr/local/apache/bin/apchectl -t  //验证没有问题才能重启或者重新加载

     

     

     #/usr/local/apache/bin/apchectl graceful

     

     配置完成,到宿主机修改hosts文件(c:windowssystem32driveretchosts),将www.wyy.com域名指向你这台Linux机器。(增加 192.168.41.109 www.wyy.com

     

     弹出用户认证!

    3)配置域名跳转

     将域名wyy.com跳转到www.wyy.com

     

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

    AllowOverride AuthConfig

    AuthName "wyy.com user auth"

    ServerAlias wyy.com

    <IfModule mod_rewrite.c>

    RewriteEngine on

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

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

    </IfModule>

    </Directory>

     #/usr/local/apache/bin/apachectl -M|grep -i rewrite  //如果没有任何输出,则需要编辑配置文件

     #vim /usr/local/apache/conf/httpd.conf   //搜索rewrite #号删除

     #/usr/local/apache/bin/apachectl  graceful

         #/usr/local/apache/bin/apachectl -M|grep -i rewrite   

         Rewrite_module (shared)

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

     

     

    (4)配置访问日志

     

    #vim /usr/local/apache/conf/extra/httpd-xhost.conf

      CustomLog "logs/wyy.com-access_log" combined

      测试语法并重新加载配置

    #/usr/local/apache/bin/apachectl  -t

     

     

    #/usr/local/apache/bin/apachectl  graceful

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

    #tail /usr/local/apache/logs/wyy.com-access_log

     

     

    (5)访问日记不记录静态文件及日志切割

    先定义一个image-request环境变量,把gifpngjpgbmpswfjscss等格式文件全部归到image-request里,后面的env=image-request 有用到“!”,相当取反了,意思是把image-quest以外的类型文件记录到日志里。

        CustomLog "logs/wyy.com-access_log" combined

         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/local/apache/bin/rotatelogs-l    logs/wyy.com-a#ccess_%Y%m%d.log

    86400" combined env=!image-request

    测试配置文件没有问题,重新加载服务

    #/usr/local/apache/bin/apachectl  -t

     

     

    #/usr/local/apache/bin/apachectl  graceful

    再次访问日志

     #curl -x127.0.0.1:80 -I www.wyy.com

    #ls /usr/local/apache/logs

     

     日志文件显示记录

    测试日志切割

     #touch /data/wwwroot/www.wyy.com/aming.jpg

     #touch /data/wwwroot/www.wyy.com/aming.txt

     

     

    (6)配置静态元素过期时间

    配置文件

     #vim /usr/local/apache/conf/extra/httpd-vhosts.conf

       <IfModule mod_expites.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>

     这部分配置用到了mod_expires模块,然后测试配置并重新加载

    #/usr/local/apache/bin/apachectl  -t

     

    #/usr/local/apache/bin/apachectl  graceful

      检查httpd是否加载expires模块

      #/usr/local/apache/bin/apachectl -M|grep -i expires

      检查是否有输出,没有则需配置文件

     #vim /usr/local/apache/conf/httpd.conf

       搜索expires找到#Loadmodule expires_module module/mod_expires.so 这行,删除井号。

      重新加载服务 #/usr/local/apache/bin/apachectl  graceful

     #/usr/local/apache/bin/apachectl -M|grep -i expires

    有这行expires_moduleshared) 说明已经正确加载模块

     curl 命令测试

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

     

    显示max-age=86400这一行,成功!

    (7)配置防盗链

    #vim /usr/local/apache/conf/extra/httpd-vhosts.conf

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

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

     SetEnvIfNoCase Referer "http://wyy.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>

    curl 测试是否成功

     #/usr/local/apache/bin/apachectl  -t

        

    #/usr/local/apache/bin/apachectl  graceful

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

     

     允许的会返回状态码200 !

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

     //使用非允许的referer会返回403的状态码

     //访问html类型文件时,也不会被保护

     

    (8)访问控制

     除了用户认证限制访问之外,还可以通过限制ip,限制use_agent限制访文网站。限制ip指的是访问网站的来源ip,而限制use_agent,通常用来限制恶意或者不正常的请求。

      编辑配置文件

     #vim /usr/local/apace/conf/extra/httppd-vhosts.conf

       <Directory /data/wwwroot/www.wyy.com/admin/>

            Order deny,allow

            Deny from all

            Allow from 127.0.0.1

     

    </Directory>

    <Directory>来指定限制访问的目录,order定义控制顺序,哪个在前就先匹配哪个规则。

    验证过程

    #mkdir #/data/wwwroot/www.wyy.com/admin/index.html //创建目录,模拟网站后台

    #echo“admin”>/data/wwwroot/www.wyy.com/admin/index.html

    //在后台目录下面创建文件,并写入内容

    #> /usr/local/apache/logs/wyy.com-access_201****.log //清空当天的访问日志

    #curl-x192.168.188.128:80 -l www.123.com/admin/index.html

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

     

     返回状态码403!

     也可以针对某个文件来做限制

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

       <Filematch aming.php.*>

            Order deny,allow

            Deny from all

            Allow from 127.0.0.1

           <Filematch>

    </Directory>

     限制某个目录禁止解析php

     配置如下

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

       Php_admin_flag engine off

    </Directory>

     验证过程

     #/usr/local/apache/bin/apachectl  -t

         

     

    #/usr/local/apache/bin/apachectl  graceful

    #cp/usr/local/apache/htdocs/1.php /data/wwwroot/www/wyy.com/upload

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

     

     显示源码,解析不成功

     

     限制user-agent

     配置文件

    <VirtualHost *:80>

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

    ServerName www.wyy.com

    ServerAlias wyy.com

    CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/www.wyy.com-access_%Y%m%d.log

    86400" combined env=!image-request

    <IfModule mod_rewrite.c>

    RewriteEngine on

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

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

    RewriteRule .* - [F]

    </IfModule>

    </VirtualHost>

     这个也用到了rewrite模块,%{HTTP_USER_AGENT} user-agent的内置变量,ornc表示不区分大小写 f 相当于Forbiddon

     

    重新加载验证

     #/usr/local/apache/bin/apachectl  -t

        

     

     

    #/usr/local/apache/bin/apachectl  graceful

    #curl -I -x127.0.0.1:80 www.wyy.com/upload/1.php

     回复:HTTP/1.1 403 Forbidden

    Date: Fri, 06 Sep 2019 08:22:13 GMT

    Server: Apache/2.4.39 (Unix) PHP/5.6.39

    Content-Type: text/html; charset=iso-8859-1

    PhP配置

     1)禁用函数

    php有诸多内置函数,有一些函数(比如exec)会直接调取Linux系统命令,如果开发会非常危险。基于安全考虑应该把一些存在安全风险函数禁掉。

     

    直接编辑文件#vim /usr/local/php/etc/php.ini

      搜索disable_function

     disable_function = 加入函数

     

     

    (2)配置error_log

      编辑文件 #vim /usr/local/php/php.ini

       搜索log_errorsog_改成 log_errorsog On

     搜索error_log改为error_log = /var/log/php/php_errors.log

    搜索error_reporting改为error_reporting = E_ALL & ~E_NOTICE

    搜索display_error 改为display_errors = Off

     log_error可以改为onoff,用来php记录错误日志。error_log设定错误日志路径;error_reportong设定错误日志的级别,E_ALL为所有类型的日志,(警告和提示都会记录)。

     #mkdir /var/log/php

     #chmod 777 /var/log/php

     #/usr/local/apache/bin/apachectl graceful

    #vim /data/wwwroot/www.wyy.com/test.php

      <?php

    Echo

    (写入内容,故意丢掉结尾)

     curl测试

     #curl -A “123” -I -x127.0.0.1:80 www.wyy.com/test.php

    出现状态码500,说明访问的页面是错误的,此时查看php错误日志来判定错误原因

     #cat /var/log/php/pph_errors.log

     

     

    通过日志可以判断,test.php文件第三行少了分号。

    (3)配置open_basedir

    作用是将网站限制在指定目录里。

     编辑文件 #vim /usr/local/php/etc/pnp.ini

      搜索open_basedir

     open_basedir= /tmp:/data/wwwroot/www.wyy.com  //指定目录

     Open_basedir 可以是多个目录,用:分隔。

     #usr/local/apache/bin/apachectl graecful

    #cp/usr/local/apache/htdocs/1.php /data/wwwroot/aming.com/

     curl 测试 :#curl -x127.0.0.1:80 -I aming.com/1.php

     

     该目录返回状态码为500,限制成功

    发现aming.com/1.php不能访问,查看错误日志,该网站被限制目录

     

     

    (4)单个虚拟主机设置open_basedir

     编辑配置文件 #vim /usr/local/apache/bin/extra/httpd-vhosts.conf

    <VirtualHost *:80>

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

    ServerName www.wyy.com

    ServerAlias wyy.com

    CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/www.wyy.com-access_%Y%m%d.log

    86400" combined env=!image-request

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

    </VirtualHost>

      

    起作用的就是这句php_admin_value,他可以定义php.ini里面的参数。(error_log也可以定义)

    (5)php动态扩展模块安装

         首先学会查看php都加载了那些功能模块

       #/usr/local/php/bin/php -m

     等等......

    安装phpredis扩展模块

     #cd /usr/local/src     //进入目录

     #wget  http://pecl.php.net/get/redis-2.2.5.tgz  //建议下载低版本,高版本与php5不兼容

     #cd redis-2.2.5  //进入目录

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

     会遇到一个错误  则需安装autoconf

     #yum install -y autoconf

     再次执行#/usr/local/php/bin/phpize

     #./configure --with-php-config=/usr/local/php/bin/php-config //指定目录

     #make &&make install   //编译并安装

     Make 编译好会把redis.so 放到/usr/local/php/lib/php/extension/no-debug-zts-20131226

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

     

    #vim /usr/local/php/etc/php.ini //增加一行配置(最后一行即可)

       extension = redie.so

     #/usr/local/php/bin/php -m |grep redis // 查看是否加载redis.so模块

     

     加载出redis模块!

    要想要在php网站使用redis模块,还需重启一下httpd服务。

    重启命令#service httpd start

     

  • 相关阅读:
    一个贼基础的 编码解码方式
    SQL 中循环、for循环、游标
    sql中判断是否存在 数据库、表、存储过程、函数
    sql 同步表或同步表的时候更改部分字段
    sql存储过程的建立
    POJ
    UCloud 的安全秘钥 (计蒜客初赛第五场)(待解决)
    UCloud 机房的网络搭建(计蒜客初赛第五场)
    2017 计蒜之道 初赛 第四场
    腾讯课堂的物理实验(2017计蒜客初赛第三场)
  • 原文地址:https://www.cnblogs.com/wangyyyy/p/12092363.html
Copyright © 2020-2023  润新知