HG556A Ver.C 刷OpenWrt,搭建nginx,php,mysql服务平台备份(2015.3.19)

来源:互联网 发布:wpf编程宝典 百度云 编辑:程序博客网 时间:2024/05/14 19:36

  • 刷机
    • 下载软件
      • 下载OpenWrt固件
      • 下载TFtpd32
    • 刷新固件
  • 配置路由
    • 设置网络
    • 软件安装部署
  • 部署网站

刷机

下载软件

现在最新HG556A的OP固件是开发测试版本,但为了稳定使用OpenWrt的各种功能,采用Barrier Breaker分支版本(2014-10-02发布)。

下载OpenWrt固件

下载地址可以在OpenWrt关于HG556A的Wiki找到,里面包含HG556A各硬件版本刷OP的方法。这里选择下载openwrt-HW556-squashfs-cfe.bin

下载TFtpd32

刷新固件需要安装TFTP服务,这里在下载吧下载TFTPD32 (TFTP服务器) V3.51 绿色版

刷新固件

  • 使用usb转串口模块连接路由器(以内存这边算左边,从左到右分别为[TX GND 无 无 RX])
  • 设置以太网IP地址为192.168.1.100,子网掩码255.255.255.0,网关192.168.1.1。网线连接电脑和HG556A的LAN4(最右的LAN口)
  • 断开路由的电源
  • 按住路由RESTART按键不要松开
  • 连接路由的电源,在串口中查看日志,直到出现CFE>输入选项

    Break into CFE console
    GetHG556aBoardVersion = <3>
    Board IP address : 192.168.1.1
    Host IP address : 192.168.1.100
    Gateway IP address :
    Run from flash/host (f/h) : f
    Default host run file name : vmlinux
    Default host flash file name : bcm963xx_fs_kernel
    Boot delay (0-9 seconds) : 1
    Board Id Name : HW556
    Psi size in KB : 64
    Number of MAC Addresses (1-32) : 14
    Base MAC Address : 40:cb:a8:4e:30:b4
    Ethernet PHY Type : Internal
    Memory size in MB : 64
    CMT Thread Number : 1
    web info: Waiting for connection on socket 0.
    CFE>

  • 打开电脑上的tftpd,将目录指向op固件所在目录

  • 在串口中输入 f 192.168.1.35:openwrt-HW556-squashfs-cfe.bin,回车后等待固件更新完毕。

配置路由

在路由器重启结束后,在串口输入回车,可以进入OP的命令模式。
输入passwd,可以给系统定义密码,默认用户是root(输入密码的时候,界面上是看不见任何东西的)

设置网络

  • vi /etc/config/network
    下面的代码意思如下:
    将wan设为静态IP,供测试,真正使用需要修改为pppoe方式
    使用vlan将LAN1划分为WAN,剩下3个为LAN
    编辑好之后,可以使用reboot重启系统,这时候,系统的广域网ip变为192.168.137.21,局域网192.168.0.1

    config interface ‘loopback’
    option ifname ‘lo’
    option proto ‘static’
    option ipaddr ‘127.0.0.1’
    option netmask ‘255.0.0.0’
    config globals ‘globals’
    option ula_prefix ‘fdba:3c0b:e596::/48’
    config interface ‘wan’
    option ifname ‘eth0.1’
    option proto ‘static’
    option ipaddr ‘192.168.137.21’
    option netmask ‘255.255.255.0’
    option gateway ‘192.168.137.1’
    option dns ‘192.168.137.1’
    config interface ‘lan’
    option ifname ‘eth0.2’
    option type ‘bridge’
    option proto ‘static’
    option ipaddr ‘192.168.0.1’
    option netmask ‘255.255.255.0’
    option ip6assign ‘60’
    config switch
    option name ‘eth0’
    option reset ‘1’
    option enable_vlan ‘1’
    config switch_vlan
    option device ‘eth0’
    option vlan ‘1’
    option ports ‘0 5t’
    config switch_vlan
    option device ‘eth0’
    option vlan ‘2’
    option ports ‘1 2 3 4 5t’

  • 加载usb驱动
    在命令行中,执行 ping www.baidu.com查看op能否联网,只有在联网的情况下,才能下载usb驱动相关模块。
    opkg update
    opkg install kmod-usb-ohci kmod-usb2 kmod-usb-uhci kmod-usb-storage
    opkg install block-mount
    opkg install kmod-fs-ext4
    opkg install e2fsprogs
    opkg install fdisk
    reboot

  • 格式化U盘
    fdisk /dev/sda
    这里将U盘分为3个区,一个用于启动2GB,一个swap 512MB,剩下的都为普通分区存放需要备份的资料

    • 建立启动分区步骤
      n
      p
      1
      回车
      +1G (有些block-mount只支持2G以下分区,所以1G最为保险)
    • 建立swap分区步骤
      n
      p
      2
      回车
      +512M
    • 建立备份分区步骤
      n
      p
      3
      回车
      回车
    • 修改swap分区为swap专用
      t
      2
      82
      回车

    输入w保存
    mkfs.ext4 /dev/sda1
    mkswap /dev/sda2
    mkfs.ext4 /dev/sda3
    swapon /dev/sda2

  • 修改U盘启动相关配置

    /etc/init.d/fstab enable
    rm /etc/config/fstab
    block detect > /etc/config/fstab
    vi /etc/config/fstab
    将/dev/sda1挂载到/overlay,/dev/sda2挂载到swap,/dev/sda3挂载到/mnt/datastorage中(注意,格式化之后,UUID会发生变化)


    config ‘global’
    option anon_swap ‘0’
    option anon_mount ‘0’
    option auto_swap ‘1’
    option auto_mount ‘1’
    option delay_root ‘5’
    option check_fs ‘0’
    config ‘mount’
    option target ‘/overlay’
    option device ‘/dev/sda1’
    option fstype ‘ext4’
    option enabled ‘1’
    config ‘swap’
    option device ‘/dev/sda2’
    option enabled ‘1’
    config ‘mount’
    option target ‘/mnt/storage’
    option device ‘/dev/sda3’
    option fstype ‘ext4’
    option enabled ‘1’

    mount -t ext4 /dev/sda1 /mnt
    mkdir /tmp/roo
    mount -o bind / /tmp/roo
    cp /tmp/roo/* /mnt -a
    umount /tmp/roo
    vi /mnt/etc/banner
    在最后一行添加 Boot From USB

  • 从U盘启动OpenWrt
    reboot

软件安装部署

  • 安装php,nginx,mysql

    vi /etc/config/uhttpd
    将80端口改为81
    /etc/init.d/uhttpd restart

    opkg update
    opkg install php5 php5-mod-gd php5-mod-session php5-mod-pdo php5-mod-pdo-mysql php5-mod-mysql php5-mod-mcrypt php5-mod-mbstring php5-fastcgi php5-cgi php5-mod-xml php5-mod-ctype php5-mod-curl php5-mod-exif php5-mod-ftp php5-mod-iconv php5-mod-json php5-mod-sockets php5-mod-sqlite3 php5-mod-tokenizer php5-mod-zip
    opkg install mysql-server
    opkg install nginx spawn-fcgi zoneinfo-core zoneinfo-asia

    mkdir /mnt/storage/nginxwww
    groupadd www
    useradd -g www www
    chown -R www:www /mnt/storage/nginxwww

  • 配置参数

    • 配置mysql
      修改/etc/my.cnf
      datadir = /mnt/storage/data/mysql/
      tmpdir = /mnt/storage/data/tmp/
      创建数据库文件夹
      mkdir -p /mnt/storage/data
      mkdir -p /mnt/storage/data/mysql
      mkdir -p /mnt/storage/data/tmp
      创建默认的数据库
      /usr/bin/mysql_install_db –force
      启动mysql
      /etc/init.d/mysqld start
      输入如下命令创建mysql的密码
      /usr/bin/mysqladmin -u root password 123456
      登陆数据库
      mysql -u root -p
      连接上mysql之后,创建数据库
      create database testdb;
      查看当前可用数据库
      show databases;
      退出mysql
      quit

      启动mysql
      /etc/init.d/mysqld enable
      /etc/init.d/mysqld start

    • 配置ngix
      修改/etc/nginx/nginx.conf

          user www www;    worker_processes  1;    pid        /var/run/nginx.pid;    error_log  /var/log/nginx_error.log;    events {        use epoll;        worker_connections  1024;    }    http {        include mime.types;        default_type application/octet-stream;        sendfile on;        tcp_nopush on;        #keepalive_timeout 0;        keepalive_timeout 65;        gzip on;        access_log   off;        include       vhost.conf;    }

      修改/etc/nginx/fastcgi_params,解决Nginx文件类型错误解析漏洞

      if ($request_filename ~* (.*)\.php) {    set $php_url $1;}if (!-e $php_url.php) {    return 403;}fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;fastcgi_param  REQUEST_URI        $request_uri;fastcgi_param  DOCUMENT_URI       $document_uri;fastcgi_param  DOCUMENT_ROOT      $document_root;fastcgi_param  SERVER_PROTOCOL    $server_protocol;fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;fastcgi_param  REMOTE_ADDR        $remote_addr;fastcgi_param  REMOTE_PORT        $remote_port;fastcgi_param  SERVER_ADDR        $server_addr;fastcgi_param  SERVER_PORT        $server_port;fastcgi_param  SERVER_NAME        $server_name;# PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param  REDIRECT_STATUS    200;

      添加/etc/nginx/vhost.conf

      server {    listen       80;    server_name  localhost;    root  /mnt/storage/nginxwww;    index  index.html index.htm index.php default.php;    error_page   500 502 503 504  /50x.html;    location = /50x.html {    root html;}location ~* ^.+\.php(\/.*)*$ {    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;    include        fastcgi_params;    }}

      启动nginx
      /etc/init.d/nginx enable
      /etc/init.d/nginx start

    • 配置php
      修改/etc/php.ini

      short_open_tag = on#doc_root = "/mnt/www" extension=ctype.soextension=curl.soextension=gd.soextension=mbstring.soextension=mcrypt.soextension=mysql.soextension=pdo.soextension=pdo_mysql.soextension=session.soextension=sockets.soextension=tokenizer.soextension=xml.so[Date]date.timezone = Asia/Shanghai[MySQL]mysql.default_socket = /var/run/mysqld.sock 
    • 部署spawn-fcgi启动脚本

      spawn-fcgi启动脚本,被这里坑死了,好多地方都说要添加 -a 127.0.0.1也就是指定ip地址,然而不需要,只用指定端口就行了。在开机的时候,没有ip地址可以选择,默认0.0.0.0就行。不然会报无法指定ip地址的错误

      #!/bin/sh /etc/rc.common# Copyright (C) 2009-2012 OpenWrt.orgSTART=97start() {        /usr/bin/spawn-fcgi -p 9000 -C 2 -f /usr/bin/php-cgi}stop() {        killall -9 php-cgi}restart(){        stop        sleep 2        start}

      将这个脚本放入/etc/init.d/spawn-fastcgi中,然后
      chmod 755 /etc/init.d/spawn-fastcgi
      /etc/init.d/spawn-fastcgi enable
      /etc/init.d/spawn-fastcgi start

部署网站

在/mnt/storage/nginxwww中创建index.html或index.php,即可输入路由器ip地址在端口80上访问

到此,整套系统搭建完毕

内容参考:
1.http://www.right.com.cn/forum/thread-89216-1-1.html

0 0
原创粉丝点击