首页 > 其他 > 详细

0.6 LAMP搭建

时间:2017-02-18 17:21:07      阅读:228      评论:0      收藏:0      [点我收藏+]

Centos 6.7+Nginx 1.6.3+PHP5.5.32+MySQL5.5.49

Centos 6.7+Apache 2.2.31+php5.3.27+MySQL5.5.49

配置Apache web服务器

新装一台服务器web02

hostname web02

vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=web02

vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=10.0.0.7

vim /etc/sysconfig/network-scripts/ifcfg-eth1
IPADDR=172.16.1.7

/etc/init.d/network restart

logout

下载Apache

mkdir /home/oldboy/tools -p
cd /home/oldboy/tools/
yum install -y wget
wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.32.tar.gz
tar xf httpd-2.2.32.tar.gz 
cd httpd-2.2.32
#less INSTALL   #可以查看安装
#less REANME
yum install -y zlib zlib-devel gcc
rpm -qa zlib zlib-devel gcc
./configure --prefix=/application/apache2.2.32 --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-so --with-mpm=worker --enable-rewrite
make
make install
/bin/ln -s /application/apache2.2.32/ /application/apache
ll /application/apache/
==========================
cd /application/apache/htdocs/
mkdir bbs blog www

修改主配置文件 vim /application/apache/conf/httpd.conf

405行 Include conf/extra/httpd-vhosts.conf
    把注释去掉打开,加载host文件了

#ServerName www.example.com:80

ServerName 127.0.0.1:80   改成这样,因为我们没有给他一个完整的域名

145行     Options -Indexes FollowSymLinks  # -Indexes 加一个减号就不会再浏览器再出现列表了

cat /application/apache/conf/extra/httpd-vhosts.conf 文件配置讲解

NameVirtualHost *:80   表示是基于域名的虚拟主机,*表示所有网卡的IP,80表示端口

一个VirtualHost就是相当于Nginx的server标签

<VirtualHost *:80>
    ServerAdmin aaromail@163.com  #管理员邮箱
    DocumentRoot "/application/apache2.2.32/htdocs/www" #相当于Nginx的root
    ServerName www.etiantian.org # 域名
    ServerAliasetiantian.org # 别名
    ErrorLog "logs/www-error_log" # 错误日志,要写在Apache的安装目录下
    CustomLog "logs/www-access_log" common # 访问日志
</VirtualHost>

vim /application/apache/conf/extra/httpd-vhosts.conf

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn‘t need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option ‘-S‘ to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin aaromail@qq.com
    DocumentRoot "/application/apache2.2.32/htdocs/www"
    ServerName www.etiantian.org
    ServerAlias etiantian.org
    ErrorLog "logs/www-error_log"
    CustomLog "logs/www-access_log" common
</VirtualHost>
###
<VirtualHost *:80>
    ServerAdmin aaromail@qq.com
    DocumentRoot "/application/apache2.2.32/htdocs/bbs"
    ServerName bbs.etiantian.org
    ErrorLog "logs/bbs-error_log"
    CustomLog "logs/bbs-access_log" common
</VirtualHost>
#
<VirtualHost *:80>
    ServerAdmin aaromail@qq.com
    DocumentRoot "/application/apache2.2.32/htdocs/blog"
    ServerName blog.etiantian.org
    ErrorLog "logs/blog-error_log"
    CustomLog "logs/blog-access_log" common
</VirtualHost>

启动Apache

../bin/apachectl start

../bin/apachectl graceful  # 如果启动的话可以优雅重启

虚拟机分类:

1)基于域名  *****
2)基于端口
3)基于IP

所谓的基于XX,就是靠XX来区分不通的站点,支持各种混合,N多个虚拟主机。
1)基于域名的虚拟主机,通过域名来区分虚拟主机===》应用:外部网站。
2)基于端口的虚拟主机,通过端口来区分虚拟主机===》应用:公司内部网站,网站的后台。
3)基于IP的虚拟主机,没什么场景用了。

虚拟主机设置: 域名 站点目录

www.etiantian.org           /application/apache/htdocs/www/

blog.etiantian.org           /application/apache/htdocs/blog/

bbs.etiantian.org           /application/apache/htdocs/bbs/

ll /application/apache/conf/httpd.conf  主配置文件

ll /application/apache/conf/extra/   包含配置文件

[root@web02 ~]# echo "bbs.etiantain.org" > /application/apache/htdocs/bbs/index.html

[root@web02 ~]# echo "blog.etiantian.org" > /application/apache/htdocs/blog/index.html

[root@web02 ~]# echo "www.etiantain.org" > /application/apache/htdocs/www/index.html

172.16.1.5/24   lb01
172/16.1.6/24   lb02
172.16.1.7/24   web02 www.etiantian.org etiantian.org blog.etiantian.org
172.16.1.8/24   web01
172.16.1.51/24  db01 db01.etiantian.org
172.16.1.31/24  nfs01

测试

web01服务器 #记得去掉IP的子网掩码,不然用不了

[root@web01 extra]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5/24   lb01
172/16.1.6/24   lb02
172.16.1.7   web02 www.etiantian.org etiantian.org blog.etiantian.org bbs.etiantian.org
172.16.1.8/24   web01
172.16.1.51/24  db01 db01.etiantian.org
172.16.1.31/24  nfs01
172.16.1.41/24  backup
172.16.1.61/24  m01

[root@web01 ~]# curl www.etiantian.org

www.etiantain.org

[root@web01 ~]# curl bbs.etiantian.org

bbs.etiantain.org

[root@web01 ~]# curl blog.etiantian.org

blog.etiantian.org

到此,我们就把Apache的以域名进行访问的虚拟主机配置完毕。

配置php5.3.27

下载php

cd /home/oldboy/tools/
wget http://mirrors.sohu.com/php/php-5.3.27.tar.gz
tar xf php-5.3.27.tar.gz 
cd php-5.3.27

yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
cd /home/oldboy/tools
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel
yum -y install mcrypt
yum install openssl openssl-devel -y
rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel libmcrypt-devel mhash mcrypt freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel


./configure --prefix=/application/php5.3.27 --with-mysql=mysqlnd --with-apxs2=/application/apache/bin/apxs --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --enable-short-tags --enable-static --with-xsl --enable-ftp
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
make
make install
ln -s /application/php5.3.27/ /application/php
ls /application/php
[root@web02 php-5.3.27]# ll /application/apache/modules/
总用量 30004
-rw-r--r-- 1 root root     9262 2月  16 16:26 httpd.exp
-rwxr-xr-x 1 root root 30710105 2月  16 19:56 libphp5.so
[root@web02 php-5.3.27]# grep libphp5.so /application/apache/conf/httpd.conf
LoadModule php5_module        modules/libphp5.so
[root@web02 php-5.3.27]# cp php.ini-production /application/php/lib/php.ini

PHP编译参数详解

[root@lnmp01 tools]# tar xf php-5.3.27.tar.gzß解压压缩包

[root@lnmp01 tools]# cd php-5.3.27 ß进入php安装目录

./configure ß编译参数

–prefix=/application/php5.3.27 ß指定php的安装路径为/application/php5.3.27

–with-mysql=/application/mysql/
ß需要指定mysql的安装路径,安装PHP需要的MySQL相关内容。当然如果没有MySQL软件包,也可以不单独安装,这样的情况可使用–with-mysql=mysqlnd替代–with-mysql=/application/mysql,因为PHP软件里面已经自带连接MySQL的客户端工具。    

--with-mysql=mysqlnd \ 使用此参数本地可以没有MySQL软件包.

–with-iconv-dir=/usr/local/libiconv    ßlibiconv库,各种字符集间的转换

–with-freetype-dir    ß打开对freetype字体库支持

–with-jpeg-dir ß打开对jpeg图片的支持

–with-png-dir ß打开对png图片的支持

–with-zlib ß打开zlib库的支持,用于http压缩传输

–with-libxml-dir=/usr ß打开libxml2库的支持

–enable-xml    ß

–disable-rpath ß关闭额外的运行库文件

–enable-safe-mode ß打开安全模式

–enable-bcmath ß打开图片大小调整,用zabbix监控时会用到该模块

–enable-shmop ß

–enable-sysvsem ß使用sysv信号机制,则打开此选项

–enable-inline-optimization ß优化线程

–with-curl ß打开curl浏览工具的支持

–with-curlwrappers ß运维curl工具打开url流

–enable-mbregex ß    

–enable-mbstring ß支持mbstring

–with-mcrypt ß编码函数库

–with-gd ß打开gd库的支持

–enable-gd-native-ttf ß支持TrueType字符串函数库

–with-openssl ßopenssl的支持,加密传输时用到

–with-mhash ßmhash算法的扩展

–enable-pcntl ßfreeTDS需要用到,可能是链接mssql

–enable-sockets ß打开sockets支持

–with-xmlrpc ß打开xml-rpc的c语言

–enable-zip ß打开对zip的支持

–enable-soap ßsoap模块的扩展

–enable-short-tags ß开始和标记函数

–enable-zend-multibyte ß支持zend的多字节

–enable-static ß生成静态链接库

–with-xsl ß打开XSLT文件支持,扩展libXML2库,需要libxslt软件

–enable-ftp    ß打开ftp的支持

–enable-fpm    ß表示激活PHP-FPM方式服务,即FactCGI方式运行PHP服务。

–with-fpm-user=www    ß指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。

–with-fpm-group=www    ß指定PHP-FPM进程管理用户组为www,此处最好和Nginx服务用户组统一。

[root@lnmp01 php]# ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/ ß软链接

[root@lnmp01 php]# touch ext/phar/phar.phar ß创建php安装需要文件

[root@lnmp01 php]# make && make install ß编译安装

[root@lnmp01 php]# ln -s /application/php5.3.27/ /application/php ß链接去版本(方便升级及后续维护)

[root@lnmp01 php]# cp /application/tools/php-5.3.27/php.ini-production /application/php/lib/php.ini ß拷贝php.ini需要配置文件

[root@lnmp01 php]# cp /application/php/etc/php-fpm.conf.default /application/php/etc/php-fpm.conf ß拷贝php-fpm配置文件

[root@lnmp01 php]# /application/php/sbin/php-fpm ß启动php-fpm

3、配置httpd.conf

vim /application/apache/conf/httpd.conf

311添加以下 
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps

apache的首页文件
DirectoryIndex index.html  更改为     DirectoryIndex index.php index.html

67行修改成以下
#User daemon
#Group daemon
User www
Group www
cd /application/apache/conf/
../bin/apachectl -t
../bin/apachectl graceful

跟 web01的www用户id 一致。

[root@web01 ~]# id www
uid=501(www) gid=501(www) 组=501(www)

回到web02创建用户

[root@web02 conf]# useradd www -u 501 -s /sbin/nologin -M

[root@web02 conf]# id www
uid=501(www) gid=501(www) 组=501(www)

cd ../htdocs/blog/
echo "<?php phpinfo(); ?>" >phpinfo.php

MAC 客户端做解析之后 浏览器输入 http://blog.etiantian.org/phpinfo.php 出现页面就成功了。

测试连接MySQL数据库是否可行

vim test_mysql.php

<?php
        $link_id=mysql_connect (‘db01.etiantian.org‘,‘wordpress‘,‘123456‘) or mysql_error () ;
        if ($link_id) {
                echo "mysql successful by oldboy !";
        }else{
                echo mysql_error () ;
        }
?>

MAC 客户端做解析

172.16.1.7 www.etiantian.org etiantian.org blog.etiantian.org

随后在浏览器中输入http://blog.etiantian.org/test_mysql.php就可以看到mysql successful by oldboy !表示成功了。

LANP 搭建完成 MySQL分离完成。

搭建博客直接的到web01打包就可以了。

[root@web01 ~]# cd /application/nginx/html/

[root@web01 html]# tar zcvf blog.tar.gz blog/

[root@web01 html]# scp blog.tar.gz root@10.0.0.7:/home/oldboy/tools/

web02操作

[root@web02 blog]# cd ../

[root@web02 htdocs]# mv /home/oldboy/tools/blog.tar.gz .

[root@web02 htdocs]# tar xf blog.tar.gz

[root@web02 htdocs]# chown -R www.www blog

现在在MAC浏览器中输入http://blog.etiantian.org/就可以访问博客了。

这时候需要到博客的设置----固定链接格式调整回到朴素的选项才能正常访问图片,不然会提示找不到资源403错误,可能是修改后的静态路径让服务器找,肯定就找不到。

搭建NFS实现资源共享

[root@web02 htdocs]# mv blog/wp-content/uploads/2017/02/ /tmp

把我们原来的图片路径文件移走,再做NFS看看如果还有那就说明NFS成功了。

[root@web02 htdocs]# rpm -qa rpcbind

[root@web02 htdocs]# yum -y install rpcbind nfs-utils

[root@web02 htdocs]# /etc/init.d/rpcbind start

[root@web02 htdocs]# chkconfig rpcbind on

[root@web02 htdocs]# showmount -e 172.16.1.31     # 记得要启动NFS服务器
Export list for 172.16.1.31:
/data1 172.16.1.0/24
/data  172.16.1.0/24

[root@web02 htdocs]# mount -t nfs 172.16.1.31:/data/nfs-blog /application/apache/htdocs/blog/wp-content/uploads/

[root@web02 uploads]# vim /etc/rc.local 
/bin/mount -t nfs 172.16.1.31:/data/nfs-blog /application/apache/htdocs/blog/wp-content/uploads/on/apache/htdocs/blog/wp-content/uploads/

至此,NFS和MySQL都做好了海域Apache。

Apache常用的两种工作模式

Apache默认是prefork模式。编译没有指定的话

worker模式

1)线程模式

2)占用资源少

3)稳定性略差

4)并发大

prefork模式

1)进程模式

2)占用资源多

3)稳定

4)并发一般

Apache调优

[root@web02 conf]# vim /application/apache/conf/httpd.conf

Include conf/extra/httpd-mpm.conf  # 把这条打开这是不同模式下可以进行调优的文件。

[root@web02 conf]# cd extra/

[root@web02 extra]# vim httpd-mpm.conf  # 这里修改相当于Nginx修改工作模式和线程并发连接数


<IfModule mpm_worker_module>

    StartServers          5
    MaxClients          1500
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   5000
</IfModule>


[root@web02 extra]# ../../bin/apachectl -t          # 提示我们修改之后应怎么设置才对
WARNING: MaxClients of 1500 would require 60 servers,
 and would exceed the ServerLimit value of 16.
 Automatically lowering MaxClients to 400.  To increase,
 please see the ServerLimit directive.
Syntax OK


[root@web02 extra]# vim httpd-mpm.conf 

<IfModule mpm_worker_module>
ServerLimit          1500
    StartServers          5
    MaxClients          1500
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   5000
</IfModule>

[root@web02 extra]# ../../bin/apachectl -t          # 现在没有提示了
Syntax OK

[root@web02 conf]# cd /application/apache/conf/

其中这么一段配置是来指定 /application/apache/conf/extra/httpd-vhosts.conf里中的 DocumentRoot "/application/apache2.2.32/htdocs/blog" 路径的。如果这时候/httpd-vhosts.conf里的DocumentRoot "/application/apache2.2.32/htdocs/blog"使用了不是<Directory "/application/apache2.2.32/htdocs">指定的路径的话,那么访问就会出现403错误,如果我们要想修改DocumentRoot "/var/html"的话,那么就需要在httpd.conf配置文件里在增加一个

<Directory "/var/html">
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Directory "/application/apache2.2.32/htdocs">
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

0.6 LAMP搭建

原文:http://www.cnblogs.com/aofo/p/6413484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!