在Ubuntu 11.10 x64上编译安装php-5.4.7、mysql-5.5.27、nginx-1.3.6.tar.gz、xdebug-2.2.1以及开发IDE,jdk-6u35,phpstorm-5.0.1,netbeans-7.2和版本控制软件tortoisehg-2.5。
//最新更新时间2013-02-04 01:05
注:下述文档为本人安装过程文档。
由于此版本为纯净版,所以需要下载以下扩展:
sudo -s LANG=C apt-get install gcc g++ ssh automake cmake build-essential autoconf make re2c wget cron bzip2 rcconf flex vim bison m4 mawk cpp binutils libncurses5 unzip tar libncurses5 libncurses5-dev libtool libpcre3 libpcrecpp0 libssl-dev zlibc openssl libxml2-dev libltdl3-dev libpcre3 libpcrecpp0 libssl-dev zlibc openssl libxml2-dev libltdl3-dev libmcrypt-dev libcurl4-gnutls-dev(centos下需要另外安装 yum install gcc-c++ curl-devel)
(如果出现部分文件不存在,请在软件源处设置下载自中国的服务器)
CentOS:
yum install ncurses-devel autoconf automake bison cmake cpp flex gcc gcc-c++ libcurl-devel libtool libxml2-devel make unzip openssl cloog-ppl glibc-devel glibc-headers kernel-headers libgomp libidn-devel libstdc++-devel mpfr pkgconfig ppl xmlrpc-c xmlrpc-c-client zlib-devel curl glibc glibc-common libcurl libxml2
准备软件包:
php-5.4.7.tar.gz、xdebug-2.2.1.tar.gz、mysql-5.5.27.tar.gz、nginx-1.3.6.tar.gz、PhpStorm-5.0.1.tar.gz、netbeans-7.2-ml-php-linux.sh
jdk-6u35-linux-x64.bin (JDK)、mercurial-2.3.1.tar.gz、tortoisehg-2.5.tar.gz
安装PHP前:
编译安装PHP所需的支持库以及下载地址和安装方法:
libiconv-1.14.tar.gz、mcrypt-2.6.8.tar.gz、libmcrypt-2.5.8.tar.gz、mhash-0.9.9.9.tar.gz、pcre-8.20.tar.gz
以下是各下载地址:
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
http://cdnetworks-kr-1.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
http://cdnetworks-kr-1.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
http://cdnetworks-kr-1.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
http://cdnetworks-kr-2.dl.sourceforge.net/project/pcre/pcre/8.20/pcre-8.20.tar.gz
以上地址可能已经失效,其实搜索这些软件包可以Google一下全名,如果搜索“mhash-0.9.9.9.tar.gz”,就有了。
http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz
安装方法:
tar zxvf libiconv-1.14.tar.gz cd libiconv-1.14/ ./configure --prefix=/usr/local/libiconv make make install cd ../ tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make make install cd ../ tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure make make install /sbin/ldconfig cd libltdl/ ./configure --enable-ltdl-install make make install cd ../../
(CentOS6.3 请注意: http://www.cnblogs.com/huangdingding/archive/2012/11/06/2757411.html)
tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ /sbin/ldconfig ./configure make make install cd ../ tar zxvf pcre-8.10.tar.gz cd pcre-8.10 ./configure --prefix=/usr/local/pcre #后面如果要装mongodb的话,加上参数 --enable-unicode-properties 不然报错,详见:《linux下mongodb安装和安装php扩展笔记》 make make install
现在开始安装lnmp,首先要先安装mysql-5.5.27,因为安装php的时候要用到mysql。
安装前要添加一个mysql用户组和mysql帐号并加入mysql组中
groupadd mysql
useradd -g mysql mysql
然后解压并进入目录
tar zxvf mysql-5.5.27.tar.gz
cd mysql-5.5.27
使用cmake 编译mysql-5.5.27
cmake -DCMAKE_INSTALL_PREFIX=/WorkSpace/app/mysql5 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8-unicode_ci -DMYSQL_DATADIR=/WorkSpace/app/mysql5/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DWITH_READLINE=on
make && make install
其中,根据个人习惯,/WorkSpace/app是我的安装目录,大家自己设定。后面保持一致就ok了
目录权限变更
sudo chmod +w /WorkSpace/app/mysql5 sudo chown -R mysql:mysql /WorkSpace/app/mysql5
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
/WorkSpace/app/mysql5/scripts/mysql_install_db --user=mysql --basedir=/WorkSpace/app/mysql5 --datadir=/WorkSpace/app/mysql5/data
这里我选择copy的是innodb的配置文件。你可以自己看下support-files下的配置文件。
但是,一定要注意,记得看下my.cnf里的配置信息。如果选择innodb的配置文件,会跟默认的有些不同,比如:innodb中socket = /tmp/mysqld.sock,而MyISAM则是mysql.sock。
往往就这么一点小问题,会让你碰到不少麻烦的,比如用phpmyadmin链接数据库的时候会连不上,也不明确的提示什么什么错误.
在php里,使用mysql_connect()连接mysql的时候会报一个“Could not connectCan't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”的错误。
我的解决方法是建立一个软链接,
ln -s /tmp/mysqld.sock /tmp/mysql.sock
我曾经改过my.cnf中的mysqld.sock为mysql.sock,但是开始没有发现,到了后来好像用pdo连接数据库的时候,就报了个不能连接/tmp/mysqld.sock的错误(关于这个我也记不清楚的,好像是pdo链接的时候报错)。
启动的时候我还有些遇到的问题(如:Can't find messagefile '/usr/share/errmsg.sys'、An old style --language……之类的)
解决方法是等你启动的时侯,也最好指定下配置文件,启动方式:
/WorkSpace/app/mysql5/bin/mysqld_safe --defaults-file=/etc/my.cnf &
指定配置文件即可。
最后一个问题是命令下 mysql -uroot -p 能进入,而用mysql -h 127.0.0.1 -uroot -p 则不能链接
原因是开启了防火墙,需要是使用下面命令来关闭防火墙:
iptables -P INPUT ACCEPT
给mysql root账户添加密码:
/WorkSpace/app/mysql5/bin/mysqladmin -u root password '123456'
mysql5.5安装完成,关于如何加入环境变量在后面统一说明。
安装php 5.4.7
(注意:后期在fedora 17(32位)中安装出现错误:
checking for mysql_set_server_option in -lmysqlclient... no
onfigure: error: wrong mysql library version or lib not found.
发现使用ln -s /app/mysql5/lib/libmysqlclient.so* /usr/lib/ 不能解决问题。临时解决办法是:去掉--with-mysqli=/WorkSpace/app/mysql5/bin/mysql_config
)
sudo ./configure --prefix=/WorkSpace/app/php5 --with-config-file-path=/WorkSpace/app/php5/etc --with-mysql=/WorkSpace/app/mysql5 --with-mysqli=/WorkSpace/app/mysql5/bin/mysql_config --with-iconv-dir=/usr/local --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --enable-gd-native-ttf --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-pdo_mysql
(2013-05-31 添加,安装路径有变,请自行修改)
./configure --prefix=/app/php5 --enable-fpm --with--fpm --with-fpm-user=www --with-fpm-group=www --with-curl --enable-mbstring --with-pdo-mysql --with-mysql=/app/mysql5 --with-mysqli=/app/mysql5/bin/mysql_config
{#2013-05-19 01:16修复(配置http://ciwei.cc服务器时碰到)
红色的是后期在不同的环境中编译碰到的问题:
1、有的时候想想configure的时候不需要加sudo,但是我就碰到必须要加的时候,就是在服务器上,为了安全起见,普通用户是无法得到mysql安装目录下的任何权限的。包括读取,因此在编译过程中会报一个找不到mysql什么的错误。所以必须加sudo。
2、报(configure: error: cannot compute sizeof (char *), 77)这么一个错误。并不是每一个机器上都会有这个错误。我就碰到了。去掉 --disable-rpath选项就好了。
}
make ZEND_EXTRA_LIBS='-liconv' //如果直接make 会报一个 “undefined reference to `libiconv_close' collect2: ld returned 1 exit status”的错误 make install
如果在32位机器上装到时候可能会碰到checking size of char... configure: error: cannot compute sizeof (char)这个问题。需要去掉--disable-rpath
安装完成后,复制php.ini
cp php.ini-production /WorkSpace/app/php5/etc/php.ini
=====================
一般有php.ini-production(正式环境)和php.ini-development(本地开发环境)两个配置模板
=====================
2013-08-26修正错误,如果把php.ini放到etc目录,那么请在./configure的时候加这个选项(--with-config-file-path=/WorkSpace/app/php5/etc),否则php会无法找到php.ini,从而采用默认的配置。
如:用date没有设定datezone的话会报Warning: date() :It is not safe to rely on the system's timezone settings....然后网上这个问题的解决方法一大片,改了php.ini,重启php-fpm结果还是一样报错。。。后来发现php压根没有调用该php.ini。把php.ini移动到/WorkSpacke/app/php5/lib/php.ini就好了。
cp php.ini-production /WorkSpace/app/php5/lib/php.ini
修改php.ini里面的
extension_dir = "/WorkSpace/app/php5/lib/php/extensions/no-debug-non-zts-20100525"
关于extension_dir里的值可以执行 /WorkSpace/app/php5/bin/php-config 查看。
个人建议:开启display_errors = On
display_errors = On
memory_limit = 512M //根据需要
error_reporting = E_ALL //这里报错级设为ALL后,对于平时书写不规范的朋友,可能会报一大堆错误,可不开,建议开启。不明确的变量都isset来控制报错
创建fastcgi配置文件
cp /WorkSpace/app/php5/etc/php-fpm.conf.default /WorkSpace/app/php5/etc/php-fpm.conf
修改php-fpm.conf
去掉下面三行的注释
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
和修改
user = nobody
group = nobody
为
user = www
group = www
同时建立对应的用户于组
groupadd www
useradd -g www www
根据需要修改php-fpm启动的进程数量:
vim /WorkSpace/app/php5/etc/php-fpm.conf
pm.max_children = 5
pm.start_servers = 2
(检查方法:使用ps -ef | grep php-fpm 查看进程数量,修改后,再使用sudo /etc/init.d/php-fpm restart 重启php,再看php-fpm进程数,就跟pm.start_servers的值一样了)
cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
使用 /etc/init.d/php-fpm start 启动php
安装nginx:
tar zxf nginx-1.3.6.tar.gz cd nginx-1.3.6 ./configure --user=www --group=www --prefix=/WorkSpace/app/nginx --with-pcre=../pcre-8.20 --with-http_stub_status_module make && make install
CentOS nginx安装淘宝开源模块nginx_concat_module
./configure --user=www --group=www --prefix=/WorkSpace/app/nginx --with-http_stub_status_module --with-pcre=../pcre-8.20 --add-module=../nginx_concat_module/
Centos 6.3设置php、mysql、nginx开机自启动
启动nginx /WorkSpace/app/nginx/sbin/nginx
现在php mysql nginx都安装完毕,开始安装php的xdebug扩展
tar zxvf xdebug-2.2.1.tgz cd xdebug-2.2.1/
/WorkSpace/app/php5/bin/phpize ./configure --enable-xdebug --with-php-config=/WorkSpace/app/php5/bin/php-config make && make install cp modules/xdebug.so /WorkSpace/app/php5/lib/php/extensions/no-debug-non-zts-20100525/
然后开始配置php.ini
vim /WorkSpace/app/php5/etc/php.ini
在最后加入
zend_extension=/WorkSpace/app/php5/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
重启php
/etc/init.d/php-fpm restart
安装netbeans、phpstorm
安装netbeans、phpstorm都需要用到jdk,下载jdk-6u35-linux-x64.bin(位于目录/home/huangdd/soft)
mkdir /WorkSpace/app/java cd /WorkSpace/app/java chmod +x /home/huangdd/soft/jdk-6u35-linux-x64.bin /home/huangdd/soft/jdk-6u35-linux-x64.bin
jdk将安装在
/WorkSpace/app/java/jdk1.6.0_35
sudo gedit /etc/profile
加入环境变量:
#set java environment export JAVA_HOME=/WorkSpace/app/java/jdk1.6.0_35 export JRE_HOME=/WorkSpace/app/java/jdk1.6.0_35/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH source /etc/profile //重载
到这一步已经安装好jdk了
安装phpstorm 和 安装netbeans比较简单,
下载 netbeans-7.2-ml-php-linux.sh和PhpStorm-5.0.1.tar.gz
chmod +x netbeans-7.2-ml-php-linux.sh
./netbeans-7.2-ml-php-linux.sh
接下来如果windows下一样安装。
tar zxvf PhpStorm-5.0.1.tar.gz
cd PhpStorm-121.215/bin
chmod +x phpstorm.sh
./phpstorm.sh
最后来安装
mercurial-2.3.1和tortoisehg-2.5
安装前需要安装python
sudo apt-get install python-iniparse python-nautilua python-dev
tar zxvf mercurial-2.3.1.tar.gz
cd mercurial-2.3.1/
python setup.py build
python setup.py install
这里我是将tortoisehg-2.5.tar.gz解压在/WorkSpace/app/下
tar zxvf tortoisehg-2.5.tar.gz
cd tortoisehg-2.5/
python setup.py build
python setup.py install
安装好后,可以使用命令
./thg
运行tortoisehg
为了方便起见,可以把这个路径加入到环境变量里去。
sudo gedit /etc/profile
打开文件,加入(请根据自己实际情况来添加):
#set java environment export JAVA_HOME=/WorkSpace/app/java/jdk1.6.0_35 export JRE_HOME=/WorkSpace/app/java/jdk1.6.0_35/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH #set Common environment export PATH=/WorkSpace/app/cmd:$PATH:. #set Mysql environment export PATH=/WorkSpace/app/mysql5/bin:$PATH:. #set Phpstorm environment export PATH=/WorkSpace/app/PhpStorm-121.215/bin:$PATH:. #set netbeans environment export PATH=/WorkSpace/app/netbeans-7.2/bin:$PATH:. #set Tortoisehg environment export PATH=/WorkSpace/app/tortoisehg-2.5:$PATH
让其生效:
source /etc/profile
注意:这边在普通用户里,永远可以直接使用这边定义的环境变量,但是如果你是在root下,每次用前第一次要使用以上命令载入。退出root,再进入时又得执行一次。
本博客所有文章如无说明,则均为作者黄丁丁原创
转载请注明出处:http://www.cnblogs.com/huangdingding
本文地址:http://www.cnblogs.com/huangdingding/archive/2012/10/25/2739220.html