LAMP环境搭建与配置
任务1 安装LAMP,基础配置解析PHP
(3)安装和配置
//建立MySQL用户,因为启动MySQL需要该用户
//创建datadir,数据库文件会放到这里面
// 更改权限,不更改后续操作就会出问题
//&&相当于一个判断,意前面命令执行才会执行后面
// 挪动位置
//–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)安装成功
编辑配置文件,在配置文件中找到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
#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包支持。
[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
[root@localhost httpd-2.4.28]# make install
#/usr/local/apache2.4/bin/apachectl -M
//查看配置文件有哪些文件
//share字样的动态共享模块,static以静态形式存在
(4)安装成功
//为防止配置时出错提前安装库文件
#./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
//编译安装
任务2 Apache配置
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)验证成功
用户名:test
密码:自己设置
域名跳转
(1)介绍
当我们变更网站域名或者申多个域名指向一个网站的时候,这个时候我们就会用到域名跳转。
(2)配置
把testdomain.com域名跳转为www. testdomain.com,配置如下:
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com
ServerAlias testdomain.com
//把testdomain.com虚拟主机改写如下
DocumentRoot " /data/wwwroot/testdomain.com"
ServerName www.testdomain.com
ServerAlias testdomain.com
DocumentRoot “/data/wwwroot/www.123.com”
ServerName www.testdomain.com
ServerAlias testdomain.com
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com
ServerAlias testdomain.com
静态元素过期时间
(1)介绍
那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。在httpd的配置文件中,我们是可以控制这个时间的。
(2)配置
在httpd上我们可以控制文件过期时间,配置如下:
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com
ServerAlias testdomain.com
DocumentRoot “/data/wwwroot/testdomain.com”
ServerName www.testdomain.com
ServerAlias testdomain.com
(3)配置验证
状态码403
状态码200
192.168.~~~
127.0.0.1~~~
(4)验证成功
(5)针对文件配置
编辑配置文件:
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
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
Order deny,allow
Deny from all
Allow from 127.0.0.1
验证过程如下:
Syntax OK
(6)配置验证
状态码 200
#curl -x192.168.247.139:80 www.testdomain.com/admin/admin.php -I
状态码 403
(7)验证成功
Syntax OK
(3)配置验证
(4)验证成功
Syntax OK
(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配置
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
日志相关配置
配置error_log
//记录错误日志:搜索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
下面做一个演示: