LAMP环境搭建与配置(1)

LAMP环境搭建与配置

任务1安装LAMP,基础配置解析PHP
安装MySQL

创建目录

#cd/usr/local/src//软件包都放在这里方便管理

下载资源包

#wget
http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.
gz

解压

2)解压
#tarzxf源码包

安装配置

#useradd -s /sbin/nologin mysql
//建立MySQL用户,因为启动MySQL需要该用户,/sbin/nologin用
户无法使用bash或其他shell来登陆系统
#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.39-linux-glibc2.12-x86_64/usr/local/mysql
//挪动位置
# cd /usr/local/mysql
#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
//--user表示定义数据库的以哪个用户的身份运
//--datadir表示定义数据库的安装目录
如出现报错,需安装软件包
# yum install -y perl perl-devel autoconf
# 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=130
//表示该MySQL服务的ID号
socket = /tmp/mysql.sock
//定义MySQL服务监听的套接字地址
#cp    support-files/mysql.server/etc/init.d/mysql
//复制启动脚本文件
#chmod  755/etc/init.d/mysql
//修改启动脚本文件的属性
#vi /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/data/mysql
//修改启动脚本,定义basedir和datadir
#chkconfig  --addmysql
//把mysql服务加到系统服务列表中
#chkconfig mysql on
//开机就启动
#service mysql start
//启动服务

安装成功

[root@localhost mysql]# service mysql start
Staring MySQL.Logging to ' /data/mysql /localhost.localdomain .err ' .
#ps -ef |grep mysqld
#yum install net-tools
#netstat-ltunp |grep 3306

安装Apache

创建目录

#cd /usr/local/src/

下载资源包

#wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.46.tar.gz
#wget http://mirrors.hust.edu.cn/apache/apr/apr-1.6.5.tar.gz
#wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz

解压

#tar -zxvf httpd-2.4.46.tar.gz
#tar -zxvf apr-1.6.5.tar.gz
#tar -zxvf apr-util-1.6.1.tar.gz

安装和配置

#cd /usr/local/src/apr-1.6.5
#./configure --prefix=/usr/local/apr
如果报错“configure:error:noacceptableCcompilerfoundin$PATH”,则安 装软件包
#yum install -y gcc
如果报错“rm: cannot remove 'libtoolT' : No such file or directory ”
#vi configure
将 RM='$RM'改为 RM='$RM -f '

再次执行

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

继续编译

# make && make install
#cd /usr/local/src/apr-util- 1.6.1.
# yum install expat-devel
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make && make install

继续操作

#cd /usr/local/src/httpd-2.4.46
#yum install -y pcre pcre-devel
//为避免配置时出错提前安装库文件
#./configure  --prefix=/usr/local/apache2.4  --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
#make && make install
//--perefix指定安装目录
//--enable-so表示启用DSO
//--enable-mods-shared表示以共享形式安装模块

如果报错“collect2:error:ldreturned1exitstatusmake[2]😗*[htpasswd]
Error1”
解决方案:

# cd /usr/local/src/
# cp -r apr-1.6.5 /usr/local/src/httpd-2.4.46/srclib/apr
#cp -r apr-util-1.6.1 /usr/local/src/httpd-2.4.46/srclib/apr-util
如果还是不行,重新执行configure命令,添加一个编译参数:
--with-included-apr
再执行 make clean all
# make && make install

继续操作

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

安装成功

安装php

下载资源包

# wget http://php-5.6.30.tar.gz

创建目录

# cd /usr/local/src

解压

# tar -zxvf php-5.6.30.tar.gz

3.安装配置

# yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel epel-release libmcrypt-devel libjpeg-turbo libjpeg-turbo-devel

# yum install -y libm crypt-devel
//为防止配置时出错提前安装库文件
#cd php-5.6.30 
//cd命令:切换当前目录至其它目录,比如进入/etc目录,则执行 cd /etc。
#yum install bzip2-devel.x86_64-y
#./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
//编译安装

httpd解析PHP

编辑httpd配置

# vim/usr/local/apache2.4/conf/httpd.conf
//编辑httpd的主配置文件。
搜索ServerName,把ServerNamewww.example.com:80#去掉;

替换目的允许所有请求访问

<Directory/>
AllowOverridenone
Requirealldenied
</Directory>
替换
<Directory/>
AllowOverridenone
Requireallgranted
</Directory>
搜索AddTypeapplication/x-gzip.gz.tgz,在下面添加一行AddType
application/x-httpd-php.php
<IfModuledir_module>
DirectoryIndexindex.html
</IfModule>
替换
<IfModuledir_module>
DirectoryIndexindex.htmlindex.php
</IfModule>

(1)测试配置文件是否正确

/usr/local/apache2.4/bin/apachectl-t
/检验配置文件是否正确:SyntaxOK

#/usr/local/apache2.4/bin/apachectlstart
//启动httpd命令
#netstat-lnp|grephttpd
//查看是否启动
#curllocalhost
<html><body><h1>Itworks!<h1><body><html>
//使用curl命令简单测试,,显示了就是成功

(2)测试是否正确解析PHP

vim/usr/local/apache2.4/htdocs/1.php

<?
echo“php解析正确”
?>
//编写一个测试脚本

curllocalhost/1.php

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

安装成功

[root @local host php-5.6.30# cur] localhost
<html><body><h1>It works!</h1></body></html>
[root@local host php-5.6.30]# curl localhost/1.php php解析正常[root@local host php-5.6.30]#

任务2Apache配置

虚拟机

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

编辑httpd.conf搜索httpd-vhosts,去掉#号

# vi/usr/local/apache2.4/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include conf/extra/httpd-dav.conf

然后再配置文件

<VirtualHost*:80>
    ServerAdminwebmaster@dummy-host.example.com
    DocumentRoot"/usr/local/apache2.4/docs/abc.com"
    ServerNameabc.com
    ServerAliaswww.abc.comaaa.com
    ErrorLog"logs/abc.com-error_log"
    CustomLog"logs/abc.com-access_log"common
</VirtualHost>


<VirtualHost*:80>
    DocumentRoot"/usr/local/apache2.4/docs/111.com"
    ServerName111.com
    ErrorLog"logs/111.com-error_log"
    CustomLog"logs/111.com-access_log"common
</VirtualHost>

//ServerAdmin指定管理员邮箱,
//DocumentRoot为该虚拟主机站点的根目录,
//ServaerName为网站的域名
//ServerAlias为网站的第二域名
//ErrorLog为站点的错误日志
//CustomLog为站点的访问日志

#cd/usr/local/apache2.4/
#mkdirdocs
#cddocs
#mkdirabc.com
#viabc.com/index.html
abc.com
#mkdir111.com
#vi111.com/index.html
111.com

检查配置文件是否有错误

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

graceful用于修改了配置文件后进行重新读取配置文件。

#/usr/local/apache2.4/bin/apachectlgraceful

配置验证

#curl-xlocalhost:80www.abc.com
abc.com
#curl-xlocalhost:80www.aaa.com
abc.com
#curl-xlocalhost:80111.com
111.com

用户认证

首先修改abc.com虚拟主机配置

#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost*:80>
    ServerAdminwebmaster@dummy-host.example.com
    DocumentRoot"/usr/local/apache2.4/docs/abc.com"
    ServerNameabc.com
    ServerAliaswww.abc.comaaa.com
    <Directory/usr/local/apache2.4/docs/abc.com>
    AllowOverrideAuthConfig
    AuthName"abc.comuserauth"
    AuthTypeBasic
    AuthUserFile/usr/local/apache2.4/docs/.htpasswd
    requirevalid-user
    </Directory>
    ErrorLog"logs/abc.com-error_log"
    CustomLog"logs/abc.com-access_log"common
</VirtualHost>

Directory
//指定认证的目录

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

AuthName"testdomain.comuserauth"
//自定义认证的名字,作用不大

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

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

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

重新加载配置进行访问

#/usr/local/apache2.4/bin/apachectl-t
SyntaxOK
#/usr/local/apache2.4/bin/apachectlgraceful
#/usr/local/apache2.4/bin/htpasswd-cm/usr/local/apache2.4/docs/.htpasswdytl
#curl-xlocalhost:80-uytl:000000abc.com-I

/htpasswd为创建用户的工具,-c为create
//-m为指定密码加密的方式为MD5
.htpasswd为密码文件
ytl为创建的用户
//第二次不用加,否则密码文件会重置

配置验证
配置完可在Windows上访问地址www.abc.com,文件在
C:\Windows\System32\drivers\etc\hosts。打开文件在最后一行输入:

#你的IPwww.abc.com

接下来,关闭防火墙,设置selinux为Permissive(宽容模式,不会实际限
制domain/type的存取)

#systemctlstopfirewalld
#setenforce0

然后,去浏览器访问www.abc.com会有弹窗出现

域名跳转

一个网站可能有多个域名,在这种情况下,我们需要用到域名跳转,这样有两个作用:

一个站点有多个域名对SEO有影响

启用域名跳转 :是通过Apache的Rewrite模块来实现的(httpd.conf中启用该模块,httpd-vhosts.conf中定义跳转设置)

配置
设置不是以111.com开头的网站都跳转到111.com上
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost*:80>
    ServerAdminwebmaster@dummy-host.example.com
    DocumentRoot"/usr/local/apache2.4/docs/www.111.com"
    ServerNamewww.111.com
    ServerAlias111.com
    <IfModulemod_rewrite.c>//-需要mod__rewrite模块
       RewriteEngineon//打开rewrite功能
       

    RewriteCond%{HTTP_HOST}!^111.com$//定义rewrite的条件,当
主机名不是111.com时满足条件
    RewriteRule^/(.*)$http://111.com/$1[R=301,L]//定义rewrite规则,
    RewriteRule后面分为三个部分,第一部分为当前网址
//第二部分为要跳转的网址,第三部分是选项,需要括号括起来。
。
</IfModule>
ErrorLog"logs/111.com-error_log"
CustomLog"logs/111.com-access_log"common
</VirtualHost>
创建文件
#cd /usr/local/apache2.4/docs
#mkdir www.111.com
#cd www.111.com/
#vim index.html
www.111.com
#vim 123.php
<?php
echo"www.111.com/123.php"
?>
#/usr/local/apache2.4/bin/apachectl-t
#/usr/local/apache2.4/bin/apachectlgraceful
要实现跳转,需要rewrite模块的支持,所以查看是否安装该模块。如果没
有则还需要一些配置:
#/usr/local/apache2.4/bin/apachectl -M |greprewrite

如果不存在修改配置文件

#vi /usr/local/apache2.4/conf/httpd.conf

去掉LoadModulerewrite_modulemodules/mod_rewrite.so的注释

#/usr/local/apache2.4/bin/apachectl-t
SyntaxOK
#/usr/local/apache2.4/bin/apachectlgraceful
#/usr/local/apache2.4/bin/apachectl-M|greprewrite

配置验证

#curl-xlocalhost:802111.com.cn-I
//可以看见状态码301,跳转的网址是111.com

验证成功

配置访问日志

访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题。

要配置httpd访问日志,首先要在主配置文件中定义访问日志的格式,打开主配置文件:

# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
   ErrorLog "logs/111.com-error_log"
   CustomLog "logs/111.com-access_log"common

配置验证

#curl -xlocalhost:80 2111.com.cn -I
#tail /usr/local/apache2.4/logs/111-access_log

验证成功

访问日志不记录静态文件

apache的访问日志会记录网站每个文件被获取的信息,这样日志信息量会很大,我们排查日志的时候不容易筛选有用的记录。我们可以把静态文件的日志设置为不记录,提高我们排查日志信息的效率。

在conf/extra/httpd-vhosts.conf配置文件下进行编辑:

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost*:80>
    ServerAdminwebmaster@dummy-host.example.com
    DocumentRoot"/usr/local/apache2.4/docs/www.111.com"
    ServerNamewww.111.com
    ServerAlias111.com
    ErrorLog"logs/111.com-error_log"
    CustomLog"logs/111.com-access_log"common
</VirtualHost>

上传图片文件到image中

# cd /usr/local/apache2.4/docs/www.111.com/
# mkdir image
# ll image/linux.jpg

检查配置信息

# /usr/local/apache2.4/bin/apachectl -t
SyntaxOK
# /usr/local/apache2.4/bin/apachectlgraceful
# curl-xlocalhost:80 www.111.com/image/linux.jpg -I

查看日志

#tail -f /usr/local/apache2.4/logs/111.com-access_log

打开网页访问 111.com/image/linux.jpg

#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
       ServerAdminwebmaster@dummy-host.example.com
       DocumentRoot"/usr/local/apache2.4/docs/www.111.com"
       ServerNamewww.111.com
       ServerAlias111.com
       SetEnvIfRequest_URI".*\.gif$"image-request
       SetEnvIfRequest_URI".*\.jpg$"image-request
       SetEnvIfRequest_URI".*\.png$"image-request
       SetEnvIfRequest_URI".*\.bmp$"image-request
       SetEnvIfRequest_URI".*\.swf$"image-request
       SetEnvIfRequest_URI".*\.js$"image-request
       SetEnvIfRequest_URI".*\.css$"image-request
       ErrorLog"logs/111.com-error_log"
       CustomLog"logs/111.com-access_log"combinedenv=!image-request
</VirtualHost>
//先定义了一个image-request环境变量,把gif,jpg,png,bmp,swf,js,css等格式
文件全归类到此,env=!image-request表示日志记录不为image-request中表示的
静态文件。

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

#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful

配置验证

# curl -xlocalhost:80www.111.com/image/linux.jpg -I
另打开一个窗口,查看日志,关于jpg格式的没有访问日志信息
#tailf  ../../logs/111.com-access_log

验证成功

访问日记切割

随着网站访问量的增大,我们网站的访问日志文件也会变得很大,为了保持磁盘空间,方便访问日志的管理(备份、删除历史日志等。),我们可以进行日志切割,每天的访问日志独立切割出来。

在conf/extra/httpd-vhosts.conf配置文件下进行编辑:

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

<VirtualHost *:80>
    ServerAdmin lzx@123.com
    DocumentRoot "/data/wwwroot/123.com"
    ServerName 123.com
    ServerAlias www.123.com
   
    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
 
    ErrorLog "logs/123.com-error_log"
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%y%m%d.log 86400" common env=!img				#%y%m%d以年月日命名,86400秒即1天切割一次,rotatelogs是apache自带的切割日志工具。
</VirtualHost>

静态元素过期时间

介绍:
那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的
图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。
在httpd的配置文件中,我们是可以控制这个时间的。
配置
在httpd上我们可以控制文件过期时间,配置如下:

#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost*:80>
     Server Admin webmaster@dummy-host.example.com
     DocumentRoot"/usr/local/apache2.4/docs/www.111.com"
     ServerName www.111.com
     ServerA lias 111.com
     <IfModulemod_expires.c>
       ExpiresA ctive on 
       ExpiresByType image/gif"access plus 1 days“
       ExpiresByTypeimage/jpeg"access plus 24 hours"
       ExpiresByTypeimage/png"access plus 24 hours'
       ExpiresByTypetext/css "now plus 2 hour"
       ExpiresByTypeapplication/x-javascript"now plus 2 hours"
       ExpiresByTypeapplication/javascript"now plus 2 hours"
       ExpiresByTypeapplication/x-shockwave-flash"now plus 2 hours"
       ExpiresDefault"now plus 0 min"
     </IfModule>
   ErrorLog"logs/111.com-error_log"
CustomLog" logs/111.com-access_log" combined
</VirtualHost>

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

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

#/usr/local/apache2.4/bin/apachectl -t
Syntax OK
#/usr/local/apache2.4/bin/apachectl graceful

(3)配置验证
检查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_modulemodules/mod_expires.so
   //把前面#删掉
#/usr/local/apache2.4/bin/apachectl graceful
   //重新加载服务
#/usr/local/apache2.4/bin/apachectl -M|grep -i expires
expires_module(share)
   //有这行输出说明正确加载expires模块

下面进行测试:
上传linux.jpeg文件

#curl -xlocalhost:80 www.111.com/image/linux.jpeg -I
//max-age=86400说明将缓存86400秒,max-age=0说明没有该类型缓存
文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值