标签:
前言:最近在找工作,想把之前学过用过的东西总结下,今天弄下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/mysql 11 # mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql 12 # ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 13 --user 定义数据库的所属主, --datadir 定义数据库安装到哪里 14 15 配置MySQL 16 # cp support-files/my-large.cnf /etc/my.cnf 17 # cp support-files/mysql.server /etc/init.d/mysqld 18 # chmod 755 /etc/init.d/mysqld 19 # vim /etc/init.d/mysqld 20 需要修改的地方有 “datadir=/data/mysql” (前面初始化数据库时定义的目录) 21 # chkconfig --add mysqld 22 # chkconfig mysqld on 23 # 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的主配置文件里面查看到 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_ref SetEnvIfNoCase Referer ".*\.yourdomin\.com" local_ref SetEnvIfNoCase 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叹号取反就表示忽略这些
标签:
原文地址:http://www.cnblogs.com/chyuanliu/p/5926424.html