2019.12.24(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 [email protected]

    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:\windows\system32\driver\etc\hosts),将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

 

猜你喜欢

转载自www.cnblogs.com/wangyyyy/p/12092363.html