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.1config 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 restartopkg 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-asiamkdir /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.confuser 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.inishort_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
- HG556A Ver.C 刷OpenWrt,搭建nginx,php,mysql服务平台备份(2015.3.19)
- 华为HG556a路由器刷写OpenWrt
- Nginx+PHP平台搭建(Linux+Nginx+Mysql+PHP)
- nginx+fastcgi+c++/php搭建web服务
- nginx+php+mysql服务器搭建
- 搭建 linux+nginx+mysql+php
- nginx mysql php 搭建phabricator
- linux搭建nginx+php+mysql
- nginx+php +mysql环境搭建
- openwrt平台搭建补充
- Ubuntu arm 平台安装nginx php mysql
- php定时检测ftp,mysql,nginx服务
- centos7 开启PHP mysql nginx/apache 服务
- openWRT平台搭建(一)
- Openwrt平台搭建(一)
- Android系统上使用ANMPP搭建Nginx+PHP+MySQL+FTP服务(以天猫魔盒TMB100A为例)搭建网站
- OpenBSD.Nginx.MySQL.PHP环境搭建手册
- CentOS + Nginx + PHP + MySQL 环境搭建
- c++设计模式(抽象工厂模式)
- Erlang中的模块与模式匹配
- 不要62(数位DP)
- C++编程模拟生产者消费者模型
- apache 基本vhost配置
- HG556A Ver.C 刷OpenWrt,搭建nginx,php,mysql服务平台备份(2015.3.19)
- Linux(centos)下SVN服务器的搭建及简单配置和使用
- c++设计模式(状态模式)
- HTTP断点续传实现
- 循环-24. 求给定序列前N项和之二(15)
- MySQL ifnull函数判断字段值为null时使用默认值
- 支付宝异步通知notify_url 与 同步通知return_url的区别
- c语言预处理
- iOS-CoCoa编码规范