ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

lamp搭建

2020-12-09 15:57:44  阅读:225  来源: 互联网

标签:com testdomain lamp usr php local apache2.4 搭建


LAMP环境搭建与配置
任务1 安装LAMP,基础配置解析PHP

  1. 安装MySQL
    (1)下载
    #cd /usr/local/src //软件包都放在这里方便管理
    下载源码包:mysql-5.6.43-linux-glibc2.12-x86_64.tar
    (2)解压

tar zxf 源码包

(3)安装和配置

useradd -s /sbin/nologin mysql

//建立MySQL用户,因为启动MySQL需要该用户

mkdir -p /data/mysql

//创建datadir,数据库文件会放到这里面

chown -R mysql:mysql /data/mysql

// 更改权限,不更改后续操作就会出问题

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

//&&相当于一个判断,意前面命令执行才会执行后面

mv mysql-5.6.35-linux-glibc2.12-x86_64 /usr/local/mysql

// 挪动位置

cd /usr/local/mysql

yum -y install perl perl-devel

yum install -y perl-Data-Dumper

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

//–user表示定义数据库的以哪个用户的身份运
//–datadir表示定义数据库的安装目录
#cp support-files/my-default.cnf /etc/my.cnf
#vi /etc/my.cnf
//修改配置文件
#These are commonly set ,remove the # and set as required
Basedir=/usr/local/mysql
//basedir表示MySQL包所在路径
Datadir=/data/mysql
//表示定义存放数据的位置
Port=3306
//port表示定义MySQL服务监听的端口号
Server_id=128
//表示该MySQL服务的ID号
socket = /tmp/mysql.sock
//定义MySQL服务监听的套接字地址
#cp support-files/mysql.server /etc/init.d/mysqld
//复制启动脚本文件
#chmod 755 /etc/init.d/mysqld
//修改启动脚本文件的属性
#Vim /etc/init.d/mysqld
//修改启动脚本
basedir=/usr/local/mysql
datadir=/data/mysql
#chkconfig --add mysqld
//把mysql服务加到系统服务列表中
#chkconfig mysqld on
//开机就启动
#service mysqld start
//启动服务
(4)安装成功

  1. 安装Apache
    (1)下载httpd-2.4.39.tar、apr-1.6.5.tar和apr-util-1.6.1.tar。
    (2)解压
    #tar -zxvf http-2.4.39.tar
    #tar -zxvf apr-1.6.5.tar
    #tar -zxvf apr-util-1.6.1.tar
    (3)安装和配置
    #cd /usr/local/src/apr-1.6.5
    #./configure --prefix=/usr/local/apr

vim configure

编辑配置文件,在配置文件中找到RM=‘ R M ′ 这 一 行 修 改 为 R M = ′ RM'这一行 修改为RM=' RM′这一行修改为RM=′RM -f’,修改完成后保存,然后再去编译,就不会报错。
#make &&make install
#cd /usr/local/src/apr-util-1.6.1.
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make &&make install

yum install -y expat-devel

make clean

make && make install

#cd /usr/local/src/http-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
//–prefix指定安装目录
//–enable-so表示启用DSO
//–enable -mods- shared表示以共享形式安装模块

#yum install -y pcre pcre-devel
//为避免make时出错提前安装库文件
#make && make install

缺少了xml相关的库,需要安装libxml2-devel包。直接安装并不能解决问题,因为httpd调用的apr-util已经安装好了,但是apr-util并没有libxml2-devel包支持。

yum install -y libxml2-devel

rm -rf /usr/local/apr-util

cd /usr/local/src/apr-util-1.6.1

这一步很重要,必须清除之前配置时的缓存

[root@localhost apr-util-1.6.1]# make clean

源码安装三步走

[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.6.1]# make
[root@localhost apr-util-1.6.1]# make install

同样要清理之前的缓存十分重要

[root@localhost src]# cd /usr/local/src/httpd-2.4.28
[root@localhost httpd-2.4.28]# make clean
[root@localhost httpd-2.4.28]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
[root@localhost httpd-2.4.28]# make

这时make没报错了

[root@localhost httpd-2.4.28]# make install

#/usr/local/apache2.4/bin/apachectl -M
//查看配置文件有哪些文件
//share字样的动态共享模块,static以静态形式存在
(4)安装成功

  1. 安装PHP
    (1)下载
    下载资源包 php-5.6.30.tar
    (2)解压
    #cd /usr/local/src
    #tar -zxvf php-5.6.30.tar.gz
    (3)安装和配置

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

yum -y install libjpeg-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
//编译安装

  1. httpd解析PHP
    #vim /usr/local/apache2.4/conf/httpd.conf
    //编辑httpd的主配置文件
    搜索ServerName,把ServerName www.example.com:80前#去掉;

    AllowOverride none
    Require all denied

    改成:

    AllowOverride none
    Require all granted
    //目的允许所有请求访问
    搜索AddType application/x-gzip .gz .tgz,在下面添加一行 AddType application/x-httpd-php .php;

    DirectoryIndex index.html

    改成:

    DirectoryIndex index.html index.php

    (4)测试安装
    ① 测试配置文件是否正确
    #/usr/local/apache2.4/bin/apachectl -t
    //检验配置文件是否正确:Syntax OK
    #/usr/local/apache2.4/bin/apachectl start
    //启动httpd命令
    #netstat -lnp |grep httpd
    //查看是否启动
    #curl localhost

It works!

//使用curl命令简单测试,,显示了就是成功 ② 测试是否正确解析PHP #vim /usr/local/apache2.4/htdocs/1.php <? echo “php解析正确” ?> //编写一个测试脚本 #curl localhost/1.php php解析正确 //如显示此信息则PHP解析正确 (5)安装成功

任务2 Apache配置

  1. 默认虚拟主机
    (1)虚拟主机
    虚拟主机(共享主机,又称虚拟服务器)是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。
    (2)配置
    #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
    //编辑虚拟主机配置文件
    <VirtualHost *:80>
    ServerAdmin admin@wang.com
    DocumentRoot “/data/wwwroot/test0920.com”
    ServerName test0920.com
    ServerAlias www.testdomain.com
    ErrorLog “logs/aming.com-error_log”
    CustomLog “logs/aming.com-access_log” common

<VirtualHost *:80>
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com

//ServerAdmin指定管理员邮箱,
//DocumentRoot为该虚拟主机站点的根目录,
//ServaerName为网站的域名
//ServerAlias为网站的第二域名
//ErrorLog为站点的错误日志
//CustomLog为站点的访问日志
#mkdir -p /data/wwwroot/test0920.com /data/wwwroot/testdomain.com
#echo “www.test0920.com” > /data/wwwroot/test0920.com/index.html
//网站默认的主页就是index.html
#echo “www.testdomain.com” > /data/wwwroot/testdomain.com/index.html
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful

[root@localhost php-5.6.30]# cd /usr/local/apache2.4/
[root@localhost apache2.4]#
[root@localhost apache2.4]#
[root@localhost apache2.4]#
[root@localhost apache2.4]# mkdir -p docs/dummy-host.example.com
[root@localhost apache2.4]# mkdir -p docs/dummy-host2.example.com
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful

(3)配置验证
#curl -x127.0.0.1:80 www.test0920.com
//访问www.test0920.com/index.html
www.test0920.com
#curl -x127.0.0.1:80 www.testdomain.com
www.testdomain.com
#curl -x127.0.0.1:80 www.abc.com
www.test0920.com
(4)验证成功

  1. 用户认证
    (1)介绍
    用户认证用来对某些目录中的网页进行访问控制,当用户访问这些页面的时候需要输入用户名和密码进行认证。
    (2)配置
    #vim /usr/local/apache2.4/conf/extra/httpd-vhost.conf
    <VirtualHost *:80>
    DocumentRoot “/data/wwwroot/testdomain.com”
    ServerName www.testdomain.com
    <Directory /data/wwwroot/testdomain.com>
    // 指定认证的目录
    AllowOverride AuthConfig
    // 这个相当于打开认证的开关
    AuthName “testdomain.com user auth”
    //自定义认证的名字,作用不大
    AuthType Basic
    //认证的类型,一般为Basic
    AuthUserFile /data/.htpasswd
    //指定密码文件所在位置
    require valid-user
    // 指定需要认证的用户为全部可用用户


    #/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd test
    //htpasswd为创建用户的工具,-c为creat
    //-m为指定密码加密的方式为MD5
    //data/.htpasswd为密码文件,
    //aming为创建的用户。第一次执行需加-c
    //第二次不用加,否则密码文件会重置
    #/usr/local/apache2.4/bin/apachectl -t
    Syntax OK //验证配置文件是否有问题
    #/usr/local/apache2.4/bin/apachectl graceful
    (3)配置验证
    配置完可在Windows上访问地址www.testdomain.com,文件在C:\Windows\System32\drivers\etc\hosts。打开文件在最后一行输入:
    #你的IP www.testdomain.com
    然后,去浏览器访问会有弹窗出现。
    (4)验证成功

用户名:test
密码:自己设置

  1. 域名跳转
    (1)介绍
    当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就会用到域名跳转。
    (2)配置
    把testdomain.com域名跳转为www. testdomain.com,配置如下:
    <VirtualHost * :80>
    DocumentRoot “/data/wwwroot/testdomain.com”
    ServerName www.testdomain.com
    ServerAlias testdomain.com

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

//把testdomain.com虚拟主机改写如下
<VirtualHost : 80>
DocumentRoot " /data/wwwroot/testdomain.com"
ServerName www.testdomain.com
ServerAlias testdomain.com

  1. 访问日记不记录静态文件
    (1)配置

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

<VirtualHost :80>
DocumentRoot “/data/wwwroot/www.123.com”
ServerName www.testdomain.com
ServerAlias testdomain.com

  1. 访问日记切割
    (1)配置

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

<VirtualHost :80>
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com
ServerAlias testdomain.com

  1. 静态元素过期时间
    (1)介绍
    那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。在httpd的配置文件中,我们是可以控制这个时间的。
    (2)配置
    在httpd上我们可以控制文件过期时间,配置如下:
    #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
    <VirtualHost :80>
    DocumentRoot “/data/wwwroot/testdomain.com”
    ServerName www.testdomain.com
    ServerAlias testdomain.com
    <VirtualHost :80>
    DocumentRoot “/data/wwwroot/testdomain.com”
    ServerName www.testdomain.com
    ServerAlias testdomain.com

echo “admin" > /data/wwwroot/testdomain.com/admin/index.html

> /usr/local/apache2. 4/1ogs/123.com-access_20170319.1og /

(3)配置验证

curl -x192.168. 188.128:80 -I testdomain.com/admin/index.html

状态码403

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

状态码200

cat /usr/local/apache2.4/logs/123.com-access_ 20~~~

192.168.~~~
127.0.0.1~~~
(4)验证成功

(5)针对文件配置
编辑配置文件:
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost :80>
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com
ServerAlias testdomain.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
<Directory /data/wwwroot/testdomain.com/admin/>
<Filesmatch "admin.php(.
)">
Order deny,allow
Deny from all
Allow from 127.0.0.1



验证过程如下:

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

Syntax OK

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

touch /data/wwwroot/testdomain.com/admin/admin.php

(6)配置验证

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

状态码 200
#curl -x192.168.247.139:80 www.testdomain.com/admin/admin.php -I
状态码 403
(7)验证成功

  1. 访问控制-禁止解析PHP
    (1)简述
    对于使用PHP语言编写的网站,有一些目录是有需求上传文件的。如果网站代码有漏洞,让黑客上传了一个用PHP写的木马,由于网站可以执行PHP程序,最终会让黑客拿到服务器权限。
    为了避免这种情况发生,我们需要把能上传文件的目录直接禁止解析PHP代码。
    (2)配置
    配置如下:
    #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
    <VirtualHost *:80>
    DocumentRoot “/data/wwwroot/testdomain.com”
    ServerName www.testdomain.com
    ServerAlias testdomain.com
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
    <Directory /data/wwwroot/testdomain.com/upload>
    php_admin_flag engine off

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

Syntax OK

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

cp /usr/local/apache2 .4/htdocs/1. php /at/wwwroot/testdomain.com/upload/

(3)配置验证

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

<?php . echo "php解析正常"; ?>

(4)验证成功

  1. 访问控制-user_agent
    (1)介绍
    user_agent是指用户浏览器端的信息。比如你是用IE的还是Firefox浏览器的。有些网站会根据这个来调整打开网站的类型,如是手机的就打开wap,显示非手机的就打开PC常规页面。
    (2)配置
    #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
    <VirtualHost :80>
    DocumentRoot “/data/wwwroot/testdomain.com”
    ServerName www.testdomain.com
    ServerAlias testdomain.com
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined

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

Syntax OK

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

(3)配置验证
#curl -I -x127.0.0.1:80 testdomain.com/upload/1.php
状态码403
#curl -A “123123” -I -x127.0.0.1:80 testdomain.com/upload/1.php
状态码200
(4)验证成功

任务3 PHP配置

  1. PHP基础配置
    查看PHP配置文件得位置
    #/usr/local/php/bin/php -i |grep -i “loaded configuration file”
    #vim /usr/local/php/etc/php.ini
    搜索disable_functions,编辑如下:
    disable_functions=eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,1eak,popepassthru,stream_socket_server,popen,proc_open,proc_close
    定义date.timezone,减少警告
    #vi /usr/local/php/bin/php
    找到date. timezone设置如下:
    date.timezone = Asia/Shanghai

  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/testdomain.com/test.php

<?php echo 111 # curl -A "123" -I -x127.0.0.1:80 testdomain. com/test .php 状态码500 # 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/testdomain.com 因为限制了PHP只能在/tmp和/data/wwwroot/testdomain.com两个目录下面活动,演示如下: # /usr/1ocal/apache2.4/bin/ apachectl graceful # cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/testdomain.com/ # curl -x127.0.0.1:80 -I testdomain.com/1.php 状态码500 4. 虚拟主机配置open_basedir #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf

标签:com,testdomain,lamp,usr,php,local,apache2.4,搭建
来源: https://blog.csdn.net/weixin_49513202/article/details/110927953

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有