折腾了一个多月 Slackware 下的 LNMP(或称 LEMP)环境

2010年5月22日 由 CodeCoolie 留言 »

一个半月前开始使用 Linode VPS,由于对 Slackware 比较感冒,所以选了 Slackware 的发行版,环境是 LAMP。

因为 LAMP 环境在 Slackware 的发行版中有对应的安装包,所以搭建 Web 服务器就比较容易了,找一个 Slackware 的 Mirror,然后就是一些列的 wget 和 intallpkg 相应的安装包。

不过最近流行 LNMP(或称 LEMP)环境,即使用 nginx 替代 Apache 作为 http 服务器,相同环境下 nginx 性能强于 Apache 很多,占用资源也少。其中 PHP 使用 PHP-FPM 即 FastCGI 模块。

网上关于搭建 LNMP 环境的参考资料绝大多数都是在 CentOS 系统下的,并且有一键安装包,出于对 Slackware 的忠诚,开始研究在 Slackware 下搭建 LNMP 环境。MySQL 决定使用 Slackware 自带的安装包,所以主要是研究 nginx 和 PHP 的编译。

不爽的是网上关于 Slackware 下的 LNMP 环境搭建的资料非常少,只找到一个 Slackware 13.0 的英文资料,但 Linode VPS 只有 12.2 版本的,多少有一些出入。此外还有版本选择问题,PHP-FPM 有多个版本,主要是对应 PHP 5.2.x 和 5.3.x,这两个版本的 PHP 编译参数有一些差异。

重要的一点是,我不想在 configure、make 之后直接 make install 来安装,这会搞乱系统,即不能卸载,这不符合我的风格,所以决定研究制作 Slackware 安装包。

此外,这个过程我不想纯手工操作,而是要写成自动化脚本,便于以后重新制作安装包。

由于以前对 Bash 脚本编程了解不多,这次折腾 LNMP 安装包,耗费时间的地方,除了研究 nginx 和 PHP 编译参数外,就是编写脚本了。前前后后写了一堆脚本,除了 LNMP 相关的脚本外,还有工作环境的初始化脚本(如 dir_colors、vim 等)、OpenVPN 自动配置脚本(自动生成服务器端密钥、服务器端配置、客户端密钥、客户端配置等)。

折腾 PHP-FPM 编译参数时候,由于 make 需要比较长的时间,一度走了弯路,即在本地使用 VMware 装了一个 Slackware 12.2 系统,除内核外与 Linode VPS 的 Slackware 配置均相同。结果经过对比,发现我在本地编译 PHP 时候比 Linode VPS 上要慢不少,我机器的 CPU 是 E8300,配置还不算低,可见 Linode VPS 配置还是非常强的,4 核 Xeon 2.5G,Linode 官方在对 CPU 描述的时候,大概意思说你的 VPS 可以使用空闲的 CPU 资源,不晓得我在 make 的时候,同一个服务器上其他的 VPS 会受多大影响。还好,我只是直接 make 来编译,而不是 make -j2、或3、或4,哈哈。

不爽的是,等我基本写好了各种脚本,重新部署一个 Slackware 系统时,发现 Linode 新近提供了 Slackware 13.0 发行版,既然有新版,就不打算用旧版了。于是又折腾了两天,修改脚本,使其适应 Slackware 13.0 的系统。

搞好 LNMP 安装包后,主要工作就是研究 nginx 的配置了,至于 PHP 的配置,比较简单,而 MySQL 优化等以后慢慢研究了。目前 nginx 已经配置好了普通虚拟主机、根目录下的 WordPress 虚拟主机,子目录下的 WordPress 还有一点点不完美,以后再研究。另外 Discuz! 的虚拟主机还没配。

截至目前,我的 FFVCL 主站、FFVCL 博客、自己博客、女儿博客都已经迁移到 Linode VPS 的 LNMP 环境下,还有一个 Discuz! 站尚待研究 nginx 配置。此外,FFVCL 的邮件使用 Google Apps 进行托管。现在可以大声对 LP 说白白了,哈哈。(LP -> Lunarpages 虚拟主机,到期时间是明天,即5月23日。)

P.S. 由于在开始研究 LNMP 时候,Linode VPS 已经启用,为了不影响正在跑的网站,额外又买了一个 Linode 节点,等环境全部搞定后,可以随时 cancel 掉,费用将按天计算,余额退回 Linode 账户内。

题外话,昨天修改域名指向时候,才发现 name.com 的 Private Whois 服务一个月前就开始收费了,标价 7.99 刀每年,现在优惠价 1.99 刀,这着实不爽啊。后来网络搜索相关资讯时,找到一个域名续费时对 Private Whois 免费的优惠码,于是把一堆域名都多续了两年费,现在域名到期时间是三年后了,至于三年后是否还需要 Private Whois 服务,到时候再说了。不过还有三个域名没续费,正在纠结是否还继续养着。

附 nginx 和 PHP 编译参数(PHP编译了尽量多的模块,呵呵)

nginx version: nginx/0.7.65
TLS SNI support enabled
configure arguments:
–user=nginx \
–group=nginx \
–with-pcre \
–prefix=/var/www \
–sbin-path=/usr/sbin/nginx \
–conf-path=/etc/nginx/nginx.conf \
–error-log-path=/var/log/nginx/error.log \
–pid-path=/var/run/nginx.pid \
–lock-path=/var/lock/nginx \
–with-rtsig_module \
–with-select_module \
–with-poll_module \
–with-http_ssl_module \
–with-http_realip_module \
–with-http_addition_module \
–with-http_xslt_module \
–with-http_sub_module \
–with-http_dav_module \
–with-http_flv_module \
–with-http_gzip_static_module \
–with-http_random_index_module \
–with-http_secure_link_module \
–with-http_stub_status_module \
–with-http_perl_module \
–http-log-path=/var/log/nginx/access.log \
–http-client-body-temp-path=/var/tmp/nginx/client_body_temp \
–http-proxy-temp-path=/var/tmp/nginx/proxy_temp \
–http-fastcgi-temp-path=/dev/shm \
–without-mail_pop3_module \
–without-mail_imap_module \
–without-mail_smtp_module

PHP Version => 5.2.13
Build Date => May 20 2010 16:31:02
Configure Command =>
./configure \
–enable-fpm \
–enable-force-cgi-redirect \
–enable-pcntl \
–enable-sigchild \
–enable-fastcgi \
–enable-pcntl \
–enable-sigchild \
–enable-discard-path \
–with-xmlrpc \
–disable-ipv6 \
–enable-inline-optimization \
–prefix=/usr \
–libdir=/usr/lib \
–with-libdir=lib \
–sysconfdir=/etc \
–disable-safe-mode \
–disable-magic-quotes \
–enable-zend-multibyte \
–enable-mbregex \
–enable-tokenizer=shared \
–with-config-file-scan-dir=/etc/php \
–with-config-file-path=/etc/nginx \
–enable-mod_charset \
–with-layout=PHP \
–enable-sigchild \
–enable-xml \
–with-libxml-dir=/usr \
–enable-simplexml \
–enable-spl \
–enable-filter \
–disable-debug \
–with-openssl=shared \
–with-pcre-regex=/usr \
–with-zlib=shared,/usr \
–enable-bcmath=shared \
–with-bz2=shared,/usr \
–enable-calendar=shared \
–enable-ctype=shared \
–with-curl=shared \
–with-curlwrappers \
–with-mcrypt=shared,/usr/bin \
–enable-dba=shared \
–with-gdbm=/usr \
–with-db4=/usr \
–enable-dbase=shared \
–enable-exif=shared \
–enable-ftp=shared \
–with-gd=shared \
–with-jpeg-dir=/usr \
–with-png-dir=/usr \
–with-zlib-dir=/usr \
–with-xpm-dir=/usr \
–with-freetype-dir=/usr \
–with-t1lib=/usr \
–enable-gd-native-ttf \
–enable-gd-jis-conv \
–with-gettext=shared,/usr \
–with-gmp=shared,/usr \
–with-iconv=shared \
–with-ldap=shared \
–enable-mbstring=shared \
–enable-hash \
–with-mhash=shared,/usr \
–with-mysql=shared,/usr \
–with-mysqli=shared,/usr/bin/mysql_config \
–enable-pdo=shared \
–with-pdo-mysql=shared,/usr \
–with-pdo-sqlite=shared,/usr \
–with-pspell=shared,/usr \
–with-mm=/usr \
–enable-shmop=shared \
–with-snmp=shared,/usr \
–enable-soap=shared \
–enable-sockets \
–with-sqlite=shared \
–enable-sqlite-utf8 \
–with-regex=php \
–enable-sysvmsg \
–enable-sysvsem \
–enable-sysvshm \
–enable-wddx=shared \
–with-xsl=shared,/usr \
–enable-zip=shared \
–with-tsrm-pthreads \
–enable-shared=yes \
–enable-static=no \
–with-gnu-ld \
–with-pic \
–with-fpm-conf=/etc/nginx/php-fpm.conf \
–with-fpm-log=/var/log/php-fpm.log \
–with-fpm-pid=/var/run/php-fpm.pid \
–build=i486-slackware-linux

广告位

6 条评论

  1. 西柚说道:

    请问slackware的LAMP如何安装啊?我查找到的只有centos,ubuntu他们的(是LAMP)

  2. CodeCoolie说道:

    我个人习惯用Slackware,资源比较少,很多东西需要自己编译。建议你用CentOS,网上有LNMP的一键安装包,很容易就建好了。

  3. sha021说道:

    最近想学习lnmp,因为需要,但一点都不懂,找了半天,找到这来了,呵呵,不知道怎么样向你请教啊。也想用lnmp建一个自己的服务器。

  4. CodeCoolie说道:

    不是想做,是已经做了啊。
    而且这个博客也是网站啊。

  5. 小小说道:

    想做网站?

发表回复