往期回顾:

  1. Gentoo 使用笔记 Part 1
  2. Gentoo 使用笔记 Part 2
  3. Gentoo 使用笔记 Part 3

在 Gentoo 下打造 LAMPP

最终还是选择了自己编译 LAMPP 平台,放弃了已整合好的 XAMPP For Linux,执行效率和启动速度有了很大的提高。

安装 LAMPP

添加以下 use 到 /etc/portage/package.use 中

net-www/apache apache2
dev-lang/php apache2 bzip2 gd mysql xml xmlrpc zip ctype pcre session unicode
#其中 php 里的有些 use 不一定是必须的,不过这些 use 基本上都是常用的或是将来可能会用到的

编译 apache 和 mysql

$ emerge apache mysql

在编译 php 前先修改下/etc/conf.d/apache2,加入 php5 的模块选项

APACHE2_OPTS="-D DEFAULT_VHOST -D PHP5"

然后编译 php 和 phpmyadmin 吧

$ emerge dev-lang/php phpmyadmin

设置 LAMPP

Gentoo 下的 Apache 已经设置的很好了,基本上无须修改就能使用了。

在使用 MySQL 前还需要进行初始化设置,执行 #emerge --config mysql 进行设置,然后启动 MySQL,进行安全设置:

$ /etc/init.d/mysql start
$ mysql_secure_installation

设置 phpMyAdmin:

$ mysql -u root -p< /usr/share/webapps/phpmyadmin/2.10.0.2/sqlscripts/mysql/2.10.0.2_create.sql
$ mkdir /var/www/localhost/htdocs/phpmyadmin/config
$ chmod o+rw /var/www/localhost/htdocs/phpmyadmin/config
$ cp /var/www/localhost/htdocs/phpmyadmin/config.sample.inc.php /var/www/localhost/htdocs/phpmyadmin/config/config.inc.php
$ chown -R apache:apache /var/www/localhost/htdocs/phpmyadmin/config

OK,启动 Apache 和 MySQL 试试看,看看能不能进入 phpMyAdmin 进行数据库操作,你也可以建立一个内容为 <?php phpinfo() ?> 的 php 文件来查看 apache 是否正常启用了 php。

小技巧

我实在不喜欢那个/var/www/localhost/htdocs 的目录,操作起来太不方便,我也不愿意去修改 httpd.conf 文件。我的做法是在/home 目录下新建个 web 文件夹,设置 owner 为自己的普通日常用户,然后做个链接到 htdocs 目录里就是了。

$ mkdir /home/web
$ chown -R punkid:apache /home/web
/*我选择把 wordpress 什么的都放到这个 web 目录下了,并设置所有者为 apache 组和个人用户*/
# chmod ug+rw -R /home/web
/*给予 apache 组和个人用户读写权限*/

然后切换到 htdocs 文件夹下做几个链接进来吧

$ cd /var/www/localhost/htdocs
$ ln -sf /home/web/wordpress wp
$ ln -sf /home/web/drupal drupal

这样我输入 http://localhost/wp 时就可以访问/home/web/wordpress 下的 wp blog 了,同理 http://localhost/drupal 则进入了/home/web/drupal 的目录操作

顺带把 win 下的几个音乐,电影资源文件夹也链接进来以便给我的朋友们下载

$ ln -sf /mnt/win_f/Audio Audio
$ ln -sf /mnt/win_f/Movie Movie

如果你不想别人从外部访问的话,在你不希望别人访问的文件夹下建立个 .htaccess 的隐藏文件,输入以下内容:

Order deny,allow
Deny from all
Allow from 127.0.0.1

如果你不愿意把 apache 和 MySQL 都加入开机启动程序,而又嫌分别输入 /etc/init.d/apache start/etc/init.d/mysql start 麻烦的话,可以在/etc/init.d/下建立一个 lampp 启动脚本。你在该目录下输入 vi lampp 会自动帮你填补好脚本框架的,我的脚本是这样的 ( 有点粗糙,不过能用:D )

#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {
    need net
}

svc_start() {
    ebegin "Starting LAMPP"
    /etc/init.d/apache2 start && /etc/init.d/mysql start
    eend ${?} "Failed to start LAMPP"
}

svc_stop() {
    ebegin "Stopping LAMPP"
    /etc/init.d/apache2 stop && /etc/init.d/mysql stop
    eend ${?} "Failed to stop LAMPP"
}

svc_restart() {
    ebegin "Restarting LAMPP"
    /etc/init.d/apache2 restart && /etc/init.d/mysql restart
    eend ${?} "Failed to restart LAMPP"
}

执行 /etc/init.d/lampp start,/etc/init.d/lampp stop,/etc/init.d/lampp restart 即可启用,停用以及重新启动 apache 和 MySQL。

另外,我自己用 python 写了个小程序,用来监视 apache 的访问记录的。你可以 copy 以下代码到任意.py 文件中,加入执行权限 ( chmod +x logmonitor.py ) 就可以运行了

#!/usr/bin/python
import os,time

today = time.strftime('%d/%b/%Y') #specify the date format
log_path = '/usr/lib/apache2/logs/access_log' #如果你更改了 apache log 存放路径设置的话,请更改此处地址
logline = os.popen("cat %s | grep '%s' | wc -l" %(log_path,today)).read()
showlog = "tail -f -n 20 %s | grep '%s'" %(log_path,today)

if logline.startswith('0'):
   print 'no activies recently' #如果当天没有活动记录,则不显示
else:
   os.system(showlog)