仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 887|回复: 9
打印 上一主题 下一主题

[CentOS(社区)] 带来一篇CentOS 6.0 x64编译LNMP情况

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-14 20:17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!前段工夫换VPS,在选择体系的时分,丢弃失落了UbuntuServer而选择最新的CentOS6.064bit。选择以后天然就触及到装置情况的成绩了。本人有点不想用LAMP情况了,因而勇敢的选择了LNMP。
但是yum源里默许是没有nginx的,要装置LNMP就只要两个选择:要末增加第三方源来完成,要末本人编译。
关于Linux情况下的编译感乐趣的我,决意利用最新的LNMP情况,因而就选择了后者——本人编译。
经由几回实验以后,把发明的各种成绩和总结都基础归结好了,因而写了这么一篇总结性的文章,以便从此参考。
必要注重的是:64位内里有些软链接的操纵是32位体系不必要大概不不异的,因而这里请注重文章里的形貌,以避免呈现成绩。
(一)筹办需要的组件

这一步将装置体系里缺掉的组件,以便前面的编译历程顺遂。VPS因为都是精简过的体系,因而年夜局部的组件都出缺掉,因而这一步是相称主要的。
这步操纵能够经由过程yum源来完成,复杂便利。在把持台里敲进上面的下令:
yuminstallgccgcc-c++autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-devellibtoollibtool-libslibevent-devellibeventopenldapopenldap-develnss_ldapopenldap-clientsopenldap-serverslibtool-ltdllibtool-ltdl-develbison
然后让体系本人装置就行了。
(二)筹办需要的软件源码包

接上去我们要筹办各个软件的源码包,以便编译装置。
起首我们创立下载目次:
mkdir-p/data0/software
cd/data0/software
接上去利用wget顺次将以下软件包下载好:
wgethttp://nginx.org/download/nginx-1.0.6.tar.gz
wgethttp://au2.php.net/get/php-5.3.8.tar.gz/from/de.php.net/mirror
wgethttp://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://mysql.easynet.be/
wgethttp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
wget“http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0″
wget“http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0″
wgethttp://pecl.php.net/get/memcache-2.2.6.tgz
wget“http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0″
wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
wgethttp://acelnmp.谷歌code.com/files/eaccelerator-0.9.6.1.tar.bz2
wgethttp://www.ckuyun.com/files/v2.8/cmake-2.8.5.tar.gz
如许源码包的筹办事情就停止了。
(三)装置CMake

因为最新的MySQL利用CMake编译,因而我们起首要把CMake编译装置好:
tarzxvfcmake-2.8.5.tar.gz
cdcmake-2.8.5
./configure–prefix=/usr
make
makeinstall
cd..
(四)装置MySQL

起首我们创建mysql用户组和用户:
groupaddmysql
useradd-gmysqlmysql
然后解包并编译装置MySQL:
tarxvfmysql-5.5.15.tar.gz
cdmysql-5.5.15
cmake.-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/-DMYSQL_DATADIR=/data0/mysql/data-DMYSQL_UNIX_ADDR=/data0/mysql/mysqld.sock-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_MYISAM_STORAGE_ENGINE=1-DENABLED_LOCAL_INFILE=1-DMYSQL_TCP_PORT=3306-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DMYSQL_UNIX_ADDR=/data0/mysql/mysql.sock-DWITH_DEBUG=0-DWITH_READLINE=1-DWITH_SSL=yes-DSYSCONFDIR=/data0/mysql
make
makeinstall
接上去给MySQL的目次付与权限:
chmod+w/usr/local/webserver/mysql
chown-Rmysql:mysql/usr/local/webserver/mysql
创立一系列的MySQL必要用到的目次:
mkdir-p/data0/mysql/data/
mkdir-p/data0/mysql/binlog/
mkdir-p/data0/mysql/relaylog/
chown-Rmysql:mysql/data0/mysql/
接着我们以mysql帐号身份创建数据库:
/usr/local/webserver/mysql/scripts/mysql_install_db–basedir=/usr/local/webserver/mysql–datadir=/data0/mysql/data–user=mysql
然后我们复制mysql的启动剧本到/etc/init.d/目次便利启动:
cdsupport-files
cpmysql.server/etc/init.d/mysqld
chmod+x/etc/init.d/mysqld
然后我们将my.cnf复制到准确的中央:
cpmy-medium.cnf/data0/mysql/my.cnf
cd../../
注重这里依据本人办事器的使用必要,选择support-files下对应的预设设置文件交换失落下面下令中蓝色的局部。我这里选择的是中等压力的设置文件my-medium.cnf。
接上去我们编纂下MySQL的设置文件,做些设置:
vim/data0/mysql/my.cnf
然后在“[mysqld]”这一节的最初增加上面的内容:
basedir=/usr/local/webserver/mysql
datadir=/data0/mysql/data
log-error=/data0/mysql/mysql_error.log
pid-file=/data0/mysql/mysql.pid
relay-log-index=/data0/mysql/relaylog/relaylog
relay-log-info-file=/data0/mysql/relaylog/relaylog
relay-log=/data0/mysql/relaylog/relaylog
log-slow-queries=/data0/mysql/slow.log
然后我们启动MySQL办事:
/etc/init.d/mysqldstart
假如无成绩的话应当显现SUCCESS的提醒。
然后我们设置下root的暗码,装置后默许root是空暗码,如许很不宁静:
/usr/local/webserver/mysql/bin/mysql-uroot
GRANTALLPRIVILEGESON*.*TO‘root’@localhost’IDENTIFIEDBY‘000000‘;
GRANTALLPRIVILEGESON*.*TO‘root’@’127.0.0.1′IDENTIFIEDBY‘000000‘;
注重把蓝色局部交换为你要设置的暗码。
接上去我们创立libmysqlclient的软链接,以避免编译别的依附Mysql软件时呈现libmysqlclient.so.18:cannotopensharedobjectfile的毛病:
ln-s/usr/local/webserver/mysql/lib/libmysqlclient.so.18/usr/lib64/libmysqlclient.so.18(64位体系利用)
ln-s/usr/local/webserver/mysql/lib/libmysqlclient.so.18/usr/lib/libmysqlclient.so.18(32位体系利用)
就此MySQL编译装置事情停止。
(五)装置PHP所必要的一些库

接上去为了前面编译PHP的顺遂举行,先必要将一些需要的库编译装置好。
起首是libiconv库的编译装置:
tarzxvflibiconv-1.13.1.tar.gz
cdlibiconv-1.13.1/
./configure–prefix=/usr/local
make
makeinstall
cd..
然后是libmcrypt库的编译装置:
tarzxvflibmcrypt-2.5.8.tar.gz
cdlibmcrypt-2.5.8
./configure
make
makeinstall
/sbin/ldconfig

cdlibltdl/
./configure–enable-ltdl-install
make
makeinstall
cd../../
接上去我们要创建libmcrypt库的软链接:
#64位体系利用
ln-sf/usr/local/lib/libmcrypt.la/usr/lib64/libmcrypt.la
ln-sf/usr/local/lib/libmcrypt.so/usr/lib64/libmcrypt.so
ln-sf/usr/local/lib/libmcrypt.so.4/usr/lib64/libmcrypt.so.4
ln-sf/usr/local/lib/libmcrypt.so.4.4.8/usr/lib64/libmcrypt.so.4.4.8
ln-sf/usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config
ln-sf/usr/local/lib/libiconv.so.2/usr/lib64/libiconv.so.2
ldconfig

#32位体系利用
ln-sf/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.la
ln-sf/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.so
ln-sf/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4
ln-sf/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8
ln-sf/usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config
ln-sf/usr/local/lib/libiconv.so.2/usr/lib/libiconv.so.2
ldconfig
接上去编译装置mhash:
tarzxvfmhash-0.9.9.9.tar.gz
cdmhash-0.9.9.9
./configure
make
makeinstall
cd..
创建libmhash相干的软链接:
#64位体系利用
ln-sf/usr/local/lib/libmhash.a/usr/lib64/libmhash.a
ln-sf/usr/local/lib/libmhash.la/usr/lib64/libmhash.la
ln-sf/usr/local/lib/libmhash.so/usr/lib64/libmhash.so
ln-sf/usr/local/lib/libmhash.so.2/usr/lib64/libmhash.so.2
ln-sf/usr/local/lib/libmhash.so.2.0.1/usr/lib64/libmhash.so.2.0.1
ldconfig

#32位体系利用
ln-sf/usr/local/lib/libmhash.a/usr/lib/libmhash.a
ln-sf/usr/local/lib/libmhash.la/usr/lib/libmhash.la
ln-sf/usr/local/lib/libmhash.so/usr/lib/libmhash.so
ln-sf/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2
ln-sf/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.1
ldconfig
接上去编译装置mcrypt:
tarzxvfmcrypt-2.6.8.tar.gz
cdmcrypt-2.6.8/
/sbin/ldconfig
./configure
make
makeinstall
cd..
如许PHP编译所依附的一些库就筹办好了。
(六)装置PHP

起首我们再做几个软链接,这些软链接只是64位体系必要,32位体系不必要做
ln-s/usr/lib64/libjpeg.so/usr/lib/libjpeg.so
ln-s/usr/lib64/libldap.so/usr/lib/libldap.so
ln-s/usr/lib64/libpng.so/usr/lib/libpng.so
然后我们入手下手解包PHP并以FastCGI形式(PHP-FPM)编译装置:
tarxvfphp-5.3.8.tar.gz
cdphp-5.3.8

./configure–prefix=/usr/local/webserver/php–with-config-file-path=/usr/local/webserver/php/etc–with-mysql=/usr/local/webserver/mysql–with-mysqli=/usr/local/webserver/mysql/bin/mysql_config–with-iconv-dir=/usr/local–with-freetype-dir–with-jpeg-dir–with-png-dir–with-zlib–with-libxml-dir=/usr–enable-xml–disable-rpath–enable-safe-mode–enable-bcmath–enable-shmop–enable-sysvsem–enable-inline-optimization–with-curl–with-curlwrappers–enable-mbregex–enable-fpm–enable-mbstring–with-mcrypt–with-gd–enable-gd-native-ttf–with-openssl–with-mhash–enable-pcntl–enable-sockets–with-ldap–with-ldap-sasl–with-xmlrpc–enable-zip–enable-soap–without-pear
makeZEND_EXTRA_LIBS=’-liconv’
makeinstall
创立PHP的设置文件:
cp-fphp.ini-production/usr/local/webserver/php/etc/php.ini
cd..
因为方才装置的时分试用了without-pear参数没有装置PEAR(由于间接装置会报错),如今我们再来补上:
wgethttp://pear.php.net/go-pear.phar
/usr/local/webserver/php/bin/phpgo-pear.phar
至此PHP的编译装置终了。
(七)装置PHP的扩大模块及设置PHP

接上去我们装置一些PHP经常使用的模块来优化体系:
起首是memcache的编译装置:
tarxvfmemcache-2.2.6.tgz
cdmemcache-2.2.6
/usr/local/webserver/php/bin/phpize
./configure–with-php-config=/usr/local/webserver/php/bin/php-config
make
makeinstall
cd..
然后我们编译装置eAccelerator减速器:
tarjxvfeaccelerator-0.9.6.1.tar.bz2
cdeaccelerator-0.9.6.1/
/usr/local/webserver/php/bin/phpize
./configure–enable-eaccelerator=shared–with-php-config=/usr/local/webserver/php/bin/php-config
make
makeinstall
cd..
然后我们将编译好的这两个扩大模块增加到PHP设置文件中:
sed-i‘s#;extension_dir=“./”#extension_dir=“/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/”
extension=“memcache.so”
#’/usr/local/webserver/php/etc/php.ini
sed-i“s#;always_populate_raw_post_data=On#always_populate_raw_post_data=On#g”/usr/local/webserver/php/etc/php.ini
sed-i“s#;cgi.fix_pathinfo=1#cgi.fix_pathinfo=0#g”/usr/local/webserver/php/etc/php.ini
创立eAccelerator所需的缓存目次:
mkdir-p/usr/local/webserver/eaccelerator_cache
然后我们到php.ini中设置eaccelerator减速器:
vim/usr/local/webserver/php/etc/php.ini
然后到文件的最初增加上面的内容:
[eaccelerator]
zend_extension=”/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so”
eaccelerator.shm_size=”32″
eaccelerator.cache_dir=”/usr/local/webserver/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″
然后我们创建PHP寄存日记的目次:
mkdir-p/usr/local/webserver/php/logs
然后我们创建php-fpm的设置文件:
vim/usr/local/webserver/php/etc/php-fpm.conf
然后在内里写进上面的内容:
[global]
pid=/usr/local/webserver/php/logs/php-fpm.pid
error_log=/usr/local/webserver/php/logs/php-fpm.log
log_level=notice
emergency_restart_threshold=10
emergency_restart_interval=1m
process_control_timeout=5s
daemonize=yes
[www]
listen=127.0.0.1:9000
listen.backlog=-1
listen.allowed_clients=127.0.0.1
user=www
group=www
listen.mode=0666
pm=static
pm.max_children=64
pm.start_servers=20
pm.min_spare_servers=5
pm.max_spare_servers=35
pm.max_requests=1024

request_terminate_timeout=0s
request_slowlog_timeout=0s
slowlog=logs/slow.log
rlimit_files=65535
rlimit_core=0
chroot=
chdir=
catch_workers_output=yes
env[HOSTNAME]=$HOSTNAME
env[PATH]=/usr/local/bin:/usr/bin:/bin
env[TMP]=/tmp
env[TMPDIR]=/tmp
env[TEMP]=/tmp

php_flag[display_errors]=off
然后我们增加www用户组和帐号信息,以便前面的php-fpm和nginx可以一般事情:
groupaddwww
useradd-gwwwwww
接上去,让我们测试下php-fpm设置文件是不是准确:
/usr/local/webserver/php/sbin/php-fpm-t
假如呈现“NOTICE:configurationfile/usr/local/webserver/php/etc/php-fpm.conftestissuccessful”字样则暗示设置准确。不然必要反省设置文件。
(八)装置Nginx

起首我们创立网页寄存的根目次:
mkdir-p/var/www
这里能够依据必要创建你本人喜好的Web根目次地点,不外注重前面的设置文件响应中央必要做修正。第一次举行编译操纵大概初学者倡议坚持这里的设置不修改,以便顺遂完成编译装置事情。
然后创立Nginx所需的日记目次并分派权限:
mkdir-p/var/log/nginx
chmod+w/var/log/nginx
chown-Rwww:www/var/log/nginx
然后编译装置Nginx所需的pcre库:
tarzxvfpcre-8.12.tar.gz
cdpcre-8.12/
./configure
make
makeinstall
cd..
接上去,编译装置Nginx:
tarxvfnginx-1.0.6.tar.gz
cdnginx-1.0.6/
./configure–user=www–group=www–prefix=/usr/local/webserver/nginx–with-http_stub_status_module–with-http_ssl_module
make
makeinstall
cd..
然后编纂Nginx的设置文件:
vim/usr/local/webserver/nginx/conf/nginx.conf
将对应的内容改成以下:
userwwwwww;
worker_processes2;

error_log/var/log/nginx/error.log;
注重蓝色笔墨局部依据办事器的设置选择分歧的值。512M以下内存为1~2;1G内存4;2G内存8;4G内存16,以此类推。
然后在设置文件的“http{”这节内里增添上面的内容以便优化:
fastcgi_connect_timeout300;
fastcgi_send_timeout300;
fastcgi_read_timeout300;
fastcgi_buffer_size64k;
fastcgi_buffers464k;
fastcgi_busy_buffers_size128k;
fastcgi_temp_file_write_size128k;
接上去我们运转上面的下令测试Nginx的设置文件是不是准确:
/usr/local/webserver/nginx/sbin/nginx-t
假如呈现上面提醒的一种则暗示设置文件无误,不然必要做进一步修正:
nginx:theconfigurationfile/usr/local/webserver/nginx/conf/nginx.confsyntaxisok
nginx:configurationfile/usr/local/webserver/nginx/conf/nginx.conftestissuccessf
如许Nginx的装置与设置也就完成。
(九)设置开机启动

我们编译好了的软件默许是不会开机主动启动的,我们必要处置下以便完成开机自启动。
起首是MySQL:
chkconfig–addmysqld
chkconfig–level345mysqldon
然后php-fpm和Nginx的启动我们放到/etc/rc.local启动文件中:
vim/etc/rc.local
在文件的开端增添上面的内容:
ulimit-SHn65535
/usr/local/webserver/php/sbin/php-fpm
/usr/local/webserver/nginx/sbin/nginx
保留加入后便可。
至此,一切的编译装置事情都停止。让我们启动php-fpm和Nginx来做测试吧!(MySQL在下面已启动了)在把持台内里输出上面下令:
若相依 该用户已被删除
沙发
发表于 2015-1-15 19:03:53 | 只看该作者

带来一篇CentOS 6.0 x64编译LNMP情况

哎呀,你太牛了,我好崇拜你!
活着的死人 该用户已被删除
板凳
发表于 2015-1-20 05:43:22 | 只看该作者
笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机
因胸联盟 该用户已被删除
地板
发表于 2015-1-28 19:40:14 | 只看该作者
其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。
蒙在股里 该用户已被删除
5#
发表于 2015-2-5 23:57:41 | 只看该作者
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
第二个灵魂 该用户已被删除
6#
发表于 2015-2-14 09:47:21 | 只看该作者
硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。
爱飞 该用户已被删除
7#
发表于 2015-3-4 06:18:06 | 只看该作者
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
飘灵儿 该用户已被删除
8#
发表于 2015-3-11 18:08:46 | 只看该作者
任何一个叫做操作系统的东西都是这样子构成的:内核+用户界面+一般应用程序。
小女巫 该用户已被删除
9#
发表于 2015-3-19 09:14:05 | 只看该作者
对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。
若相依 该用户已被删除
10#
发表于 2015-3-27 20:09:33 | 只看该作者
如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-29 16:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表