免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1229 | 回复: 0
打印 上一主题 下一主题

ubuntu7.04从源代码安装LAMP [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-16 22:27 |只看该作者 |倒序浏览

                                参考了http://forum.ubuntu.org.cn/viewtopic.php?t=21033&highlight=lamp
下载
apache   下载地址 http://archive.apache.org/dist/httpd/
PHP(RSS + XML + Xslt + GD + cURL + Zlib + png + jpeg+ clibPDF)
:
安装一个vsftp   ftp://vsftpd.beasts.org/users/cevans/
                或则 proftpd    ftp://ftp.proftpd.org/distrib/source/
php       http://www.php.net/downloads.php
xml和xslt   
http://xmlsoft.org/
   
让 php 能够支持 xml、xslt 解析
curl   http://curl.haxx.se/download.html     让 php 支持 cURL 协议,允许你用不同的协议连接                                             和沟通不同的服务器
openssl    http://www.openssl.org     为 apache 提供 https 连接服务
freetype字体库    http://freetype.sourceforge.net/index2.html      一个流行的字体函数库
gd库    http://www.libgd.org/Main_Page        让 php 支持画图功能
jpeg    http://www.ijg.org/files/           让 GD 支持生成 jpeg
libpng    http://libpng.sourceforge.net/      让 GD 支持生成 png
zlib    http://www.zlib.net/                        让 php 支持 zlib 压缩功能
mhash   http://sourceforge.net/project/showfiles.php?group_id=4286  让 php 支持                                                                         mhash 哈稀函数库
libmcrypt    https://sourceforge.net/projects/mcrypt    让 php 提供更多的加密算法  
mod_limitipconn  
http://dominia.org/djao/limitipconn2.html

apache 连接进程限制模块,                                                            来限制apache的连接并发数
mod_bw-0.8      
http://www.ivn.cl/apache/

用于Apache网站带宽控制,可以根据来源                                    IP,网段来划分带宽,也可以根据网站文件类型来限制带宽  
mod_evasive      http://www.zdziarski.com/projects/mod_evasive/ 模块的前身就是
                                                    mod_dosevasive,防止DDOS攻击
zend加速器   http://www.zend.com/downloads   php加速器,支持运行 zend 加密的php程序
OSSP mm    http://www.ossp.org/pkg/lib/mm/  优化 apache运行,建立MM共享内存库。在这种情        况下,它将允许mod_ssl使用一种高效的基于RAM的会话(session)缓存代替基于磁盘的会话缓存。            
modsecurity  https://bsn.breach.com/downloads/modsecurity-apache/  加强apache的安全性,特别是在防sql 注入   
开始安装:
安装openssl      # apt-get install openssh
安装flex          #apt-get install flex
安装zlib-devel(很多软件都需要它) #apt-get install zlib1g-dev
##### 安装zlib #####
cd /tmp/zlib-1.2.3
./configure --prefix=/usr/local/zlib
make
sudo make install
##### 安装LibPNG #####
cd /tmp/libpng-1.2.12
cp scripts/makefile.linux makefile 用这2种方式都行
(./configure --prefix=/usr/local/libpng)
make  
make install
##### 安装FreeType #####
cd /tmp/freetype-2.2.1
./configure --prefix=/usr/local/freetype
make
sudo make install
##### 安装Jpeg (让GD支持JPEG)#####
cd /tmp/jpeg-6b
首先要先建立以下目录,否则make install的时候会报错,是软件的一点点不足吧
sudo mkdir /usr/local/jpeg
sudo mkdir /usr/local/jpeg/bin
sudo mkdir /usr/local/jpeg/lib
sudo mkdir /usr/local/jpeg/include
sudo mkdir /usr/local/jpeg/man
sudo mkdir /usr/local/jpeg/man/man1
./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
make && sudo make install
##### 安装GD Library #####
cd /tmp/gd-2.0.33
./configure --prefix=/usr/local/gd \
--with-jpeg=/usr/local/jpeg \
--with-freetype=/usr/local/freetype \
--with-png=/usr/local/libpng \
--with-zlib=/usr/local/zlib
make && sudo make install
##### curl #####
cd /tmp/curl-7.15.5
sudo mkdir -p /usr/local/curl
./configure --prefix=/usr/local/curl --with-ssl
make && sudo make install
##### libmcrypt (加密扩展--有不少的加密算法)#####
cd /tmp/libmcrypt-2.5.7
./configure --prefix=/usr/local/libmcrypt
make && sudo make install
##### mhash #####
cd /tmp/mhash-0.9.7.1/
./configure --prefix=/usr/local/mhash
make && sudo make install
##### Apache #####
cd /tmp/httpd-2.2.3/
./configure --prefix=/usr/local/apache2 \
--enable-module=so \ #使支持so模块,so 模块是DSO支持的 apache 核心模块
--with-mpm=worker \ #让apache以worker模式运行
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/apache2/conf \
--enable-module=rewrite \
--enable-vhost-alias \
--enable-http \
--enable-mime-magic \
--with-ssl=/usr/local/ssl \
--enable-ssl \
--enable-proxy--enable-track-vars \
--enable-deflate \
--enable-cache \
--enable-mem-cache \
--enable-disk-cache \
--enable-rewrite=shared \
#支持url重写
--enable-status=shared \
--enable-file-cache \
#支持文件缓存
--enable-cgi \
#允许编译cgi版本的php
--enable-cgid \
#禁止用一个外部 CGI 守护进程执行CGI脚本
--enable-track-vars \
--enable-expires=share
make && sudo make install
##### PHP #####
cd /tmp/php-4.4.2
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/apache2/conf \
--with-gd=/usr/local/gd \
--enable-gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr/local/jpeg \
--with-png \
--with-ttf \
--with-zlib \
--with-zlib-dir=/usr/local/zlib \
--with-soap=yes \
--with-mcrypt=/usr/local/libmcrypt \
--with-curl=/usr/local/curl \
--with-freetype-dir=/usr/local/freetype \
--enable-magic-quotes \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/tmp/mysql.sock \
--with-iconv \
--with-mbstring \
--enable-mbstring=all \
--enable-mbregex \
--enable-mbstr-enc-trans \
--enable-track-vars \
--enable-force-cgi-redirect \
--enable-ftp \
--with-openssl=/usr/local/ssl \
--with-openssl-dir=/usr/local/ssl \
--with-mhash=/usr/local/mhash \
--with-dom=/usr/local/libxml2 \
--with-xml-dir=/usr/local/libxml2 \
--with-xslt-dir=/usr/local/libxslt \
--with-xslt-sablot \
--with-pear=/usr/local/php/pear \
--enable-force-cgi-redirect \
--enable-versioning \
--enable-trans-sid \
--with-xslt-sablot \
--with-cpdflib=/usr/local \
--with-pgsql=/usr/local/pgsql
make && sudo make install
sudo cp php.ini-dist /usr/local/apache2/conf/php.ini
##### 修改 Apache&PHP 配置文件 #####
sudo gedit /usr/local/apache2/conf/httpd.conf
LoadModule php4_module modules/libphp4.so
下添加:
AddType application/x-httpd-php .php .php3 .phtml
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html
修改为
DirectoryIndex index.html index.php index.php3 index.phtml
DocumentRoot "/usr/local/apache2/htdocs"
修改为
DocumentRoot "/home/htdocs"
修改为
sudo gedit /usr/local/apache2/conf/php.ini
; UNIX: "/path1:/path2"  
include_path = ".:/php/includes"
修改为
; UNIX: "/path1:/path2"  
include_path = ".:/usr/local/php/includes"
doc_root =
修改为
doc_root = "/home/htdocs"
(去掉你需要的模块前面的注释)
extension=php_mbstring.dll
##### Zend Optimizer #####
cd /tmp/ZendOptimizer-3.0.1-linux-glibc21-i386/
sudo ./install
操作 [OK] [EXIT] [YES] [/usr/local/Zend] [/usr/local/apache2/conf] [YES] [/usr/local/apache2/bin/apachectl] [OK] [OK] [NO]
##### mod_deflate #####
cd /tmp/httpd-2.2.0/modules/filters$
sudo /usr/local/apache2/bin/apxs -i -c -a mod_deflate.c
(应用例子如下)
修改 Apache 配置文件 /usr/local/apache2/conf/httpd.conf :
添加:
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
#Header append Vary User-Agent env=!dont-vary
DeflateFilterNote ratio
LogFormat '"%v %h %l %u %t "%r" %>;s %b "%{Referer}i" "%{User-Agent}i"" (%{ratio}n)' deflate
CustomLog logs/deflate_log deflate
##### mod_limitipconn #####
cd /tmp/mod_limitipconn-0.22
sudo /usr/local/apache2/bin/apxs -i -c -a mod_limitipconn.c
(应用例子如下)
修改 Apache 配置文件 /server/httpd/conf/httpd.conf:
查找:#ExtendedStatus On ,去掉注释"#"
查找:CustomLog logs/access_log common ,修改成 CustomLog logs/access_log common env=!LIMITIP
添加:
;
;
MaxConnPerIP 5
NoIPLimit image/*
;
;
MaxConnPerIP 2
OnlyIPLimit audio/mpeg video
;
;
##### Bandwidth Module #####
cd /tmp/mod_bw/
sudo /usr/local/apache2/bin/apxs -i -c -a mod_bw.c
带宽限制在虚拟主机中设置
(应用例子如下)
修改 Apache 配置文件 /server/httpd/conf/httpd.conf:
    BandWidthModule On
    BandWidth all 16384
    LargeFileLimit * 500 4096
      LargeFileLimit * 100 1024
##### Apache DoS Evasive Maneuvers Module #####
cd /tmp/mod_evasive
sudo /usr/local/apache2/bin/apxs -i -c -a mod_evasive20.c
(应用例子如下)
修改 Apache 配置文件 /server/httpd/conf/httpd.conf:
LoadModule evasive20_module modules/mod_evasive20.so
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
    DOSEmailNotify      
you@yourdomain.com
    DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"
    DOSLogDir           "/var/lock/mod_evasive"
DOSWhitelist    127.0.0.1
DOSWhitelist    127.0.0.*
##### Apache security Module #####
cd /tmp/modsecurity-apache_1.9.4
sudo /usr/local/apache2/bin/apxs -cia mod_security.c
(命令参数上有点变样,呵呵,功能是一样的)
##### mm #####
cd /tmp/mm-1.4.2
./configure --prefix=/usr/local/mm
make
make test
sudo make install
#######  安装 DB 的 WEB 管理工具 ###########
tar zxvf phpMyAdmin-2.8.2.4.tar.gz -C /home/htdocs/phpmyadmin
tar zxvf phpPgAdmin-4.0.1.tar.gz -C /home/htdocs/phppgadmin
vi /home/htdocs/phpmyadmin/libraries/config.default.php
$cfg['Servers'][$i]['password']      = '12345678';
test URL
http://localhost/phpmyadmin/
vi /home/htdocs/phppgadmin/conf/config.inc.php
$conf['servers'][0]['host'] = 'localhost';
$conf['servers'][0]['pg_dump_path'] = '/usr/local/pgsql/bin/pg_dump';
$conf['servers'][0]['pg_dumpall_path'] = '/usr/local/pgsql/bin/pg_dumpall';
$conf['servers'][0]['slony_sql'] = '/usr/local/pgsql';
test URL
http://localhost/phppgadmin/
########## 编写启动脚本  #################
cd ~
vi myweb
#!/bin/sh -x
sudo /usr/local/apache2/bin/apachectl $1
sudo /usr/local/mysql/support-files/mysql.server $1
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ $1
chmod +x myweb
使用方法:
启动  myweb start
停止  myweb stop
重启  myweb restart
对以上的一些补充:
********apache里还有一些参数需要修改
*********
ServerName  如果不修改这项,启动apache的时候,会报错
DocumentRoot   改成你希望指定的主目录
IfModule dir_module  在这里加上你希望作为默认首页的文件,我加了index.htm index.php,中间打个空格就可以了
有看到这样的语句/configure --prefix=/usr/local/mysql5 --enable-thread-safe-client
但是最后一个参数不知道什么意思,所以暂时没有用
对php的配置:
>memory_limit = 8M =>修改成你所需的内存大小
>upload_max_filesize = 2M =>修改文件最大上传尺寸
>extension=mysql.so
>extension=gd.so =>将你要用到模块前面的注释给去掉
b) 这样LAMP服务就算是架设完成了,下面就要对该架构进行安全加固了。
               
               
               
               
               
               
               
编辑/usr/locall/apache2/conf/httpd.conf文件,在改动之前,请先将该配置文件做个备份。以便在出错的时候可以恢复。
>AddDefaultCharset ISO-8859-1 =>AddDefaultCharset GB2312
然后开始加固php,我们再次编辑/usr/local/Zend/etc/php.ini文件,之所以没有一次改完,主要是为了给大家一个清晰的思路。
>#打开安全模式,打开他的好处就是PHP文件只能访问所有者和PHP文件所有着一样的文件,即使在chroot环境下也无法访问jail中属主不
一样的 文件,类似于php
shell这样的后门就没用武之地了哦,phpshell是很流行的php后门,他可以执行系统命令,就象他的名字一样,和shell很接近。
>safe_mode = On
#上面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件,一定要在/var/www后面加"/",否则/var/wwww下的文件也能被访问 。
>open_basedir = /var/www/
#禁止使用phpinfo和get_cfg_var函数,这样可以避免泄露服务信息,一般在在确认PHP能正常工作之后再使之关闭
>disable_functions =  phpinfo,get_cfg_var
>#设置php程序错误日志
>error_reporting = E_ALL
>log_errors = On
>error_log = /var/log/php_err.log
#如果php程序没有指明需要register_globals的话,最好把register_globals设置为Off,这样可以避免很多安全问题的。注意,如果你的程序是需要register_globals的话,可千万别关。Ubuntu默认是关闭的。
>register_globals = Off
>#禁止打开远程地址,记得最近出的php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个php程序,例如phpshell,所以我们关闭这个。
>allow_url_fopen = Off
7.这样PHP的安全优化就做好了,下面做MySQL的安全优化。
a)在Ubuntu下用apt装的mysql默认是禁止从网络连接MySQL的,我们可以从/etc/mysql/my.cnf文件中看到有skip-
networking语句的,如果你做的是MySQL服务器的话,那么是要将其注释掉的,这样其他机器才能访问你这台机器,如果该服务仅供本机使用的话,
那么就保持原状,这样别的机器不能访问你这台机器的MySQL。由于这里是做在一起的,所以保持不变好了。
b)然后我们给mysql设置一个密码并修改管理员用户名(默认是root),但一定得记得,无论怎么样修改密码,都会有记录的,如果通过
mysqladmin修改,shell的历史记录会有的,如果登陆了mysql之后再修改,在
~/.mysql_history会记录的,所以我们一定得处理这两个历史记录文件,我们把他们删了,再从/dev/null做个软连接过来就可以解决问
题了。注意由于我们会在SHELL下用的是sudo,所以该历史是保存在本用户目录下的,而不是在根用户目录下的。而mysql也是在本用户目录下使用
的,所以也是保存在本用户目录下的。如果你觉得不能记忆历史记录麻烦的话,也可以在用到了MySQL的Root用户之后,进入这两个文件中,将相关语句删
除。
$rm .bash_history
$rm .mysql_history
$ln -s /dev/null .bash_history
$ln -s /dev/null .mysql_history
c)然后我们删除多余的数据库并去掉匿名帐号
[root@debian ~]mysql -u root -p
Enter password:XXXXXX
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where user = '';
mysql> delete from user where not(host="localhost") and user="root";
mysql> flush privileges;
d)然后修改默认的管理员帐号root为你喜欢的,我这里改成myadmin
mysql> update user set user="myadmin" where user="root";
mysql> flush privileges;
这样就可以通过myadmin而不是root用户名来访问MySQL数据库了!
8.现在我们安装mod-security。
a)首先安装libapache2-mod-security包
$sudo apt-get install libapache2-mod-security
b)该模块默认是没激活的,我们可以在/etc/apache2/mods-available目录下看到有mod-security.load文件,但在/etc/apache2/mods-enabled目录却没有它的软链接。我们现在激活它:
$sudo ln -s /etc/apache2/mods-available/mod-security.load /etc/apache2/mods-enabled/mod-security.load
$sudo cp /usr/share/doc/libapache2-mod-security/examples/httpd2.conf.example-full /etc/apache2/mods-available/mod-security.conf
$sudo vi /etc/apache2/mods-available/mod-security.conf,老规则改动之前先做好备份。
># 检测内容长度以避免堆溢出攻击
>SecFilterForceByteRange 32 254 =>SecFilterForceByteRange 32 126
># debug设置
>SecFilterDebugLevel 9 =>SecFilterDebugLevel 0
># 设置缺省的动作
>SecFilterDefaultAction "deny,log,status:499" =>SecFilterDefaultAction "deny,log,status:404"
># 把设置传递给子目录
>SecFilterInheritance Off
># Redirect user on filter match
># 当匹配sh的时候,重新定向到一个特殊的警告页面,该页面是自行编写的,写些警告的话让攻击者知难而退,该段先不要生效,等到相关配置配好之后再失效不迟。记住在配好之后要使之生效。
>#SecFilter sh redirect:http://localhost/hack/warning.htm
># Prevent OS specific keywords
>#过滤一些敏感的东西,我们使用*是为了攻击者使用/etc/./passwd来绕开检测
>SecFilter /etc/passwd =>SecFilter /etc/*passwd
>SecFilter /bin/*sh
># Very crude filters to prevent SQL injection attacks
># 防止SQL插入(SQL Injection)攻击
>SecFilter "delete[[:space:]]+from"
>SecFilter  "insert[[:space:]]+into"
>SecFilter "select.+from"
>SecFilter "select[[:space:]]+from"
>SecFilter "union[[:space:]]+from"
$sudo ln -s /etc/apache2/mods-available/mod-security.conf /etc/apache2/mods-enabled/mod-security.conf
c)重启Apache2服务即可。
$sudo /etc/init.d/apache2 restart


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12679/showart_402020.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP