首页 > 代码库 > lamp

lamp

前言:最近在找工作,想把之前学过用过的东西总结下,今天弄下lamp吧。

  • LAMP的安装

httpd-2.2.31  mysql-5.1.73  php-5.5.29   CentOS release 6.7 32位

先是MySQL的安装

 1  # cd /usr/local/src/ 2  # wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.45-linux2.6-i686.tar.gz 3  # tar zxvf /usr/local/src/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz 4  # mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql 5   6  建立MySQL用户 7  # useradd -s /sbin/nologin mysql 8   9  初始化数据库10  # cd /usr/local/mysql11  # mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql12  # ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql13  --user 定义数据库的所属主, --datadir 定义数据库安装到哪里14 15 配置MySQL16  # cp support-files/my-large.cnf /etc/my.cnf17  # cp support-files/mysql.server  /etc/init.d/mysqld18  # chmod 755 /etc/init.d/mysqld19  # vim /etc/init.d/mysqld20 需要修改的地方有 “datadir=/data/mysql” (前面初始化数据库时定义的目录)21  # chkconfig --add mysqld22  # chkconfig mysqld on23  # service mysqld start

 

Apache编译安装

# cd /usr/local/src/# wget  http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz# tar zxvf httpd-2.2.16.tar.gz# 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  正则相关的一个库--prefix 指定安装到哪里, --enable-so 表示启用DSO [1] --enable-deflate=shared 表示共享的方式编译deflate,后面的参数同理。# make# make install

Apache有三种工作模式。 prefork/ even/ worker

编译安装时候,可以通过 --with-mpm = 参数来指定工作模式,一般默认是preker

具体三中工作模式的区别和配置情况。移步  http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html

 

PHP编译安装,顺序在最后,因为要指定mysql以及apache的路径。

# cd /usr/local/src# wget http://cn2.php.net/get/php-5.5.29.tar.bz2/from/this/mirror# tar zxf php-5.5.29.tar.gz# cd  php-5.5.29# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/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 --disable-ipv6安装PHP会遇到很多错误,缺少很多库,解决方法,移步 http://www.cnlvzi.com/index.php/Index/article/id/143# make# make install 拷贝PHP配置文件# cp php.ini-production /usr/local/php/etc/php.ini

 

apache结合php

Apache主配置文件 /usr/local/apache2/conf/httpd.conf

# vim /usr/local/apache2/conf/httpd.conf找到<Directory/>    Options FollowSymLinks    AllowOverride None    Order deny,allow    Deny from all</Directory>把最后一个Deny from all  修改为 Allow如果不修改,访问网站会403找到 AddType application/x-gzip .gz .tgz在下面添加:AddType application/x-httpd-php .php要想支持php脚本解析,必须加上对应的类型找到:<IfModule dir_module>    DirectoryIndex index.html</IfModule>修改为:<IfModule dir_module>    DirectoryIndex index.html index.htm index.php</IfModule>找到:#ServerName www.example.com:80改为:ServerName localhost:80

 

查看配置文件是否有问题:

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

然后启动服务。

  • 测试php是否解析

在php的主配置文件里面查看到 DocumentRoot  ,这是防止网站php文件的位置,可以在该文件下编辑php,从浏览器看看是不是能够解析。

如果浏览器登陆不上ip网站,有可能是Iptables规则问题,清空即可。

配置虚拟主机需要打开httpd配置文件里面的参数,打开虚拟主机位置文件,可以在该文件进行配置。

具体httpd配置文件参数,查看http://www.ha97.com/5194.html

  • 虚拟主机的配置

<VirtualHost *:80>  把默认主机弄成空,防止通过IP解析到网站DocumentRoot "/tmp/123"ServerName www.12werasdfwer.com</VirtualHost><VirtualHost *:80>DocumentRoot "/data/www"   网站主目录ServerName www.123.com    ServerAlias www.abc.com, www.456.com     配置个别名ErrorLog "logs/123com_error.log"    配置文档。格式为combined  CustomLog "logs/123com_access.log" combined   其中文档格式在主配置文件里面定义配置防盗链SetEnvIfNoCase Referer "^http://.*\.yourdomin\.com" local_refSetEnvIfNoCase Referer ".*\.yourdomin\.com" local_refSetEnvIfNoCase Referer "^$" local_ref<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">Order Allow,Deny Allow from env=local_ref</filesmatch>        <IfModule mod_rewrite.c>        RewriteEngine on        RewriteCond %{HTTP_USER_AGENT} ^*Firefox/4.0* [NC,OR]   其中NC表示不区分大小写        RewriteCond %{HTTP_USER_AGENT} ^*Tomato Bot/1.0* [NC]        RewriteRule .* - [F]  禁掉Firefox和Tomato Bot        限制某个目录        RewriteCond %{REQUEST_URI} ^.*/tmp/* [NC]        RewriteRule .* - [F]  把所有包含/tmp/字样的全部限制        域名跳转        RewriteCond %{HTTP_HOST} ^www.456.com [OR]        RewriteCond %{HTTP_HOST} ^www.abc.com$        RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301.L] 进行301网站跳转,通过rewrite模块        </IfModule>        <Directory /data/www/1.txt> 访问控制,通过验证访问        AllowOverride AuthConfig        AuthName "ERROR!"        AuthType Basic        AuthUserFile /data/.htpasswd        require valid-user        </Directory>        <IfModule mod_expires.c>  配置一些静态缓存,以及时间        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/javascript "now plus 2 hours"        ExpiresByType application/x-shockwave-flash "now plus 2 hours"        ExpiresDefault "now plus 0 min"        </IfModule>    </VirtualHost>     

 

其中可以日志切割

    ErrorLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-error_%Y%m%d.log 86400"对错误日志切割,86400秒正好一天    不记录指定文件类型日志    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 "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-access_%Y%m%d.log 86400" combined env=!image-request    对正确日志进行切割,这个env=!image-request叹号取反就表示忽略这些

 

 

 

lamp