最近在自己弄lamp的架构网站平台,而且兴致勃勃的为云服务器申请了网站备案,此贴记录我的lamp架构过程,并预计以后lamp向lnmp做数据迁移:hehehe
进入Apache官网下载稳定版Apache编译包:httpd.apache.org
解压包到指定目录 tar zxf http-2.2.0.tar.gz -C /usr/local/src
进入目录:执行编译;./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-expires --enable-headers --enable-deflate --with-mpm=worker make&&make install
拷贝系统启动脚本:cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
编辑vim /etc/init.d/httpd修改内容如下:
#!/bin/sh
# chkconfig: 35 85 15
# description: Startup script for the Apache HTTP Server
# Licensed to the Apache Software Foundation (ASF) under one or more
添加系统启动:chkconfig --add httpd
chkconfig --level 35 httpd on
安装数据库请参照另一篇博客http://xiangcc.blog.51cto.com/10201823/1650341
安装php前要安装图库支持./configure --prefix=/usr/local/libiconv;make;make install
进入php解压目录执行:./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-xmlrpc --with-openssl --with-zlib --with-freetype-dir --with-gd --with-jpeg-dir --with-png-dir --with-iconv=/usr/local/libiconv --enable-short-tags --enable-sockets --enable-zend-multibyte --enable-soap --enable-mbstring --enable-static --enable-gd-native-ttf --with-curl --with-xsl --enable-ftp --with-libxml-dir --enable-sigchild --enable-pcntl --enable-bcmath
如果出错,自行粘贴错误百度解决方法,具体方法还没有完全总结出来,先不写上,yum安装时必须关掉防火墙,否则无法安装所需插件及库文件,成功编译结果
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
configure: WARNING: unrecognized options: --enable-zend-multibyte
编译文件make;make install
然后进入php解压目录拷贝php文件:cp php.ini-production /usr/local/php/php.ini
编辑apache配置文件:vim /usr/local/apache/conf/httpd.conf
添加DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
测试是否能解析php:vim /usr/local/apache/htdecs/index.php
<php?
phpinfo();
?>
访问默认页面看到apache的编译等配置信息
开启虚拟主机:
Include conf/extra/httpd-vhosts.conf --启用虚拟主机配置文件
<Directory /usrlocal/http>--添加虚拟主机网站目录及访问权限
order allow,deny
allow from all
</Directory>
附:
编辑虚拟主机文件:例如我的配置(进行了日志分割):
<VirtualHost ip地址:80>
DocumentRoot "/usr/local/http"
ServerName 123456.com
ErrorLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oen.acgcommittee.com-error_%Y%m%d.log 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.acgcommittee.com-access_%Y%m%d.log 86400 " combined env=limage-request
</VirtualHost>
mysql需要创建网站使用的数据库:
如Discuz创建(只本地使用):grant all on bbs.* to bbs@'localhost' identified by 'pwd@123';
将Discuz主程序cp到虚拟主机指定的目录下,访问ip进行安装
会出现如下提示
需要对一些目录权限进行改动(进入虚拟主机目录)
apache内存使用优化
最近发现apache占用内存资源非常高,自己测试了一下,仅连续刷新七八次,内存资源基本耗尽,
以下是我从网上摘取的配置优化:
KeepAlive Off 当用户请求网页时,服务器会打开工作进程响应客户请求,并建立请求连接,当请求完毕之后就不需要再使用了,就需要断开连接,结束工作进程,释放占用的内存资源
KeepAliveTimeout 15 避免在15秒内没有请求时候持续连接占用内存
MaxKeepAliveRequests 200 每个进程处理的请求数量,避免频繁重复的启动、关闭进程
Timeout 60 响应前需等待多少秒,能提高一点小性能和防止一定的DDOS攻击
StartServers 5 启动apache最初时启动的进程数
KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxRequestsPerChild 每个子进程处理的最大请求数
下面是一些我的服务器优化配置
KeepAlive off
StartServers 5
ServerLimit 128
MaxClients 128
MaxRequestsPerChild 200
KeepAliveTimeout 5
StartServers 5
MinSpareThreads 15
MaxSpareThreads 50
ThreadsPerChild 25
Timeout 60
博文如有后来发现的错误或操作优化时,将随时修改