Techyou labs
真正的爱应该超越生命的长度、心灵的宽度、 灵魂的深度
常用标签
您正在查看:标签 debian 下的文章

安装编译所需要的库:

apt-get install libxml2-dev libmcrypt-dev libssl-dev libldap2-dev libmhash-dev libmysqlclient-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libsasl2-dev

安装libevent

cd ~/src
wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
tar xf libevent-1.4.13-stable.tar.gz
cd libevent-1.4.13-stable
./configure --enable-shared
make
make install

ulimit -SHn 65535

安装pcre

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
tar zxvf pcre-8.00.tar.gz
cd pcre-8.00/
./configure
make && make install

安装libunwind#否则无法安装Google-perftools

cd /libunwind-0.99
./configure --enableshared
make
make install

安装google-perftools#mysql和nginx需要(64位必须加--enable-frame-pointers)

wget http://google-perftools.googlecode.com/files/google-perftools-1.5.tar.gz
./configure --enableshared --enable-frame-pointers
make
make install

下载purge #清除缓存用的

wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz
tar zxvf ngx_cache_purge-1.0.tar.gz

wget http://nginx.org/download/nginx-0.8.32.tar.gz
tar zxvf nginx-0.8.32.tar.gz
cd nginx-0.8.32/
cd ../
./configure --prefix=/zh/nginx --user=www-data --group=www-data --with-rtsig_module --with-select_module --with-poll_module --with-ipv6 --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --http-client-body-temp-path=/tmp/nginx/client --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --with-google_perftools_module --add-module=/home/web_package/ngx_cache_purge-1.0

启动nginx错误解决办法
1:error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
解决方法,在/lib中创建一个symbol link到/usr/local/pcre/lib/libpcre.so.0
sudo ln -s /usr/local/pcre/lib/libpcre.so.0 /lib
2:error while loading shared libraries: libprofiler.so.0: cannot open shared object file: No such file or directory

安装ImageMagick

cd ~/src
apt-get build-dep imagemagick
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar xf ImageMagick.tar.gz
cd ImageMagick-6.5.8-6/
./configure
make
aptitude install libperl-dev
make install

apt-get build-dep php
wget http://cn2.php.net/get/php-5.3.1.tar.bz2/from/this/mirror
tar xf php-5.3.1.tar.bz2

#下载imagick

cd ~/src
wget http://pecl.php.net/get/imagick-2.3.0.tgz
tar xf imagick-2.3.0.tgz
cp -R imagick-2.3.0 php-5.3.1/ext/imagick
cd php-5.3.1
./buildconf --force

#下载php-fpm

apt-get install batch
wget http://launchpad.net/php-fpm/master/0.6/+download/php-fpm-0.6~5.3.1.tar.gz
$ tar -xzf php-fpm-0.6~5.3.1.tar.gz
$ php-fpm-0.6-5.3.1/generate-fpm-patch
$ patch -d php-5.3.1 -p1 $ cd php-5.3.1
$ ./buildconf --force

./configure --prefix=/zh/php5 --with-fpm --with-libxml-dir=/usr --with-fpm-bin=/zh/php5/fpm --with-fpm-conf=/zh/php5/etc --with-fpm-user=www-data --with-fpm-group=www-data --with-layout=GUN --with-config-file-path=/zh/php5/etc --with-config-file-scan-dir=/zh/php5/etc --with-openssl --with-zlib --enable-bcmath --enable-calendar --with-curl --with-curlwrappers --enable-exif --enable-ftp --disable-rpath --with-gd --with-jpeg-dir --with-png-dir --enable-gd-native-ttf --with-gettext --with-mhash --with-imagick --with-imap --with-imap-ssl --with-ldap --enable-mbstring --with-mcrypt --with-mysql=mysqlnd --enable-mbregex --with-mysql-sock --with-mysqli --with-pdo-mysql --with-pdo-sqlite --enable-soap --enable-sockets --enable-sqlite-utf8 --enable-sysvsem --with-xmlrpc --enable-zip --without-pear --enable-shmop --enable-pcntl --with-libevent=shared --with-kerberos

make
make install

安装记录

molyx:/home/web_package/php-5.3.1# make install
Installing PHP SAPI module: fpm
Installing PHP CLI binary: /zh/php5/bin/
Installing PHP CLI man page: /zh/php5/man/man1/
Installing build environment: /zh/php5/lib/php/build/
Installing header files: /zh/php5/include/php/
Installing helper programs: /zh/php5/bin/
program: phpize
program: php-config
Installing man pages: /zh/php5/man/man1/
page: phpize.1
page: php-config.1
/home/web_package/php-5.3.1/build/shtool install -c ext/phar/phar.phar /zh/php5/bin
ln -s -f /zh/php5/bin/phar.phar /zh/php5/bin/phar

update-rc.d php-fpm defaults
sed -i "s/nobody/www-data/g" /etc/php-fpm.conf
/etc/init.d/php-fpm start

make install
cp php.ini-dist /zh/php5/etc/php.ini
ln -s /zh/php5/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults

编译后的php安装在/opt/php下面,php的配置文件是/opt/php/lib/php.ini

和其他Linux下不同,在Debian下这时候启动php-fpm会失败,原因是在Debian下php-fpm的配置文件中必须指定运行时的用户才行。
优化php-fpm

编辑php-fpm的配置文件/etc/php-fpm.conf,

* 去掉display_errors参数的注释,修改参数值为1
* 去掉sendmail_path参数的注释
* 去掉user,group参数的注释
* 修改max_children参数的值为10

安装php加速器eAccelerator

tar jxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
apt-get install -y autoconf
/zh/php5/bin/phpize
./configure --with-php-config=/zh/php5/bin/php-config --enable-eaccelerator --enable-shared
make
make install
mkdir /tmp/php/eaccelerator_cache

然后重启php-fpm,在phpinfo()页面中应该能看到eaccelerator的信息了。

附录:
memcache模块安装:

/zh/php5/bin/phpize
./configure --enable-memcache --enable-shared --with-php-config=/zh/php5/bin/php-config
make
make install
Suhosin模块安装:
/zh/php5/bin/phpize
./configure --with-php-config=/zh/php5/bin/php-config --enable-shared --enable-suhosin
make
make install
extension_dir = "/zh/php5/lib/php/extensions/no-debug-non-zts-20090626"
;suhosin module
[suhosin]
extension=suhosin.so
;memcache module
[memcache]
extension=memcache.so
;eaccelerator module
[eaccelerator]
;zend_extension="/zh/php5/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/php/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

错误解决
1:utf8_mime2text() has new signature, but U8T_CANONICAL is missing
安装c-client
apt-get install libc-client-dev
2:configure: error: libevent.a could not be found. Stop.
使用参数--with-libevent=shared
3:This c-client library is built with Kerberos support.
添加 --with-kerberos to your configure line. Check config.log for details

下载mysql源码包到指定目录

molyx:~# tar zxvf mysql-5.1.42.tar.gzmolyx:~# cd mysql-5.1.42

添加mysql运行用户/用户组

molyx:~# groupadd mysqldmolyx:~# useradd -g mysqld -s /bin/false -c "Mysql Server Runner" mysqld

创建mysql安装目录和数据存放目录

molyx:~# mkdir /usr/local/mysqldmolyx:~# mkdir /var/mysqldata

安装gcc和ncurses

molyx:~# apt-get install gccmolyx:~/ncurses-5.7# apt-get install g++molyx:~# apt-get install libncurses5-dev

编译mysql

./configure --prefix=/usr/local/mysqld --enable-assembler --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=max-no-ndb --enable-shared --with-tcp-port=3306 --with-mysqld-user=mysqld --with-low-memory --with-mysqlmanager

安装并初始化环境

molyx:/home/web_package/mysql-5.1.42# make molyx:/home/web_package/mysql-5.1.42# make installmolyx:/home/web_package/mysql-5.1.42# cp support-files/my-medium.cnf /usr/local/mysqld/etc/my.cnf

更改目录权限

molyx:/home/web_package/mysql-5.1.42# chown -R mysqld /usr/local/mysqld molyx:/home/web_package/mysql-5.1.42# chown -R mysqld /var/mysqldata molyx:/home/web_package/mysql-5.1.42# chown -R mysqld:mysqld /usr/local/mysqld molyx:/home/web_package/mysql-5.1.42# chown -R mysqld:mysqld /var/mysqldata   molyx:/home/web_package/mysql-5.1.42# chmod 711 /usr/local/mysqld molyx:/home/web_package/mysql-5.1.42# chmod 711 /var/mysqldata

初始化数据库

molyx:/home/web_package/mysql-5.1.42# /usr/local/mysqld/bin/mysql_install_db --user=mysqld --datadir=/var/mysqldata --basedir=/usr/local/mysqld --skip-name-resolve --defaults-file=/usr/local/mysqld/etc/my.cnf

参考资料http://tianzui.blog.bokee.net/bloggermodule/blog_viewblog.do?id=3901792http://xfenoo.blog.51cto.com/747433/255572错误解决:

g++: yes: No such file or directorymake[3]: *** [mysqld] Error 1make[3]: Leaving directory `/home/mysql/src/mysql-5.1.41/sql'make[2]: *** [all-recursive] Error 1make[2]: Leaving directory `/home/mysql/src/mysql-5.1.41/sql'make[1]: *** [all] Error 2make[1]: Leaving directory `/home/mysql/src/mysql-5.1.41/sql'make: *** [all-recursive] Error 1

加入参数CXXFLAGS="-fPIC"

CXXFLAGS="-fPIC" ./configure --prefix=/usr/local/mysqld --enable-assembler --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=max-no-ndb --enable-shared --with-tcp-port=3306 --with-mysqld-user=mysqld --with-low-memory --with-mysqlmanager
January 1, 2010

     dpkg      – Debian 包安装工具
     apt-get   – APT 的命令行前端
     aptitude  – APT 的高级的字符和命令行前端
     synaptic  – 图形界面的 APT 前端
     dselect   – 使用菜单界面的包管理工具
     tasksel   – Task 安装工具
这些工具不是用来取代对方的,比如 dselect 同时使用 APT 和 dpkg。
APT 使用 /var/lib/apt/lists/* 来跟踪可用的软件包,而 dpkg 使用的是 /var/lib/dpkg/available。如果你使用了 aptitude 或者其他 APT 前端来安装软件包,同时你希望使用 dselect 来安装软件包,请不要忘记使用 dselect 菜单上的 [U]pdate (或者运行"dselect update") 来更新 /var/lib/dpkg/available。
在处理依赖关系上 apt-get 会自动下载安装依赖的软件包,但是不会处理所安装软件推荐的或者建议的软件包。
相反 aptitude 可以设置成安装所安装软件推荐的或者建议的软件包。
dselect 给使用者列出所安装软件推荐或建议的软件包,可以进行单独选择。
3.1.2 方便的工具
     dpkg-reconfigure  - 重新配置已安装的软件包
                (如果它是使用 debconf 进行配置的)
     dpkg-source       - 管理源码包
     dpkg-buildpackage - 自动生成包文件
     apt-cache         - 在本地缓冲区检查包文件

Chapter 12. Debian系统配置文件说明
在Debian系统中有很多的配置文件,这些配置文件都很重要,控制着系统和应用程序的运行。下面记录这些配置文件的存放位置、作用和配置参数,以便我们在系统维护中能快速定位和配置这些文件。
12.1. /etc/passwd、/etc/shadow和/etc/group
这三个配置文件用于系统帐号管理,都是文本文件,可用vi等文本编辑器打开。/etc/passwd用于存放用户帐号信息,/etc/shadow用于存放每个用户加密的密码,/etc/group用于存放用户的组信息。
·   /etc/passwd文件的内容如下:
·      root:x:0:0:root:/root:/bin/bash
·      daemon:x:1:1:daemon:/usr/sbin:/bin/sh
·      bin:x:2:2:bin:/bin:/bin/sh
·      sys:x:3:3:sys:/dev:/bin/sh
·      sync:x:4:65534:sync:/bin:/bin/sync
·      games:x:5:60:games:/usr/games:/bin/sh
·      ...
每一行是由分号分隔的字串组成,它的格式如下:
username:password:uid:gid:gecos:homedir:shell
各域对应的中文说明如下:
用户名:密码:用户ID:组ID:用户全名:主目录:登录shell
gecos是通用电子计算机操作系统的缩写,是Bell实验室中的一台大型主机。
Unix系统最初是用明文保存密码的,后来由于安全的考虑,采用crypt()算法加密密码并存放在/etc/passwd文件。现在,由于计算机处理能力的提高,使密码破解变得越来越容易。/etc/passwd文件是所有合法用户都可访问的,大家都可互相看到密码的加密字符串,这给系统带来很大的安全威胁。现代的Unix系统使用影子密码系统,它把密码从/etc/pa sswd文件中分离出来,真正的密码保存在/etc/shadow文件中,shadow文件只能由超级用户访问。这样入侵者就不能获得加密密码串,用于破解。使用shadow密码文件后,/etc/passwd文件中所有帐户的password域的内容为"x",如果password域的内容为"*",则该帐号被停用。使用passwd这个程序可修改用户的密。
·   /etc/shadow存放加密的口令,该文件只能由root读取和修改。下面是shadow文件的内容:
·      root:$1$43ZR5j08$kuduq1uH36ihQuiqUGi/E9:12973:0:99999:7:::
·      daemon:*:12973:0:99999:7:::
·      bin:*:12973:0:99999:7:::
·      sys:*:12973:0:99999:7:::
·      sync:*:12973:0:99999:7:::
·      ...
·      
·      我们可用chage命令显示test用户的帐号信息:
·      debian:~# chage -l test
·      最小:  0
·      最大:  99999
·      警告日:        7
·      失效日:        -1
·      最后修改:               7月 09, 2005
·      密码过期:      从不
·      密码失效:      从不
·      帐户过期:      从不
/etc/shadow文件的格式如下:
username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
各字段的简要说明:
last_change:表示自从Linux使用以来,口令被修改的天数。可用chage -d命令修改。
min_change:表示口令的最小修改间隔。可用chage -m命令修改。
max_change:表示口令更改周期。可用chage -M命令修改。
warm:表示口令失效的天数。可用chage -W命令修改。
failed_expire:表示口令失效后帐号的锁定天数。可用chage -I命令修改。
expiration:表示帐号到期日时间。可用chage -E命令修改。
reserved:没有使用,留待以后使用。
在debian系统中,使用shadowconfig on/off命令可控制启用和禁用shadow口令功能。
·   /etc/group是帐号分组文件,控制用户如何分组。下面是组文件的内容:
·      root:x:0:
·      daemon:x:1:
·      bin:x:2:
·      sys:x:3:
·      adm:x:4:
·      ...
它的格式如下:
groupname:password:gid:members
这里的password代表组口令,很少用到。它可使原先不在这个群组中的用户可以通过newgrp命令暂时继承该组的权限,使用newgrp命令时会新开一个shell。口令的加密方式和passwd文件中的口令一样,所以如果需设置组口令,要用passwd程序虚设一个用户,再把该用户password节中的加密口令拷贝到/etc/group文件中。members列代表组成员,我们可把需加入该组的用户以逗号分隔添加到这里即可。同一组的成员可继承该组所拥有的权限。
12.2. /etc/login.defs
login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。该文件里的配置对root用户无效。如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs。下面内容是该文件的节选:
...
#
# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password change.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
...
#
# Number of significant characters in the password for crypt().
# Default is 8, don't change unless your crypt() is better.
# If using MD5 in your PAM configuration, set this higher.
#
PASS_MAX_LEN            8
...
12.3. /etc/securetty
该文件可控制根用户登录的设备,该文件里记录的是可以作为根用户登录的设备名,如tty1、tty2等。用户是不能从不存在于该文件里的设备登录为根用户的。这种情况用户只能以普通用户登录进来,再用su命令转为根用户。/etc/securetty文件的格式如下:
# /etc/securetty: list of terminals on which root is allowed to login.
# See securetty(5) and login(1).
console
 
# for people with serial port consoles
ttyS0
 
# for devfs
tts/0
 
# Standard consoles
tty1
tty2
tty3
...
如果/etc/securetty是一个空文件,则根用户就不能从任务的设备登录系统。只能以普通用户登录,再用su命令转成根用户。如果/etc/securetty文件不存在,那么根用户可以从任何地方登录。这样会引发安全问题,所以/etc/securetty文件在系统中是一定要存在的。