LAMP(Linux+Apache+MySQL+PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
再次要提醒大家的是,规划确实很重要。因为这些配置影响你后期的数据备份,恢复。做一个项目前,肯定都会做项目前的规划。大家一定要养成这个习惯。
透过今天这几次的安装失败,我发现,安装之前规划非常重要。
1. 分区
/boot 100M左右
SWAP 物理内存的2倍(如果你的物理内存大于4G以上,分配4G即可)
/ 15G
/usr/local 20G (用于安装软件)
/data 剩余所有空间
这个视个人硬盘而定。不过我认为,在/boot,/,swap 这些分区分完之后,多出来的分区,就应该做lv。因为这样以后如果空间不够,可以用lvextend加大空间。
MySQL 数据库位置 /data/mysql/data(可按情况设置)
Apache 网站根目录 /data/www/wwwroot(可按情况设置)
Apache 虚拟主机日志根目录 /data/www/logs(可按情况设置)
1.构建安装环境,rpm安装一下几个软件包。
# for i in gcc gcc-c++ flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel ; do rpm -q $i ;done
使用该语句,就能清楚的显示有什么软件包没有安装,没有安装的软件包都需要装上。
编译GD2
#tar xf gd-××××××.tar.gz
#cd gd-xxxxxxx
#configure --prefix=/usr/local/gd2
#make
#make install
编译libmxml2
#tar xf libxml2******.tar.gz
#cd libxml*****
#./configure --prefix=/usr/local/libxml2
#make
#make install
编译libmcrypt
#tar xf libmcrypt******.tar.gz
#cd libmcrypt*****
#./configure --prefix=/usr/local/libmcrypt
#make && make install
编译OpenSSL
#tar xf openssl******.tar.gz
#cd openssl*******
#./config --prefix=/usr/local/openssl
#make && make test && make install
编译mysql #请事先建立好 /data/mysql/data 目录
#./configure --prefix=/usr/local/mysql --localstatedir=/data/mysql/data --with-mysqld-user=mysql --without-debug --with-big-tables --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-isam --without-innodb --without-ndb-debug
#make && make install
#useradd mysql
#cd /usr/local/mysq
#bin/mysql_install_db --user=mysql
#chown -R root.mysql .
#chown -R mysql /data/mysql/data
#cp share/mysql/my-huge.cnf /etc/my.cnf
#cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
#chmod 755 /etc/rc.d/init.d/mysqld
#chkconfig --add mysqld
#/etc/rc.d/init.d/mysqld start
#bin/mysqladmin -u root password 'mysql密码'
//因为是源码编译,你需要做一个软连接,让/usr/local/mysql/bin/mysql 定向到 bin/目录下
#ln -s /usr/local/msyql/bin/mysq bin/
编译apache
# tar xjvf httpd-2.2.4.tar.bz2
# cd httpd-2.2.4
# ./configure \
"--prefix=/usr/local/apache2" \
"--with-included-apr" \
"--enable-so" \
"--enable-deflate=shared" \
"--enable-expires=shared" \
"--enable-rewrite=shared" \
"--enable-static-support" \
"--disable-userdir"
# make
# make install
# echo '/usr/local/apache2/bin/apachectl start >> /etc/rc.local
编译PHP
#tar xf php*******.tar.gz
#cd php******
#./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=/usr/local/libxml2 --with-gd=/usr/local/gd2 --with-jpeg-dir --with-png-dir --with-bz2 --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-openssl=/usr/local/openssl --with-mcrypt=/usr/local/libmcrypt --enable-soap --enable-gd-native-ttf --enable-memory-limit --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --disable-cgi --disable-cli
#make && make install
#mkdir /usr/local/php/etc
#cp php.ini-dist /usr/local/php/etc/php.ini
编译Zend Optimizer‘
#tar xf Zendoptimizer*******.tar.gz
#cd Zendoptimizer
#./install.sh
安装画面出现这里只要改一个地方,当要你输入php.ini目录的时候,指向/usr/local/php/etc/ ,其他都回车好了。
整合Apache与PHP及系统初化配置
# vi /usr/local/apache2/conf/httpd.conf 这里注意,如果改变了日志的存放目录,在httpd.conf中也需要改成你希望把日志存放的目录去。这里,我没有做演示,自己找到logs/ 改为/data/www/logs。
找到:
User daemon
Group daemon
改为 (不改也可以,就是建立的apache网站目录的组和拥有者必须是daemon用户。)
User apache
Group apache
找到:
AddType application/x-gzip .gz .tgz
在该行下面添加
AddType application/x-httpd-php .php
找到:
DirectoryIndex index.html
将该行改为
DirectoryIndex index.html index.htm index.php
找到:
#Include conf/extra/httpd-mpm.conf
#Include conf/extra/httpd-info.conf
#Include conf/extra/httpd-vhosts.conf (虚拟主机配置文件存放目录.)
#Include conf/extra/httpd-default.conf
去掉前面的“#”号,取消注释。
注意:以上 4 个扩展配置文件中的设置请按照相关原则进行合理配置!
以下是做虚拟主机
#vi /usr/local/apache/conf/extra/httpd-vhosts.conf
ServerAdmin root@glory.imbbs.in
DocumentRoot "/data/www/wwwroot/glory.imbbs.in"
ServerName www.glory.imbbs.in
#ServerAlias www.dummy-host.example.com
ErrorLog "/data/www/logs/glory-error_log"
CustomLog "/data/www/logs/glory-access_log" common
Options FollowSymLinks
AllowOverride None
#Order deny,allow
#Deny from all
Order allow,deny
Allow from all
Satisfy all
添加以上语句。然后保存退出
添加apache用户
#groupadd www
#useradd -g www www
#mkdir -p /data/www/wwwroot
#chmod +w /data/www/wwwroot
#chown apache.apache /data/www/wwwroot -R
#mkdir /data/www/wwwroot/glory.imbbs.in
#cd /data/www/wwwroot/glory.imbbs.in/
#mkdir /data/www/logs
#chown -R apache.apache /data/www/logs
#vi phptest.php
phpinfo();
?>
保存退出,确认,glory.imbbs.in目录和phptest.php文件的拥有者和组是否都是属于apache。
完成以后:打开FF浏览器:www.glory.imbbs.in/phptest.php 看能不能正常显示。如果有报错信息一定要去看日志,然后根据错误,在google找相应的答案。
确认PHP能正常工作以后,就要在php.ini中提升PHP的安全性了
#vi /usr/local/php/etc/php.ini
找到:
disable_functions=phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
DISCUZ 可以安装 discuz和ucenter绑在一起的安装包。我这个是分别下载的。
下载DISCUZ UCENTER
把discuz的upload目录复制到 /data/www/wwwroot/glory.imbbs.in/bbs
把ucenter的upload目录复制到 /data/www/wwwroot/glory.imbbs.in/ucneter
修改相应的权限,这个不用说了吧~~ 拥有者和组都要是apache哦
在这里要给discuz设置数据库,也要给ucenter设置数据库。
#mysql -uroot -pmysql密码
>create database ucenter;
>grant all on ucenter.* to ucenter@'localhost' identified by 'password';
>flush privileges
>exit
打开浏览器输入 www.glory.imbbs.in/ucenter/install
安装完之后,在看安装discuz。
我把步骤做成了PDF文档。大家可以下载,研究研究,希望可以帮助大家。[attach]28722[/attach]
lurebreast 于 2012-12-21 23:19:01发表:
谢谢.很详细.很好.
lickn 于 2011-12-09 11:21:56发表:
非常感谢分享
abc7870336 于 2011-11-07 11:23:44发表:
源码编译LAMP
学习下
cky000 于 2011-05-13 17:22:07发表:
下载帮顶
这个要好好研究下
求知路漫漫 于 2010-06-08 11:24:17发表:
强人。。。佩服!
thinkall 于 2010-05-21 11:07:20发表:
非常有用,谢谢~~
lanfeng125 于 2010-05-10 13:21:22发表:
了解一下(e:e2s
linux.leo 于 2009-12-21 15:05:31发表:
扩展一下, 如果公司希望把DNS服务器放在公司内部,而不是放在IDC机房,那就自己配一个DNS服务器
我在论坛里写过DNS服务器配置,把它黏贴过来了。
DNS工作原理
DNS分为client和server,client扮演发问的角色,也就是问server一个domain name,而server必须要回答
此domain name的真正IP地址,而本地的DNS灰先查询自己的资料库,如果自己的资料库没有,则会往改DNS的上级
DNS查询,以此得到答案之后,将答案存起来,并回答客户
使用RHEL5配置:
1,首先,我先设定主机名为:www.linuxdify.com
[root@www ~]# hostname www.linuxdify.com
[root@www ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=www.linuxdify.com(修改此处)
2,安装bind9,bind-chroot,caching-nameserver
#rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm bind-chroot-9.3.6-4.P1.el5.i386.rpm caching-nameserver-9.3.6-4.P1.el5.i386.rpm
3,安装完成以后,进入bind目录,进行域名的添加
#cd /var/named/chroot/etc
#ls -l 查看一下目录
-rw-r--r-- 1 root root 405 Oct 16 03:28 localtime
-rw-r----- 1 root named 1230 Jul 30 04:10 named.caching-nameserver.conf
-rw-r----- 1 root named 1052 Dec 15 16:13 named.rfc1912.zones
-rw-r----- 1 root named 113 Dec 15 16:09 rndc.key
#cp -p named.caching-nameserver.conf named.conf 这里为什么要用到-p呢,就是不改变文件的拥有组。
#vi named.conf
options {
listen-on port 53 { any; }; 修改点1
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; }; 修改点2
allow-query-cache { any; };修改点3
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
include "/etc/named.rfc1912.zones";(在此行之前的几行,被我删除了。)
保存退出
#vi named.rfc1912.zones
zone "linuxdify.com" IN {
type master;
file "linuxdify.com.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.local";
allow-update { none; };
};
保存退出
#cd ../var/named
#ls -l
total 36
drwxrwx--- 2 named named 4096 Dec 15 16:19 data
-rw-r----- 1 root named 198 Jul 30 04:10 localdomain.zone
-rw-r----- 1 root named 195 Jul 30 04:10 localhost.zone
-rw-r----- 1 root named 427 Jul 30 04:10 named.broadcast
-rw-r----- 1 root named 1892 Jul 30 04:10 named.ca
-rw-r----- 1 root named 424 Jul 30 04:10 named.ip6.local
-rw-r----- 1 root named 426 Jul 30 04:10 named.local
-rw-r----- 1 root named 427 Jul 30 04:10 named.zero
drwxrwx--- 2 named named 4096 Jul 27 2004 slaves
#cp -p localdomain.zon linuxdify.com.zone
#cp -p named.local 192.168.1.local
#vi linuxdify.com.zone
$TTL 86400
@ IN SOA localhost root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS linuxdify.com.
www IN A 192.168.1.1
#vi 192.168.1.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS linuxdify.com.
1 IN PTR www.linuxdify.com.
配置完成。
启动服务 service named start
[root@lujun etc]# nslookup www.linuxdify.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: www.linuxdify.com
Address: 192.168.1.1
[root@lujun etc]# nslookup 192.168.1.1
Server: 192.168.1.1
Address: 192.168.1.1#53
1.1.168.192.in-addr.arpa name = www.linuxdify.com.
在这里最有可能出错的地方,就是在复制文件的时候,没有使用cp -p。记住复制的文件一定是named组。
把域名改成www.glory.imbbs.in就行了
vlyom 于 2009-12-21 00:04:11发表:
受教
LeMras 于 2009-12-20 20:34:09发表:
顶强人