LAMP搭建总结

LAMP 搭建总结搭建思路如图:安装顺序:L(Linux)操作系统----->A(Apache)网站服务软件------->M(mysql)数据库软件------->P(php )php 解析软件一、

LAMP 搭建总结

搭建思路如图:

安装顺序:L(Linux)操作系统----->A(Apache)网站服务软件------->M(mysql)数据库软件------->P(php )php 解析软件

一、Linux

(一)选择Linux 发行版,我们选择centos6.6的64位操作系统来进行安装。选择minial 最小化安装。

(二)Ip 地址配置、ssh 配置、selinux 关闭、iptables 防火墙配置 ip 地址配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0,设置

ONBOOT=yes ------>网卡开机启动

BOOTPROTO=static -------->网上的模式为(static)静态

IP

,

IPADDR=192.168.1.252 ----->ip地址

NETMASK=255.255.255.0 ------->子网掩码

GATEWAY=192.168.1.1 ------->网关

DNS1=202.103.224.68 -------->第一个DNS 服务器

DNS2=202.103.225.68 -------->第二个DNS 服务器

Esc ,然后:wq保存退出。

ssh(openssh)配置

对于ssh ,我们一般要更改其端口号,禁止root 用户远程登陆,与配置rsa 秘钥对连接。

修改端口号,与禁止root 用户登陆:

vim /etc/ssh/sshd_config

找到:

#Port 22 ---->去掉前面的井号,并把22改成你想要的端口号

#PermitRootLogin yes -------->去掉前面的井号,并把yes 改成no 禁止root 登陆。

使用rsa 秘钥对:

使用puttygen 生成rsa 秘钥对,保存私钥到本机,在登陆的用户家目录下面新建.ssh/authorized_keys文件

mkdir /root/.ssh

vi /root/.ssh/authorized_keys

然后把公钥的文本复制进authorized_keys文件里面保存退出。

最后设置对应的权限:

chmod 700 /root/.ssh

chmod 600 /root/.ssh/authorized_keys

关闭selinux

,

setenforce0

vi /etc/selinux/config

把SELINUX=enforcing改成SELINUX=disabled

配置iptables 防火墙

清空filter 表的所有规则

iptables -t filter -F

iptables -t filter -X

iptables -t filter -Z

!!!!(注意)添加ssh 的端口进filter 表里的input

链,防止操作引起把自己封在外面。!!!!

Iptables -t filter -I INUPT -p tcp -m tcp --dport 22 -j ACCEPT (22可以改成你设置的ssh 端口)

把filter 表里的三个默认链分别设置成:

iptables -P INPUT DORP ---->入站先全部禁止掉

Iptables -P FORWORD ACCEPT ----->转发打开

Iptables -P OUTPUT ACCEPT ----->出站打开,免除多操作

除去上面开放的ssh 端口外,还有要开放的端口有:

Io 端口:iptables -A INPUT -i lo -j ACCEPT -->主机环回端口开启,以免有不必要的麻烦

ICMP 端口:iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPT Ping 检测口,在网络排查时必要的接口。

DNS 服务端口:iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT 域名解析服务器,不打开无法ping 通baidu.com 域名,也用不了yum 工具。

Apache (80)端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT Httpd 的端口,网站服务最主要用的。

(三)Yum 安装Lamp 一些基本的调用库

Apach Mysql所需要的库:

yum install -y libaio library cmake glibc gcc zlib-devel pcre pcre-devel

,

php 所需要的库:

需要源:epel (libmcrypt-devel这个包)

yum install -y epel-release

(i386)

Rpm -Uvh http://mirrors.ustc.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm

(x86_64)

Rpm -Uvh http://mirrors.ustc.edu.cn/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install -y libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype-devel libmcrypt-devel libjpeg-devel

二、Apache

(一)下载,解压,编译安装Apache

a. Apache2.2版本

wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.31.tar.bz2 tar -jxvf httpd-2.2.31.tar.bz2

cd httpd-2.2.31

./configure

--prefix=/usr/local/apache2

--with-included-apr

--enable-so

--enable-deflate=shared

--enable-expires=shared

--enable-rewrite=shared

--with-pcre

make

make install

为了能够正确配置,应该在每一步都进行echo $?来检查 是否为0。为0则表示上一个动作已经成功。

b. Apache 2.4 版本

因为2.4把apr 分离出来了,所以要先下载然后编译安装好才安装Apache 。 wget http://mirrors.hust.edu.cn/apache/apr/apr-1.5.2.tar.bz2

wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.5.4.tar.bz2

,

tar -jxvf apr-1.5.2.tar.bz2

tar -jxvf apr-util-1.5.4.tar.bz2

安装apr ./configure --prefix=/usr/local/apr

注意:在这一步很容易出错,编译之后会提示 rm: cannot remove `libtoolT': No such file or directory ,在出现这个提示之后如果使用命令 echo $? 来查看是否编译成功时,会显示0(成功),但

是时候到编译apache 的时候会重复出错,而原因正是因为编译apr 时的这个错误。

解决方法:在 apr-1.5.2/ 目录下打开configure 文件,找到 “ $RM "$cfgfile" ” ,将这一行注释掉即

可,时候重新编译。

make&&make install

安装apr-util

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

make&&make install httpd 安装

./configure

--prefix=/usr/local/apache2

--enable-so

--enable-deflate=shared

--enable-expires=shared

--enable-rewrite=shared

--with-pcre --with-apr=/usr/local/apr

--with-apr-util=/usr/local/apr-util/

Make

make install (二)设置Apache 的主配置文件与虚拟主机配置文件

a. 主配置文件的设置:

vim /usr/local/apache2/conf/httpd.conf

Apache2.2找到

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

修改为

Options FollowSymLinks

,

AllowOverride None

Order deny,allow

Allow from all

◆ Apache2.4找到

AllowOverride none

Require all denied

修改为

AllowOverride none

Require all granted

◆ 找到Include conf/extra/httpd-vhosts.conf把前面的井号去掉,开启虚拟主机。

b. 虚拟主机配置文件

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

# ServerAdmin webmaster@dummy-host.example.com

DocumentRoot "/tmp" ---->打开这里,tmp 改成你的网站目录 ServerName dummy-host.example.com ---->这里写你的域名 # ServerAlias www.dummy-host.example.com

# ErrorLog "logs/dummy-host.example.com-error_log"

# CustomLog "logs/dummy-host.example.com-access_log" common

(三)设置301跳转、防盗链、静态页面、访问控制等。

◆ 修改默认主机

,

复制黏贴vhost 主机配置,使其排在前头,能禁掉别的域名转向你的服务器。 主机的目录必须存在。

◆ 301跳转

vim /usr/local/apache2/conf/httpd.conf

找到LoadModule rewrite_module modules/mod_rewrite.so

把前面的#号去掉

添加

RewriteEngine on

RewriteCond {HTTP_HOST} ^www.vm.cn [OR] --->跳转前输入的域名

RewriteCond {HTTP_HOST} ^www.vm2.cn$--->跳转前输入的域名 RewriteRule ^/(.*)$ http://www.avm.cn/$1 [R=301,L]--->跳转后

◆ 用户认证

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

添加

AllowOverride AuthConfig

AuthName "server"

AuthType Basic

AuthUserFile /www/.htpasswd

require valid-user

创建用户

/usr/local/apache2/bin/htpasswd -c /www/.htpasswd admin

◆ 防盗链

SetEnvIfNoCase Referer "^http://.*.vm.cn" local_ref #白名单

SetEnvIfNoCase Referer ".*.vm.cn" local_ref #白名单

#配置防盗链的文件

Order Allow,Deny

Allow from env=local_ref

,

◆ 静态页面

在httpd.conf 主文件里找到

LoadModule expires_module modules/mod_expires.so

删掉前面的#号启动模块

然后在/usr/local/apache2/conf/extra/httpd-vhosts.conf

加入

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/x-shockwave-flash "now plus 2 hours"

ExpiresDefault "now plus 0 min"

◆ 访问控制 Apache2.2

网站禁止

AllowOverride None

Order allow,deny #deny(禁止) 在前面,就先看这个语句。allow (允许)一般写在前面

Allow from all

Deny from 192.168.1.22 #禁止192.168.1.22访问

禁止访问某些文件

Order deny,allow

Deny from all

Allow from 192.168.1.210 #允许192.168.1.210访问

Apache2.4

禁止ip 访问网站

AllowOverride none

Require all granted

,

Require not ip 192.168.1.210

禁止访问某些文件

Require all denied

Require ip 192.168.1.251

◆ 限制user_agent

在配置文件找到

标签

内加入

Rewritecond {HTTP_USER_AGENT} ^.*curl.* [NC,OR] Rewritecond {HTTP_USER_AGENT} ^.*chrome.* [NC] Rewriterule .* - [F]

能够限制某些浏览器类型。

(四)配置记录日志

◆ 日志按每天进行切割。

先把vhost 配置下面的

common

换成

combined

然后在“”中加入

"|/usr/local/apache2/bin/rotatelogs -l

/usr/local/apache2/logs/hd.com-access_Ymd_log 86400" 以每天进行分割。

◆ 自定义记录

在customlog 行上头加入

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 行这行的末尾加 上 env=!image-request

,

三、Mysql

(一)下载并编译安装Mysql

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz

tar -zxvf mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz mv mysql-5.7.10-linux-glibc2.5-x86_64 /usr/local/mysql useradd -s /sbin/nologin -M mysql

mkdir -p /data/mysql

chown -R mysql:mysql /data/mysql

5.5以下

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

5.7以上

./bin/mysqld --user=mysql --datadir=/data/mysql --initialize ./bin/mysql_ssl_rsa_setup --datadir=/data/mysql

(二)加入init.d 服务,并启动mysql

cp support-files/my-default.cnf /etc/my.cnf vim /etc/my.cnf //编辑或者修改 basedir = /usr/local/mysql datadir = /data/mysql

port = 3306

socket = /tmp/mysql.sock

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

chkconfig mysqld on

service mysqld restart

ps aux |grep mysqld

(三)修改默认数据库密码

5.5以下没有初始密码的

标签: