在树莓派1B上编译安装lnmp服务器

时间:2021-02-28 06:30:24

最近一周给部门内部搭建考试系统,选择使用PHPEMS。这是个开源的系统,唯一缺点是PHP的版本比较低,只能使用5.2或5.3。而我的树莓派系统更新后使用apt-get安装得到的PHP版本为5.4。由于担心版本不对,使用中会出现问题,最后决定选择编译安装LNMP。谁曾想,这一安装竟然耗费了近5天时间,期间无数次重新卡刷树莓派系统。好在有阿里云的镜像,更新速度还凑活。有几个更新包(bootloader以及doc,sonic pi)必须从raspberrypi的网站上下,那速度太慢了。最后终于搞定安装,下面记录备份一下安装流程。

 

一.准备工作:

  • 提前下载好各类库源文件:libxml2,libmcypt,zlib,libpng,jpeg,freetype,autoconf,gd,pcre,opessl,ncurses,m4.
  • 准备下载需要程序的PHP,nginx,mysql源码包。这里使用的mysql5.1版本
  • 将上述文件都存放在一起,便于管理。

二.整个过程记录:

按照./configure  && make && make install进行即可。唯一不同过得就是配置参数需要注意,有些参数我也是参考网络。一般配置安装目录都在/usr/local/xxx.

  1. 重新烧写raspbian系统,wheezy版本,启动后扩充空间。重启系统后,更改source.list到阿里云镜像。

    deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
    deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
    sudo apt-get update && upgrade.更新系统。这里更新需要一段时间。尤其是更新bootloader 等等。

  2. 编译:libxml2

    ./configure --prefix=/usr/local/libxml2 --with-python=no  
    make
    && make install
  3. 编译:libmcrypt
    ./configure --prefix=/usr/local/libmcrypt --enable-ltdl-install  
    make
    && make install
  4. 编译:zlib
    ./configure  
    make
    && make install  
  5. 编译:libpng
    ./configure --prefix=/usr/local/libpng  
    make
    && make instal

     

  6. 编译:jpeg
    mkdir /usr/local/jpeg9  
    mkdir
    /usr/local/jpeg9/bin
    mkdir
    /usr/local/jpeg9/lib
    mkdir
    /usr/local/jpeg9/include
    mkdir
    -p /usr/local/jpeg9/man/man1
    tar
    -zxvf jpegsrc.v9.tar.gz
    cd jpeg
    -9/
    .
    /configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
    make
    && make install  
  7. 安装:freetype,这里没有编译,直接apt安装的libfreetype6-dev,后面再安装php的时候需要用到。编译php报错freetype.h not found.需要建立软连接。
    ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h 
  8. 编译:autoconf.
    ./configure && make && make install
  9. 编译:gd
    ./configure --prefix=/usr/local/gd2 --with-png=/usr/local/libpng/ --with-jpeg=/usr/local/jpeg9/ --with-freetype=/usr/local/freetype  
    make
    && make install
  10. 编译:pcre
    ./configure   
    make
    && make install
  11. 编译:openssl
    ./config --prefix=/usr/local/openssl  
    make
    && make install 
  12. 编译:ncurses,这个必须安装,否则mysql编译会出错。
  13. ./configure --with-shared --without-debug --without-ada --enable-overwrite  
    make
    && make install

     上面opessl和ncurses编译时间较长,需要耐心等待。

  14. 编译安装nginx。

      groupadd www
      useradd -g www www

    ./configure --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/lnmp/openssl-1.0.0l --with-http_stub_status_module --with-http_ssl_module   
    make
    && make install

    配置nginx.conf.

    配置nginx;
    vi
    /usr/local/nginx/conf/nginx.conf
    #第35行server下找到location
    / 修改为如下,root为根路径,index为默认解析
    location
    / {
    root
    /var/www/html;
    index index.html index.htm index.php;
    }
    #修改fastcgi配置,在server下找到location
    ~ \.php$(第74行),并修改为如下
    location
    ~ \.php$ {
    root
    /var/www/html;
    fastcgi_pass
    127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME
    /var/www/html$fastcgi_script_name;
    include fastcgi_params;
    }

     

  15. 编译安装mysql。具体方法参考http://blog.csdn.net/yangzhawen/article/details/7431865.
    1. 建立组和用户。
      groupadd mysql
      useradd
      -g mysql mysql

       

    2. 配置编译
       ./configure --prefix=/usr/local/mysql --enable-local-infile
      make
      make install

       

    3. 可能会出现错误:提示m4的库文件没有,需要下载安装。配置使用默认选择即可。
    4. 安装选项文件,将源文件里的support-files里的conf文件用作模板。
      cp support-files/my-medium.cnf /etc/my.cnf

       

    5. 设置mysql的权限。
      cd /usr/local/mysql
      chown
      -R mysql .
      chgrp
      -R mysql .

       

    6. 新建mysql数据表
      /usr/local/mysql/bin/mysql_install_db --user=mysql

       

    7. 改变/usr/local/mysql/var文件权限
      chown -R mysql var

       

    8.  拷贝执行文件
      cp /usr/local/src/mysql-5.1.47/support-files/mysql.server /etc/init.d/mysql

       

    9. 测试运行mysql
      usr/local/mysql/bin/mysqld_safe --user=mysql &
      service mysql start

       

    10. 修改mysql的管理员密码
      /usr/local/mysql/bin/mysqladmin -u root password 你的password

       

    11. 登录使用mysql
      /usr/local/mysql/bin/mysql -u root -p

       

    12. 链接mysql文件,解决command not found 问题。
       cd /usr/local/mysql/bin/
      for file in *;
      > do
      > ln -s /usr/local/mysql/bin/$file /usr/bin/$file;
      > done

       

    13. 测试mysql,在任意目录使用mysql -u root -p 应该有提示密码输入。
    14. netstat -atln 检查3306端口使用情况。
    15. Service mysql start启动mysql服务
    16. Service mysql stop停止mysql服务,Service mysql status检查状态。
  16. 编译安装php5.2.17
    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql/ --with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg9/ --with-freetype-dir --with-gd --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets --enable-fpm --with-pdo-mysql=/usr/local/mysql/ --with-png-dir=/usr/local/libpng/

    编译会出错node.c的错误,百度即可解决,下面为方法。

    $ curl -o php-5.2.17.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt
    $ tar jxf php-5.2.17.tar.bz2
    $ cd php
    -5.2.17
    $ patch
    -p0 -b <../php-5.2.17.patch

     

  17. 启动php-fpm,如果提示错误,需要注意php安装目录下conf文件是否存在php-fpm.conf.并将其中nobody改为前面添加的用户名及组名www。
  18. 安装phpMadmin。需要注意php的版本与其应匹配。直接下载解压缩到站点目录即可。
  19. 安装完毕后添加各启动项目到/etc/rc.local里面exit 0前面即可保证开机启动。
    if [ "$_IP" ]; then
    printf
    "My IP address is %s\n" "$_IP"
    fi

    /usr/local/nginx/sbin/nginx
    /usr/local/php/sbin/php-
    fpm
    service mysql start
    exit
    0

     

  20. 安装phpems,按照官方手册安装即可。需要注意修改数据库配置文件,修改data文件和files文件的权限。

至此,lnmp系统安装完毕。安装需要耐心,一定需要耐心,特别是要编译到树莓派这类处理能力不高的系统上!!