AceLNMP 2.3

作者: | 2009-11-15
Logo

********** 档案简介 **********

AceLNMP是一个基于CentOS系统的自动安装Shell Script,主要都是以各软件官方释出最新的稳定版本为主,目前主要软件的版本为NGiNX 1.0.15、MySQL 5.0.96、PHP 5.3.14。

什么是LNMP? 就是Linux + NGiNX + MySQL + PHP的一个网站开发环境,本档案仅适合于红帽或Fedora(好像是废话)或CentOS系列的Linux,其他Linux系统请参考acelnmp.sh的内容分别安装软件。 :D

其他Debian、Gentoo、Slackware、Ubuntu之类的当然也很牛,不过我比较习惯玩帽子,而VPS的主机商大多提供的都会有CentOS,有兴趣学习CentOS的先看看维基的介绍:$ 对于Linux新手,鸟哥的Linux私房菜是个入门的好选择。 (Y)

*********更新历史*********

2009/10/28 – 开始研究自动安装脚本
2009/11/01 – 成功安装在Yourwebhoster.eu的OpenVZ规格 VPS
2009/11/11 – 成功安装在RapidVPS.com的XEN规格VPS
2009/11/12 – 成功安装在1xen.co.uk的XEN规格VPS
2009/11/14 – 成功安装在HostingInside.com的OpenVZ规格VPS
2009/11/15 – 公布AceLNMP 1.0
2009/11/16 – 成功安装在servainet.com的XEN规格VPS
2009/11/17 – 新增安装ZendOptimizer的安装方法
2009/11/25 – NGiNX更新到0.7.64
2009/12/03 – phpMyAdmin更新到3.2.4
2009/12/15 – MySQL更新到5.1.41
2010/09/21 – 更新AceLNMP 1.5(更新一大堆 :kao )
2010/10/15 – MySQL更新到5.1.51(修正5.1.50版的DDOS疑虑)
2010/11/09 – 更新粉多~ MySQL更新到5.1.52、NGiNX更新到0.8.53、PHP更新到5.3.3、phpMyAdmin更新到3.3.8
2010/11/10 – 修正几个ln错误的连结
2011/10/20 – 久久想到的大更新,MySQL返老还童用回5.0.92,别揍我! (H)
2011/11/09 – 修正2个安装问题,更新phpMyadmin 3.4.7。
2012/04/05 – 更新一大堆。
2012/07/03 – 更新NGiNX 1.0.15、MySQL 5.0.96、PHP 5.3.14。

本档案参考了以下网站,非常感谢他们提供的资讯 :P

简体中文

Nginx 的中文维基
LNMP-Linux下Nginx+PHP+MySQL+phpMyAdmin+eAcelerator一键安装包 – Licess’s Blog
最新Linux下的Nginx+MySQL+PHP+Memcache+Vsftpd一键安装包 | 猫言猫语
疯人醉语 ? Blog Archive ? LNMP-LNMPz-最新Linux下的Nginx+MySQL+PHP+phpMyAdmin+eAcelerator+Zend Optimizer一键安装包
LNMP Debian/Ubuntu下Nginx+MySQL+PHP+phpMyAdmin+Zend一键安装包beta发布 – VPS侦探
Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)[原创] – 回忆未来[张宴] – 服务器系统架构与底层研发
Nginx 中文网
Nginx使用帮助

英文

NGiNX WiKi
nginx Web Server Tutorials
Install NGINX (better than Apache or Lighttpd) – VPS Bible Pt 11 – GUVNR
Setup WordPress on NGINX (FURLs & Cache) – VPS Bible Pt 13 – GUVNR
Nginx – VPSLink Wiki
Virtual Private Server Life: NGINX, PHP-CGI, SPAWN-FCI, FTP, VHOSTS, MYSQL | centos-fedora-redhat
howto: nginx with php and Passenger (mod_rails) at once | Matejunkie
Very low memory VPS Linux for Rails | Ruby, Rails, OSX and Linux fun
Perfect Setup: Ubuntu Hardy+Nginx+MySQL5+PHP5+Wordress | MENSK Technologies Corporation
Using Nginx as a Reverse Proxy to Get the Most Out of Your VPS. | Ubuntu Geek

使用上有任何问题可留下错误讯息或附上记录档,我有空可以帮忙检查,目前只碰过如果内存太少的时候,编译MySQL时会发生错误,这个需要请主机商帮忙暂时加大内存。 :|

下面图片是我其中一台VPS安装完AceLNMP(PHP-FPM只开了一线)再+SNMP+神秘的transmission也只吃114MB内存而已。

********** 安装及设定说明 **********

安装步骤1. 首先下载AceLNMP安装包

cd /usr/src
wget http://acelnmp.googlecode.com/files/acelnmp-2.3.tar.gz
tar xzf acelnmp-*.tar.gz
cd acelnmp-*

—————————我是分隔线—————————

安装步骤2. 新增套件管理软件来源

i386

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh epel-release-5-4.noarch.rpm rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rm -f epel-release-5-4.noarch.rpm rpm rpmforge-release-0.5.2-2.el5.rf.i386.rpm

x86_64

wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm -ivh epel-release-5-4.noarch.rpm rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rm -f epel-release-5-4.noarch.rpm rpm rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

—————————我是分隔线—————————

安装步骤3. 下载LNMP环境所需的档案

chmod +x download.sh
./download.sh

下载完毕之后先检查一下档案是不是都在,特别要注意的是如果SSH连线到主机时跑很慢或是不太顺畅的,请先进入SCREEN后再开始安装AceLNMP :kao

—————————我是分隔线—————————

安装步骤4. 开始安装AceLNMP(请记得开启你的SSH连线软件纪录的功能,如果有问题也可以方便抓) (H)

chmod +x acelnmp.sh
./acelnmp.sh

acelnmp.sh刚开始只要输入你的域名,再来就是全自动化的编译+安装,大约需要20~30分钟才会跑完,视VPS的硬件规格而定。 :pu

—————————我是分隔线—————————

安装步骤5. 跑完acelnmp.sh之后先进入MySQL增加phpMyAdmin关联功能

service mysql start
mysql -u root -proot
create database phpmyadmin;
USE phpmyadmin;
FLUSH PRIVILEGES;
quit;
/usr/local/mysql/bin/mysql -u root -proot phpmyadmin < /web/www/phpmyadmin/examples/create_tables.sql

再修改MySQL ROOT帐号的密码,默认为root / root

mysqladmin -u root -p原密码 password 新密码

—————————我是分隔线—————————

安装步骤6. 最后执行NGiNX来打开探针或是phpMyAdmin看看有没有问题吧~ :D

/etc/init.d/nginx start
/etc/init.d/php-fpm start

一切都OK之后,完工~ 恭喜你的LNMP环境完成了,结束囉! :P 完工~

cd /usr/src/
rm -rf acelnmp-*

日后需要更新NGiNX的时候只要先下这个指令再编译安装NGiNX好就可以启动新版的NGiNX而且网站不会中断 (Y)

kill -HUP cat /var/run/nginx.pid

—————————我是分隔线—————————

NGiNX 安装资料夹 : /usr/local/nginx
MySQL 安装资料夹 : /usr/local/mysql
PHP 安装资料夹 : /usr/local/php
网站资料夹 : /web/www
ImageMagick程序路径 : /usr/local/bin/
ImageMagick转换程序路径 : /usr/local/bin/convert

MySQL 设定档 : /etc/my.cnf
NGiNX 设定档 : /usr/local/nginx/conf/nginx.conf
PHP 设定档 : /usr/local/php/etc/php.ini
FastCGI 设定档 : /usr/local/php/etc/php-fpm.conf

NGiNX 记录档 : /var/log/nginx-error.log
FastCGI记录档 : /var/log/php-fpm.log
MySQL记录档 : /var/log/mysql.log

phpMyAdmin : http://你的域名/phpmyadmin/
iProber PHP 探针 : http://你的域名/iProber.php
PHPINFO : http://你的域名/phpinfo.php
PHP Benchmark : http://你的域名/php-benchmark.php

—————————我是分隔线—————————

备注1:调整NGiNX的负载能力

nginx.conf里面我有注释一些解释在上面,另外附上WordPress、Discuz、ZEND Framework的Rewrite规则,其他可以参考NginxHttpRewriteModule、nginx rewrite的参数大全来写自己的Rewrite规则。

vi /usr/local/nginx/conf/nginx.conf

NGiNX以的负载能力最主要的设定就是工作线程,因为NGiNX本身只有简单的HTTP服务器基本功能,大多数的功能都依赖别的套件来发挥它强大的高负载功力

worker_processes 4;

测试NGiNX设定档是否正确

/usr/local/nginx/sbin/nginx -t

启用新的NGiNX设定值

kill -HUP cat /var/run/nginx.pid

备注2:调整FastCGI的负载能力

由于新版的PHP已经内建了FastCGI,所以设定档也跟着变成php.ini的格式了,编辑php-fpm.conf,调整方式依旧是依照系统负荷量(尤其要注意内存消耗量,1个工作线程大约消耗10~20MB内存)调高max_children参数来增加FastCGI的工作线程数量,并延长中断时间。

vi +/pm.max_children /usr/local/php/etc/php-fpm.conf

FastCGI的启动方式依旧是档案或端口做处理,这边已经改成用端口方式比较方便,以后要是需要做负载平衡或是后端转发给apache或lighthttpd也不用东改西改。

listen = 127.0.0.1:9000

然后增加9000端口到iptables规则

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT

要注意的是新版PHP针对FastCGI设定线程可选两种模式处理,static静态模式,dynamic是动态模式处理,这边的设定是依128MB的VPS为准,因为pm.max_children仅在静态模式底下有效,所以使用静态模式让FastCGI的工作线程数量只使用2个,比较能控制内存消耗量。

pm = static
pm.max_children = 1

而内存在512MB左右的可以试用dynamic的动态模式,动态模式刚开始启动是pm.start_servers指定的数量,如果请求较多则会自动增加FastCGI的工作线程,但不会超过pm.max_spare_servers指定的数量,空闲时也不会降低到pm.min_spare_servers指定的数量。另外pm.start_servers指定的数量可以参考原设定档里面所提的: min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

pm = dynamic
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

如果内存1GB以上的话也可以换成PHP原厂的设定或是再增加pm.max_spare_servers的数量。

pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

延长中断时间这对降低FastCGI负荷量很有效果,而且比较不会造成FastCGI的工作线程死翘翘。

request_terminate_timeout = 60s

启用新的FastCGI设定值

/etc/init.d/php-fpm restart

—————————我是分隔线—————————

备注3:调整my.cnf设定

cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf

my.cnf的设定是最讨厌的部份 = = 懒人法当然是直接把官方默认的档案直接复制过去~

my-small.cnf // 内存少于 128MB。
my-medium.cnf // 内存 256MB~512MB。
my-large.cnf // 内存 512MB。
my-huge.cnf // 内存 1GB~2GB。
my-innodb-heavy-4G.ini // 内存 4GB 以上。

但是实际上要跑出最好的效能是需要一直做调整才抓的出来的,而我参考了LowEndBox的
Reducing MySQL Memory Usage for Low End Boxes 这篇文章来设定内存小于256MB的VPS,另外MySQL配置文件例子翻译这是一位中国网友翻译的也可以看看,根据某不具名的DBA大帅是说依据这个规范就对了

MySQL消耗的内存量 = key_buffer +
max_connections 乘 (join_buffer_size + read_buffer_size + sort_buffer_size + thread_stack + tmp_table_size)

/etc/init.d/mysql restart

—————————我是分隔线—————————

备注4:调整php.ini设定

vi /usr/local/php/etc/php.ini

memory_limit 128M // 程式最多允许使用内存量
post_max_size 8M // POST的大小
upload_max_filesize 2M // 允许上传档案的大小
max_execution_time 30 秒 // 程式最长运行时间
max_input_time 60 秒 // 每个Script处理输入资料可用时间上限

A. memory_limit 大于或等于 post_max_size
B. post_max_size 大于或等于 upload_max_filesize

符合此规范才能顺利上传档案唷 8-)

一般中小型网站的范例

post_max_size = 50M
upload_max_filesize = 50M
max_execution_time = 600
max_input_time = 600

一个可上传影音档案或大型的网站的范例

post_max_size = 128M
upload_max_filesize = 128M
max_execution_time = 1800
max_input_time = 1800

如果需求超过128MB以上时,除了在加大参数之外同时也要编辑nginx.conf中的调整client_max_body_size这个参数来符合需求

vi /usr/local/nginx/conf/nginx.conf

client_max_body_size 128m;

最后可能会需要调整的是分配内存给eAccelerator加速器大小的参数是16MB,适合内存在128MB的VPS主机,视主机内存多寡可以自行调整来加强效能

eaccelerator.shm_size="16"

—————————我是分隔线—————————

备注5:ZendOptimizer在PHP 5.3.X版本已经改名成Zend Guard,但其实就个人来说,我自己是觉得有eAccelerator就够了,跑大型网站在把memcache拉上来吧!Linux的调教上并不适用多多益善这个道理,求稳定才是真王道 (Y)

—————————我是分隔线—————————

备注6:PHP在MAKE完毕时会跳一个错误讯息

PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.

但这问题是可以忽略的,并不会影响PHP的运作,就照字面意思翻译是缺少了一个叫做PHP_Archive的PEAR套件,有需要再手动安装,没桩也不会影响到PHP的运作,除非某些特定程式要这个PEAR套件。

cd /usr/local/php/bin
wget http://pear.php.net/go-pear.phar
php go-pear.phar
ln -f -s /usr/local/php/bin/pear /usr/bin/pear
pear install channel://pear.php.net/PHP_Archive-0.11.4
rm -f go-pear.phar

PHP_Archive这个错误,我猜是因为他是ALPHA的关系,因为正常大多人都是安装稳定的版本,咕狗大神开示说PHP 5.3.6就有这个状况,所以很无奶.....打错~是无奈! 总之有需要的人再补这个吧~ (W)


脸书回应

篇回应

23 thoughts on “AceLNMP 2.3

  1. 五的

    Entering directory ‘/home/litoueva/acelnmp/mysql-5.1.52/mysql-test’
    安装停在这里不动了,怎么解决

    回复
  2. 五的

    没问题了,安装好后怎么启动代码service nginx restart显示
    bash:service:command not found
    下面要怎么做

    回复
  3. 穷苦人家的小孩 文章作者

    service nginx restart没错啊…你是啥米系统啊 @@” 或是试试/etc/init.d/nginx restart (Y)


    五的:

    没问题了,安装好后怎么启动代码service nginx restart显示
    bash:service:command not found
    下面要怎么做

    回复
  4. 五的

    nginx文件缓存时间怎么弄动态静态那些,在nginx怎么配置,在网上找到可是配置错误服务器就没办法启动,谢谢

    回复
  5. 穷苦人家的小孩 文章作者

    打开NGiNX 设定档/usr/local/nginx/conf/nginx.conf,往下找到

    # 暂存特定档案每7天过期
    location ~ .*.(ico|gif|jpg|jpeg|png|bmp|flv|swf)$ {
    expires 7d;
    access_log off;
    }

    这边可以指定暂存什么类型的档案,若是rewrite的规则的话,我有把一些常见的打包进去了,在安装过程中会复制到/usr/local/nginx/conf/rewrite底下。


    五的:

    nginx文件缓存时间怎么弄动态静态那些,在nginx怎么配置,在网上找到可是配置错误服务器就没办法启动,谢谢

    回复
  6. 779

    XD 我也是因为有新机器 才在装的

    KVM技术 虚拟3核 2G RAM 200G HDD @ Tokyo. :kao :kao :kao

    回复
  7. 穷苦人家的小孩 文章作者

    O_o 多少钱一个月啊~ 网址交出来! GY

    XD 我也是因为有新机器 才在装的

    KVM技术 虚拟3核 2G RAM 200G HDD @ Tokyo. :kao :kao :kao

    回复
  8. 779

    可以用信用卡啊
    只要是JCB几乎都可以过

    只是在申请时 你要日本IP 不难 XD XD

    回复
  9. 779

    靠腰了 冏
    把PHP 改用5.3.27 就发生
    configure: error: libXpm.(a|so) not found.

    可是YUM的确有把LinXpm装上去啊 冏

    回复
  10. 穷苦人家的小孩 文章作者

    o_O 先看看libxpm.so在哪? 我的在这

    /usr/lib/libXpm.so.4
    /usr/lib/libXpm.so.4.11.0

    靠腰了 冏
    把PHP 改用5.3.27 就发生
    configure: error: libXpm.(a|so) not found.

    可是YUM的确有把LinXpm装上去啊 冏

    回复
  11. 779

    不知道是不是活见鬼了
    换回帽子5.10 i386 就装上去了

    本来主机商提供的是6 的x64版 冏

    回复
    1. 穷苦人家的小孩 文章作者

      鬼打墙了 o_O”

      不知道是不是活见鬼了
      换回帽子5.10 i386 就装上去了

      本来主机商提供的是6 的x64版 冏

      回复

发表回响

你的电子邮件位址并不会被公开。 必要字段标记为 *

(A)  :@  (brb)  (U)  (:cc)  :S  (H)  :-(  :cute  (6)  :-#  :$  :er  8-)  FUCK 
(})  ({)  GY  (L)  :kao  (K)  :cc  :pu  (F)  :(  ^o)  :-*  :O  +o(  |-) 
:)  (*)  :D  *-)  (N)  (Y)  :P  :|  (W)  ;)  XD 
 

这个网站采用 Akismet 服务减少垃圾留言。进一步了解 Akismet 如何处理网站访客的留言资料