lamp搭建

此实验在rhel7上完成
安装的软件包分别为:httpd-2.4.12.tar.bz2 mysql-5.6.21.tar.gz libmcrypt-2.5.8.tar.bz2 mhash-0.9.9.9.tar.bz2 mcrypt-2.6.8.tar.gz
php-5.6.9.tar.xz


一、 安装httpd源码包
1 yum install -y gcc make gcc-c++
2 tar xvf httpd-2.4.12.tar.bz2 --/root目录下
3 chmod +x apache.sh
4 进入httpd-2.4.12,../apache.sh安装即可(对于2.4版本的httpd源码包,在rhel7上可以安装,在rhel6上需安装高版本的apr源码包)

vi /usr/local/apache2.4/bin/apxs
改第一行为 #!/usr/bin/perl -w :在php安装时指定with-apxs2=/usr/local/apache2/bin/apxs会报错,改为如下之后,则不会报错。

5 开启apache服务
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl start -->> 开启服务

注意小事项:
将在linux上打开windows编辑的脚本放入linux中,运行时会出现^M ,出现此状况由于windows上以\r\n转换行,在linux上换行则是\n,
因此用vi编辑此文本,在末行模式输入 set nobomb ; set ff=unix


二、安装mysql源码包
1 chmod +x mysql.sh
2 ./mysql.sh mysql-5.6.21.tar.gz -->>由于mysql.sh脚本中有相应将mysql-5.6.21.tar.gz解压的语句


三、安装mcrypt
1 安装libmcrypt
tar xvf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/libmcrypt
make && make install

2 安装mhash
tar xvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure --prefix=/usr/local/mhash
make && make install

3 为成功安装mcrypt需配置好相应的环境
vi /etc/ld.so.conf -->> 在ld.so.conf中追加这两行,之后使用ldconfig(configure dynamic linker run-time binding)
/usr/local/libmcrypt/lib
/usr/local/mhash/lib
ldconfig

export LDFLAGS="-L/usr/local/mhash/lib -I/usr/local/mhash/include"
export CFLAGS="-I/usr/local/mhash/include"

4 安装mcrypt
tar xvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure --prefix=/usr/local/mcrypt --with-libmcrypt-prefix=/usr/local/libmcrypt
make && make install

四、安装php
1 chmod +x php.sh
2 tar xvf php-5.6.9.tar.xz
3 cd php-5.6.9
4 ../php.sh

之后将源码包中的php.ini-development复制到php5.6的安装目录下即可
cp php.ini-development /usr/local/php5.6/php.ini

五、配置
1 给httpd配置启动脚本
(1) 第一种方法
cp httpd启动脚本 /etc/rc.d/init.d/httpd
chmod +x httpd
chkconfig --add httpd
service httpd start
(2)第二种方法
cp /usr/local/apache2.4/bin/apachectl /etc/rc.d/init.d/httpd
vi /etc/rc.d/init.d/apachectl
### BEGIN INIT INFO
#Default_Start: 2 3 4 5
#Default_end: 0 1 6
### END INIT INFO
service httpd stop/start/restart -->>无status


vi /usr/local/apache2.4/conf/httpd.conf
LoadModule php5_module modules/libphp5.so #这一行本没有, 装完PHP后会自动加上的
<FilesMatch "\.php$"> //re
SetHandler application/x- httpd-php
</FilesMatch>

六、新建一个index.php文件的简单测试
vi /usr/local/apache2.4/htdocs/index.php
<?php
phpinfo();

注意事项:关闭防护墙,selinux,NetworkManager

七、虚拟主机
1 修改/usr/local/apache2.4/conf/httpd.conf
# Virtual hosts
# Local access to the Apache HTTP Server Manual
Include conf/extra/ httpd-vhosts.conf

2 修改配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin admin@a1.com -->>邮箱管理者
DocumentRoot "/www/a1" -->>网站文件存放在此
ServerName www.a1.com -->> 域名需要购买
ServerAlias www.a1a1.com www.a11.com www.a111.com -->>域名别名,可多个别名
ErrorLog "logs/a1/error_log"
CustomLog "logs/a1/access_log" common
</VirtualHost>
<Directory "/www/a1">
Require all granted
</Directory>

<VirtualHost *:80>
ServerAdmin admin@a2.com
DocumentRoot "/www/a2"
ServerName www.a2.com
ErrorLog "logs/a2/error_log"
CustomLog "logs/a2/access_log" common
</VirtualHost>
<Directory "/www/a2">
Require all granted
</Directory>

3 创建文件
mkdir -p /www/a1 /www/a2
mkdir /usr/local/apache2.4/logs/a1 /usr/local/apache2.4/a2

4 重启服务
service httpd restart

5 在电脑上测试
linux上 vi /etc/hosts
172.17.10.128 www.a1.com
172.17.10.128 www.a2.com

windows c:\Windows\System32\drivers\etc\hosts
172.17.10.128 www.a1.com
172.17.10.128 www.a2.com

配置dns服务器

6 注意事项
当http://172.17.10.128 显示的是虚拟主机文件中的第一个


nginx做虚拟主机
# another virtual host using mix of IP-, name-, and port-based configuration
#
server {
server_name www.a1.com alias www.a11.com www.a111.com;

location / {
root /www/a1;
index index.html index.htm;
}
}

mkdir -p /www/a1
service nginx restart

vi /etc/hosts
172.17.10.128 www.a1.com
172.17.10.128 www.a11.com


八、别名设置
mkdir /usr/local/apache2.4/htdocs/rh
vi index.html

<IfModule alias_module>
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
Alias /xyz /usr/local/apache2.4/htdocs/rh
</IfModule>

http://172.17.8.6/xyz -->> http://172.17.8.6/rh/index.html

<IfModule alias_module>
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
Alias /rh /usr/local/apache2.4/abc
</IfModule>
<Directory "/usr/local/apache2.4/abc">
Require all granted --->> 针对该文件夹设置权限
</Directory>


<IfModule alias_module>
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
ScriptsAlias /cgi-bin/ "/usr/local/apache2.4/cgi-bin/"
</IfModule>
从而可以访问cgi-bin文件夹下的目录

http://172.17.8.4/cgi-bin/test-cgi -->>可以访问/usr/local/apache2.4/cgi-bin/test-cgi

九、phpMyAdmin-4.4.9-all-languages的安装
1 cp -r phpMyAdmin-4.4.9-all-languages /usr/local/apache2.4/htdocs/phpMy
2 cd /usr/local/apache2.4/htdocs/phpMy
3 cp config.sample.inc.php config.inc.php
4 vi config.inc.php
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysql5.6.sock';
$cfg['Servers'][$i]['compress'] = false;
5 由于不能匿名登陆,因此需要给用户配置相应的密码
/usr/local/mysql5.6/bin/mysqladmin -uroot password "aixocm" -S
/var/run/mysqld/mysql5.6.sock --首次给用户root设置密码

/usr/local/mysql5.6/bin/mysqladmin -uroot -paixocm password"passwd" -S
/var/run/mysqld/mysql5.6.sock --给root用户重新设置密码
运行成功:Warning: Using a password on the command line interface can be insecure.

/usr/local/mysql5.6/bin/mysql -uroot -ppasswd -S /var/run/mysqld/mysql5.6.sock
进入mysql交互界面


6 浏览器访问
http://172.17.10.252/phpMy/index.html

十、查看httpd的配置手册
1 查看httpd的配置手册
vi /usr/local/apache2.4/conf/httpd.conf
(1)# Local access to the Apache HTTP Server Manual
Include conf/extra/ httpd-manual.conf -->> 去掉这个#号,重启服务

(2)确保这些模块开启
LoadModule alias_module modules/mod_alias.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule negotiation_module modules/mod_negotiation.so

(3) vi /usr/local/apache2.4/conf/extra/httpd-manual.conf
添加该行以防乱码: AddDefaultCharset utf

或者在网页上添加一行 <meta charset="utf-8">

(4) service httpd restart 重启服务
http://172.17.10.128/manual 则可以查看httpd的配置文件

十二、乱码问题的解决
目的:让客户端的浏览器知道编辑改网页文件时是使用什么字符集编辑的,从而浏览器
可以正确解释该网页

1 网页上编辑
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

2 把括号里面的信息发到httpd头部
header("content-type: text/html; charset=utf-8");

header()发送的内容先到达浏览器, 2个都有, 浏览器只认http头而不认meta
 
httpd.conf中AddDefaultCharset utf-8
apache在给浏览器响应时, 会给所有页面文件均加上charset发到http头
相当于给每个文件都加了一行header()
但如果文件中本身就有header(), 就用文件本身的, 而不会用AddDefaultCharset指定的
 
php.ini中default_charset = "UTF-8"作用同httpd.conf中的AddDefaultCharset
 
推荐做法: 每个页面文件都加header()或meta, httpd.conf中不指AddDefaultCharset
 
文件中的内容在保存时用的字符集: 用editplus打开php文件或html文件, 另存时选择的字符集

在.php文件中
<?php
head("content-type:text/html;charset:utf-8");
?>

十三、mpm的prefork和worker
在httpd源码包安装使指定
1 静态链接
./configure --with-mpm(静态链接)=worker或者prefork,而event/winnt没用
默认是worker

在/usr/local/apache2.4/modules/文件夹下,不会存在mpm模块,在httpd.conf
文件中 LoadModule mpm_worker_module modules/mod_mpm_worker.so也是
没有出现的,Include conf/extra/ httpd-mpm.conf也被注释,即添加了#号。

使用/usr/local/apache2.4/bin/apachectl help
-t -D DUMP_MODULES 动态连接文件
-l 查看静态连接文件

在静态链接中,使用-l会出现prefork.c或worker.c


2 动态链接
./configure --enable-mpms-shared=all (动态链接)

在/usr/local/apache2.4/modules/文件夹下,会存在两个mpm模块
mod_mpm_prefork.so
mod_mom_worker.so

在/usr/local/apache2.4/conf/httpd.conf会加载模块
LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

当使用动态链接时,该项会自动开启
# Server-pool management (MPM specific)
Include conf/extra/ httpd-mpm.conf

/usr/local/apache2.4/conf/extra/http-mpm.conf
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
从而就可以根据配置文件,配置worker的参数


十一、apache零碎知识
1 将/etc/rc.d/init.d/中的脚本,chkconfig --add **需要查看脚本中如下内容才能添加
#chkconfig - 87 15 -->> 在rhel6中可以

### BEGIN INIT INFO -->> 在rhel6和rhel7中都可以,推荐使用
#Default-Start: 2 3 4 5
#Default-End: 0 1 6
### END INIT INFO


2 查看apache的man手册,cd /usr/local/apache2.4/man中,使用less + man手册名
就可以查看man手册的内容。对于系统manual手册也是使用less命令进行查看

3 /usr/local/apache2.4/logs/httpd.pid当apache服务开启,则会生成这个文件,这个文件
保留的是httpd进程的id号

4 查看apache的html文档
cd /usr/local/apache2.4/
cp -r manual htdocs
在客户端浏览器中,http://172.17.10.128/manual/index.html.en则可以进行查看

5 /usr/local/apache2.4/conf/httpd.conf
ServerRoot “/usr/local/apache2.4” --apache服务安装路径
Listen 80 --apache服务监听端口
LoadModule php5_module modules/libphp5.so --加载模块 ,存在/usr/local/apache2.4/modules中
User daemon --apache子进程以daemon的身份运行,主进程以root用户身份运行
ServerAdmin you@example.com --服务器管理者的邮箱
ServerName www.example.com:80 --服务器名字,随便取
DocumentRoot "/usr/local/apache2.4/htdocs" --html文件的存放路径
<Directory "/usr/local/apache2.4/htdocs"> --对html存放文件的一种限制
Options Indexes FollowSymLinks --如果去掉indexs,当文件中没有index.html文件,访问网站会报错
Require all granted 所有人都能访问
</Directory>
<IfModule dir_module>
DirectoryIndex index.html --http://172.17.10.125访问index.html是由它指定的
</IfModule>
ErrorLog "logs/error_log" --错误日志的存放路径

apache.sh

#!/bin/bash
#comment
yum install -y openssl-devel apr-util-devel
./configure \
--prefix=/usr/local/apache2.4 \
--with-mpm=prefork \
--with-z=/usr \
--enable-so \
--enable-deflate=shared \
--enable-rewrite=shared \
--enable-expires=shared \
--enable-static-support \
--enable-ssl \
--with-ssl=/usr/lib \
--enable-auth-digest \
--enable-cgi \
--enable-suexec \
--with-suexec-caller=daemon \
--with-suexec-docroot=/usr/local/apache2.4/htdocs

make
make install

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


httpd启动脚本

#!/bin/bash
### BEGIN INIT INFO
#Default-Start: 2 3 4 5
#Default-Stop: 0 1 6
### END INIT INFO
httpd=/usr/local/apache2.4/bin/apachectl
httpd_pid=/usr/local/apache2.4/logs/httpd.pid
start() {
if [ -e $httpd_pid ]; then
echo "httpd is already running..."
exit 1
fi
echo $"Starting httpd..."
$httpd start
}
stop() {
echo $"Stopping httpd..."
$httpd stop
}
reload() {
echo $"Reloading httpd..."
$httpd restart
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
reload
;;
status)
if [ -e $httpd_pid ]; then
echo "httpd is running..."
else
echo "httpd is stop"
fi
;;
*)
echo $"Usage: httpd {start|stop|restart|status}"
exit 1
esac


mysql安装

#!/bin/bash
#set ff=unix
#set nobomb
#./mysql.sh mysql-5.6.21.tar.gz
name1="$1"
name2=${name1/.tar.gz/}

if ! grep -qi "^mysql" /etc/group; then
groupadd -g 27 mysql
fi

if ! id mysql >/dev/null 2>&1; then
useradd -u 27 -g mysql -s /sbin/nologin -M mysql
fi

yum install -y cmake make gcc gcc-c++ ncurses-devel bison >/dev/null 2>&1
yum install -y perl-Data-Dumper #7上安装

[ -d /usr/local/mysql5.6 ] && rm -rf /usr/local/mysql5.6
[ -d /database ] && rm -rf /database/* || mkdir /database

if [ -d "$name2" ]; then
[ -e "$name2/CMakeCache.txt" ] && rm -f "$name2/CMakeCache.txt"
else
tar xf "$name1"
fi

cd $name2
#cmake的作用主要就是用来产生CMakeCache.txt文件, 然后make就按这个cache文件来编译
#man cmake
#cmake -LH产生CMakeCache.txt文件, 然后查看全部变量
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql5.6 \
-DMYSQL_DATADIR:PATH=/database \
-DSYSCONFDIR:PATH=/usr/local/mysql5.6/etc \
-DWITH_DEBUG:BOOL=on
make
make install

mkdir /usr/local/mysql5.6/etc

cat <<! >/usr/local/mysql5.6/etc/my.cnf
[mysqld]
basedir=/usr/local/mysql5.6
datadir=/database
socket=/var/run/mysqld/mysql5.6.sock
pid-file=/var/run/mysqld/mysql5.6.pid
port=3307
user=mysql

[mysqld_safe]
log-error=/var/log/mysqld/mysql5.6-error.log
!

[ -d /var/run/mysqld ] && rm -rf /var/run/mysqld/* || mkdir /var/run/mysqld
[ -d /var/log/mysqld ] && rm -rf /var/log/mysqld/* || mkdir /var/log/mysqld

chown -R mysql.mysql /usr/local/mysql5.6 /database /var/run/mysqld /var/log/mysqld

/usr/local/mysql5.6/scripts/mysql_install_db \
--basedir=/usr/local/mysql5.6 \
--datadir=/database \
--user=mysql

cp /usr/local/mysql5.6/support-files/mysql.server /etc/rc.d/init.d/mysql5.6
sed -i '/conf=/c conf=./etc/my.cnf' /etc/rc.d/init.d/mysql5.6

chkconfig --add mysql5.6

service mysql5.6 start


php.sh

#!/bin/bash
#comment
yum install libxml2-devel libpng-devel -y >/dev/null 2>&1
./configure \
--prefix=/usr/local/php5.6 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql5.6 \
--with-mysqli=/usr/local/mysql5.6/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql5.6 \
--with-gd \
--with-config-file-path=/usr/local/php5.6 \
--enable-soap \
--enable-mbstring \
--enable-sockets \
--with-zlib \
--with-gettext \
--enable-calendar \
--enable-fpm \
--with-fpm-user=daemon \
--with-fpm-group=daemon \
--with-mcrypt=/usr/local/libmcrypt
make
make install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值