Linode Debian上编译安装PHP 5.3.10和MySQL 5.5.20
PHP 5.3.8 爆出了严重漏洞,5.3.9在修复这个漏洞的同时引入了新的漏洞。而Debian 6的apt-get方式的PHP版本仍旧很低。之前我很使用apt-get方式安装了PHP 5 (FastCGI)。而且当时还认为编译是个吃力不讨好的活。现在总算明白了,编译不但可以控制参数实现部署的一致,还可以很方便地升级或者版本切换。
停了两天VPS,rebuild了十几遍,尝试了很多资料。一开始编译成功了LEMP,但是由于nginx对svn支持不好又重新安装的LAMP。
安装过程:
Apache,由于编译时总是有一些错误,又对版本不怎么敏感,最后仍旧是采用的apt-get方式。
1
| apt-get install apache2 libapache2-mod-fcgid |
MySQL,采用当前最新的5.5.20,据说性能提升360%。先安装MySQL的原因是由于编译PHP 5.3.10的时候需要一个和MySQL有关的参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| # 通用的编译工具,新装的系统可能会需要apt-get install build-essential g++ gcc make automake autoconf perl zip unzip zlib1g-dev libncurses5-dev# 安装cmake和bison,在编译MySQL 5.5.20的时候需要用到cd ~wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gztar -zxvf cmake-2.8.7.tar.gzcd cmake-2.8.7 ./bootstrap #注意不是 configuremakemake installcd ~wget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gztar -zxvf bison-2.5.tar.gzcd bison-2.5./configuremakemake install# 为MySQL准备一个用户adduser --system --no-create-home --disabled-login --disabled-password --group mysql# 获取源文件并编译cd ~wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.20.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/ -O mysql-5.5.20.tar.gztar -zxvf mysql-5.5.20.tar.gzcd mysql-5.5.20cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1makemake install# 安装数据库cd /usr/local/mysql./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql # 复制配置文件cp support-files/my-medium.cnf /usr/local/mysql/my.cnf# 配置权限chown -R mysql:mysql /usr/local/mysql#配置参数vi /usr/local/mysql/my.cnf# 添加以下内容[mysqld]basedir = /usr/local/mysqldatadir = /usr/local/mysql/datalog-error = /usr/local/mysql/mysql_error.logpid-file = /usr/local/mysql/mysql.piduser = mysqltmpdir = /tmp# 因为自定义了路径,所以做几个软连接吧ln -s /usr/local/mysql/bin/mysql /usr/local/bin/ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/# 配置启动脚本并启动MySQLcp /usr/local/mysql/support-filesmysql.server /etc/init.d/mysql5/etc/init.d/mysql5 start# 初始化root用户mysqladmin -u root password 'mysql-new-passwd' |
PHP,编译安装当前最新的5.3.10
1
2
3
4
5
6
7
8
| # 安装依赖apt-get install libxml2-dev zlib1g-dev libcurl4-openssl-dev libpng12-dev libmcrypt-dev# 获取源文件并编译wget http://cn.php.net/get/php-5.3.10.tar.gz/from/jp.php.net/mirror -O php-5.3.10.tar.gztar -zxvf php-5.3.10.tar.gzcd php-5.3.10./configure --prefix=/usr/local/php --enable-cgi --with-zlib --with-curl --with-gd --with-mhash --enable-mbstring --with-mcrypt --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-sockets --with-xmlrpc --enable-zip --without-pearcp php.ini-* /usr/local/php/bin/ |
PHP本身的安装是不难的,但是将PHP和Apache结合的资料却不尽相同(见后面的参考资料列表)。最后实现的方式是:
1
2
3
4
5
6
7
8
9
10
| vi /etc/apache2/http.conf# 添加一行AddType application/x-httpd-php .phpvi /etc/apache2/mods-available/fcgid.conf# 在AddHandler行添加PHP扩展名,同时添加一行FCGIWrapper<IfModule mod_fcgid.c> AddHandler fcgid-script .php .fcgi FCGIWrapper /usr/local/php/bin/php-cgi .php</IfModule> |
尚存在的问题:
- PHP和Apache整合的方法和网上找到的中英文的资料都不相同,需要再学习。
- 通过apt-get安装的依赖是参考的资料,尚不清楚哪些是必须的。
No comments:
Post a Comment