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
网站禁止
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以下没有初始密码的