码迷,mamicode.com
首页 > 其他好文 > 详细

lnmp 一键安装详解

时间:2016-02-29 12:29:00      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:

1、使用putty或类似的SSH工具登陆VPS或服务器;

登陆后运行:screen -S lnmp

如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装。 screen使用教程

2、下载并安装LNMP一键安装包:

您可以选择使用下载版(推荐国外或者美国VPS使用)或者完整版(推荐国内VPS使用),两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。

安装LNMP执行:wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
如需要安装LNMPA或LAMP,将./install.sh 后面的参数替换为lnmpa或lamp即可。

按上述命令执行后,会出现如下提示:
技术分享
需要设置MySQL的root密码(不输入直接回车将会设置为root),输入后回车进入下一步,如下图所示:
技术分享
这里需要确认是否启用MySQL InnoDB,如果不确定是否启用可以输入 y ,输入 y 表示启用,输入 n 表示不启用。默认为y 启用,输入后回车进入下一步,选择MySQL版本:
技术分享
输入MySQL或MariaDB版本的序号,回车进入下一步,选择PHP版本:
技术分享
输入PHP版本的序号,回车进入下一步,选择是否安装内存优化:
技术分享
可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车。

如果是LNMPA或LAMP的话还需要设置管理员邮箱
技术分享
再选择Apache版本
技术分享

提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。

安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。

3、安装完成
如果显示Nginx: OK,MySQL: OK,PHP: OK
技术分享
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并Install lnmp V1.2 completed! enjoy it.的话,说明已经安装成功。

4、安装失败
技术分享
如果出现类似上图的提示,则表明安装失败,说明没有安装成功!!需要用winscp或其他类似工具,将/root目录下面的lnmp-install.log下载下来,到LNMP支持论坛发帖注明你的系统发行版名称及版本号、32位还是64位等信息,并将lnmp-install.log压缩以附件形式上传到论坛,我们会通过日志查找错误,并给予相应的解决方法。

 

5、添加、删除虚拟主机及伪静态管理

一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问。
LNMP 1.2的网站添加过程和LNMP 1.1的基本类似,但是增加了FTP和数据库的创建。LNMP1.2的防跨目录也由原来在php.ini中设置移至网站根目录下的.user.ini 进行控制
LNMP 1.1及之前的版本采用/root/vhost.sh 进行添加虚拟主机。

LNMP 1.2开始使用lnmp命令进行管理,具体可以参看更新记录
虚拟主机管理基本命令介绍:lnmp vhost {add|list|del}

##添加网站(虚拟主机)##

 执行:lnmp vhost add 出现如下界面:

技术分享
这里要输入要添加网站的域名,我们已添加www.vpser.net域名为例,如上图提示后输入域名 www.vpser.net 回车后提示
技术分享
这里询问是否添加更多域名,输入 y 回车后添加,如不添加输入 n 会有如下提示:
技术分享

如果需要添加更多域名或加上 vpser.net ,输入后回车确认。

(注:带www和不带www的是不同的域名,如需带www和不带的www的域名都访问同一个网站需要同时都绑定)。

下面需要设置网站的目录,网站目录不存在的话会创建目录。也可以输入已经存在的目录或要设置的目录(注意如要输入必须是全路径即以/开头的完整路径!!!)。不输入直接回车的话,采用默认目录:/home/wwwroot/域名
技术分享

伪静态可以使URL更加简洁也利于SEO,如程序支持并且需要设置伪静态的话,如启用输入 y ,不启用输入 n 回车。
技术分享
默认已经有了discuz、discuzx、discuzx2(Discuz X二级目录)、wordpress、wp2(WordPress二级目录)、typecho、typecho2(Typecho二级目录)、sablog、emlog、dabr、phpwind、、dedecms、drupal、ecshop、shopex等常用的Nginx伪静态配置文件,可以直接输入名称进行使用,如果是二级目录则需要对应配置文件里的二级目录的名称。

技术分享
这一步是设置日志,如启用日志输入 y ,不启用输入 n 回车。

再输入要设置的日志的名称,默认目录为:/home/wwwlogs/ 默认文件名为:域名.log 回车确认后,会询问是否添加数据库和数据库用户。

技术分享
如果需要启用输入 y ,不启用输入 n 回车。

需要验证MySQL的root密码
提示Enter database name: 后输入要创建的数据库名称,要创建的数据库用户名会和数据库同名,回车确认。

提示Please enter password for mysql user 数据库名: 后输入要设置的密码,回车确认。

如果安装了FTP服务器会询问是否添加FTP账号
技术分享
如果需要添加输入 y ,不添加输入 n 回车。

提示Enter ftp account name: 后输入要创建的FTP账号名称,回车确认。

提示Enter password for ftp account FTP账号: 后输入要设置的密码,回车确认。

提示 Press any key to start create virtul host... 后,回车确认便会开始创建虚拟主机。

添加成功会提示添加的域名、目录、伪静态、日志、数据库、FTP等相关信息,如下图:
技术分享

##伪静态管理##

LNMPA或LAMP可以直接使用网站根目录下放.htaccess 来设置伪静态规则(具体规则可以去程序官网网站找google百度),但是在LNMP下,需要使用Nginx伪静态规则。
伪静态可以随时添加或删除,如果添加完虚拟主机后忘记或没有添加伪静态,可以通过修改配置文件来添加伪静态。
虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

伪静态规则文件需要放在/usr/local/nginx/conf/ 下面。
编辑虚拟主机配置文件,可以使用vinanowinscp,后2个工具对新手来说简单些。

例如前面我们添加的虚拟主机,打开后前半部分配置会显示如下:
技术分享
在root /home/wwwroot/www.vpser.net;这一行下面添加:
include wordpress.conf;
上面的wordpress.conf为伪静态文件,如需要其他伪静态文件自己创建个并上传到/usr/local/nginx/conf/ 下面并include 伪静态.conf; 加完保存,执行:/etc/init.d/nginx restart 重启生效,如果报错可能是添加有误或伪静态规则有误。

##上传网站程序##

如果已经安装FTP服务器可以直接使用ftp客户端通过你的FTP信息登录后上传网站或sftp等软件上传网站,设置好相关权限开始安装即可。
上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。
为了安全可以将一些不需要PHP运行的上传文件之类的目录去掉执行权限,参考:http://www.vpser.net/security/lnmp-remove-nginx-php-execute.html

##列出网站(虚拟主机)##

执行:lnmp vhost list
技术分享

##删除网站(虚拟主机)##

执行:lnmp vhost del
技术分享

删除网站会先列出当前已有虚拟主机,按提示输入要删除的虚拟主机域名 回车确认。

这里只是删除虚拟主机配置文件,网站文件并不会删除需要自己删除。
LNMP 1.2下需要执行:chattr -i /网站目录/.user.ini 后才能删除网站目录。

当执行chown或chmod对网站目录属主属组或权限进行操作时可能会提示chown: changing ownership of `/home/wwwroot/default/.user.ini‘: Operation not permitted,不需要理会,如果有强迫症可以参考前面先进行chattr -i的操作。

##默认网站(虚拟主机)##

LNMP默认网站配置文件:/usr/local/nginx/conf/nginx.conf
LNMPA默认网站配置文件:/usr/local/nginx/conf/nginx.conf 和 /usr/local/apache/conf/extra/httpd-vhosts.conf
LAMP默认网站配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf

##其他事项##

LNMP 1.1及之前的版本使用php.ini里面,open_basedir设置

LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改open_basedir的值来设置限制目录的访问。
.user.ini文件无法直接修改,而且是隐藏文件可能在winscp下可能无法看到,建议使用vim编辑器nano编辑器进行修改。
如要修或删除需要先执行:chattr -i /网站目录/.user.ini
修改完成后再执行:chattr +i /网站目录/.user.ini
.user.ini不需要重启一般5分钟左右生效。
如果要更改网站目录必须要按上述方法修改防跨目录的设置,否则肯定报错!!

LNMPA或LAMP 1.2上的防跨目录的设置使用的对应apache虚拟主机配置文件里的php_admin_value open_basedir参数进行设置。如果不需要设置可以在前面加 # 进行注释,或自行修改目录的限制。
重启apache生效。

 

6、LNMP相关软件目录及文件位置

LNMP相关软件安装目录
Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
MariaDB 目录 : /usr/local/mariadb/
MariaDB数据库所在目录:/usr/local/mariadb/var/
PHP目录 : /usr/local/php/
PHPMyAdmin目录 : 0.9版本为/home/wwwroot/phpmyadmin/ 1.0及以后版本为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版本为 /home/wwwroot/ 1.0及以后版本为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/
Redis 目录:/usr/local/redis/

LNMP相关配置文件位置
Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf 1.2及之前版本为/usr/local/proftpd/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf
Redis 配置文件:/usr/local/redis/etc/redis.conf

LNMPA相关目录文件位置
Apache目录:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/
虚拟主机配置文件名称:/usr/local/apache/conf/vhost/域名.conf



其他:

可选1,执行:./php5.2.17.sh 可安装一个不与LNMP冲突的PHP 5.2.17单独存在,使用时需要将nginx虚拟主机配置文件里的 php-cgi.sock 修改为 php-cgi52.sock。
可选2,执行:./reset_mysql_root_password.sh 可重置MySQL/MariaDB的root密码。
可选3,执行:./check502.sh 可检测php-fpm是否挂掉,502报错时重启,配合crontab使用。
可选4,执行:./cut_nginx_logs.sh 日志切割脚本。
可选5,执行:./remove_disable_function.sh 运行此脚本可删掉禁用函数。

 

7、LNMP状态管理命令

LNMP 1.2状态管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 1.2各个程序状态管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}

 

8、LNMP 1.2 备份/denyhosts/fail2ban/Nginx日志切割/MySQL root密码重置工具使用教程

LNMP1.2安装包目录下有一个tools目录,放有常用的备份脚本 backup.sh,nginx日志切割脚本 cut_nginx_logs.sh,SSH防护安装脚本denyhosts.sh 和 fail2ban.sh,MySQL/MariaDB root密码重装工具 reset_mysql_root_password.sh及PHP函数辅助删除工具 remove_disable_function.sh。 这些工具可以在使用LNMP提供一些很有用的安全防护设置、简化一些安装流程,更专注于做站。

备份脚本 backup.sh
备份脚本需要修改一下几个参数,需要配合crontab使用。
Backup_Home="/home/backup/" #####备份文件存放目录
MySQL_Dump="/usr/local/mysql/bin/mysqldump" ####mysqldump路径,如果是mariadb替换/usr/local/mysql为/usr/local/mariadb
######~Set Directory you want to backup~######
Backup_Dir=("/home/wwwroot/vpser.net" "/home/wwwroot/lnmp.org") ##########要备份的目录,目录用双引号括起来,多个目录空格隔开,如前面的例子

######~Set MySQL Database you want to backup~######
Backup_Database=("lnmp" "vpser") ########要备份的数据库,前面有例子

######~Set MySQL UserName and password~######
MYSQL_UserName=root ####不用说了,MySQL root账号
MYSQL_PassWord=yourrootpassword ##### MySQL root密码

######~Enable Ftp Backup~######
Enable_FTP=0 #####是否启用ftp备份,0 启用,非0 不启用
# 0: enable; 1: disable
######~Set FTP Information~###### ftp账号信息
FTP_Host=1.2.3.4
FTP_Username=vpser.net
FTP_Password=yourftppassword
FTP_Dir="backup" #########ftp服务器上存放备份的目录

#Values Setting END!

nginx日志切割脚本 cut_nginx_logs.sh
使用方法:http://www.vpser.net/manage/cut-nginx-log-files.html

Denyhosts SSH防护安装脚本 denyhosts.sh
denyhosts安装脚本,保证SSH安全,自动屏蔽破解SSH的IP。安装方法直接运行 ./denyhosts.sh 回车自动安装,不需要干预,如想了解该程序的相关介绍可以看一下:http://www.vpser.net/security/denyhosts.html

denyhosts_removeip.sh Denyhosts删除被屏蔽IP较麻烦,可以使用这个工具来删除被denyhosts屏蔽的ip的工具 ./denyhosts_removeip.sh 要删除的ip,不加ip的话会提示用法

fail2ban SSH防护安装脚本 fail2ban.sh
fail2ban安装脚本,保证SSH安全,自动屏蔽破解SSH的IP。安装方法直接运行 ./fail2ban.sh 回车自动安装。

PHP禁用函数删除工具 remove_disable_function.sh
运行 ./remove_disable_function.sh
作用:http://bbs.vpser.net/thread-7649-1-1.html 运行会有具体用法

MySQL/MariaDB 重置root密码的工具 remove_disable_function.sh
MySQL/MariaDB 重置root密码的工具,直接运行 ./reset_mysql_root_password.sh

PHP-FPM 502检查重启工具 check502.sh
该工具一般需要配合crontab进行使用,如没5分钟检测是否报502错误,并自动重启PHP-FPM,*/5 * * * * 文件所在全路径/check502.sh,crontab教程

 

9、LNMP 1.2升级Nginx、MySQL/MariaDB、PHP教程

在LNMP目前LNMP v1.2中已经包含了Nginx、MySQL/MariaDB、PHP的升级脚本,可以帮助搭建对环境中的程序进行升级。(注意:以下操作均需要在lnmp压缩包解压后的目录里运行)

一、Nginx升级脚本
执行:./upgrade.sh nginx 按提示输入版本号后回车(访问 http://nginx.org/en/download.html 可查找nginx的最新版本号和以往旧版本号。如:1.6.0 ),再次回车确认即可开始升级Nginx。Nginx升级为平滑升级,升级过程不影响nginx的运行。
另外如需添加其他模块可以编辑lnmp 1.2包里面的include/upgrade_nginx.sh文件
在Nginx_Modules_Arguments="" 参数的双引号里添加需要的其他模块,多个模块参数空格隔开,然后再运行升级即可。

二、MySQL升级脚本
虽然脚本会备份数据,但依然建议先自行备份!
执行:./upgrade.sh mysql 需要先输入MySQL root密码进行验证,验证不通过将无法进行升级,验证通过后可以到http://dev.mysql.com/downloads/mysql/ 获取MySQL的版本号,输入后回车确认,如要启用Innodb,输入y,不确定的话也可以输入输入y 回车确认,再次回车确认即可开始升级。会在/root 目录下生成mysql_upgrade日期.log的日志文件,供出错时排查。
如升级失败可将/usr/local/oldmysql日期的目录重命名为mysql,并将/etc/下的my.conf.bak.日期的配置文件重命名为my.cnf和/etc/init.d/下的mysql.bak.日期重命名为mysql即可恢复原mysql。(下面MySQL升级至MariaDB及升级MariaDB一样)

三、MySQL升级至MariaDB脚本
MariaDB是MySQL的一个分支,主要由开源社区在维护。MariaDB兼容MySQL,由MySQL创始人主导开发。依然建议先自行备份!
执行:./upgrade.sh m2m 需要先输入MySQL root密码进行验证,验证不通过将无法进行升级,验证通过后可以到https://downloads.mariadb.org/ 获取MariaDB的版本号,输入后回车确认,如要启用Innodb,输入y,不确定的话也可以输入输入y 回车确认,再次回车确认即可开始升级。会在/root 目录下生产mysql2mariadb_upgrade日期.log的日志文件,供出错时排查。

四、MariaDB升级脚本
依然建议先自行备份!
执行:./upgrade.sh mariadb 需要先输入MariaDB root密码进行验证,验证不通过将无法进行升级,验证通过后可以到https://downloads.mariadb.org/ 获取MariaDB的版本号,输入后回车确认,如要启用Innodb,输入y,不确定的话也可以输入输入y 回车确认,再次回车确认即可开始升级。会在/root 目录下生产mariadb_upgrade日期.log的日志文件,供出错时排查。
如升级失败可将/usr/local/oldmariadb日期的目录重命名为mariadb,并将/etc/下的my.conf.bak.日期的配置文件重命名为my.cnf和/etc/init.d/下的mariadb.bak.日期重命名为mariadb即可恢复原mariadb。
五、LNMP PHP升级脚本
升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息。
执行:./upgrade.sh php 到http://www.php.net/downloads.php 获取版本号,输入版本号,如5.3.28 回车,再次回车确认即可开始升级。

六、LNMPA/LAMP PHP升级脚本
升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息。
执行:./upgrade.sh phpa 到http://www.php.net/downloads.php 获取版本号,输入版本号,如5.3.28 回车,再次回车确认即可开始升级。

  

10、LNMP 1.2缓存加速类扩展(xcache/Redis/memcached/eAccelerator)、imageMagick、ionCube安装教程

这些扩展和组件均采用./addons.sh进行安装。
基本用法说明:./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|opcache|redis|imagemagick|ioncube}

1、eAccelerator

eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install eaccelerator 运行后有如下提示:
技术分享
eaccelerator 0.9.5.3 支持PHP 5.2,如需此版本,输入 1 回车。
eaccelerator 0.9.6.1 支持PHP 5.2、5.3,如需此版本,输入 2 回车。
eaccelerator 1.0-dev 支持PHP 5.2、5.3、5.4,如需此版本输入 3 回车。

提示“Press any key to install...or Press Ctrl+c to cancel” 后回车确认,脚本就会自动安装eaccelerator。

卸载
执行:./addons.sh uninstall eaccelerator

2、xcache

XCache 是一个国人开发的又快又稳定的PHP opcode缓存器。经过良好的测试并在大流量/高负载的生产机器上稳定运行,支持所有现行PHP分支的最新发布版本。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install xcache 运行后有如下提示:
技术分享
需要设置xcache管理页面admin用户的密码。

出现“Press any key to install...or Press Ctrl+c to cancel“,再次回车确认即可开始安装。

卸载
执行:./addons.sh uninstall xcache

3、memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install memcached
技术分享
可以根据自己的需求选择php-memcache或php-memcached扩展,目前discuz x使用的是前者,功能上php-memcached更强大一些。
输入对应的序号,回车,再次确认回车开始安装。

卸载
执行:./addons.sh uninstall memcached

4、imageMagick

ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过100种图象格式。可用来替换GD库。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install imagemagick
回车确认后就会自动安装imageMagick。

设置:比如在DiscuzX里设置时路径需要填写:/usr/local/imagemagick/bin/ 并且禁用函数里的exec要去掉才可以正常使用。

卸载
执行:./addons.sh uninstall imagemagick

5、ionCube

此脚本是用来安装ionCube loader的,ionCube loader是用来解密ionCube加密的PHP脚本,如whmcs就采用ionCube加密。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install ionCube
回车确认后就会自动安装ionCube loader。

卸载
执行:./addons.sh uninstall ionCube

6、Redis

此脚本是用来安装Redis,Redis是一个开源、支持网络、基于内存、键值对存储数据库。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install redis
运行后有如下提示:
技术分享,安装稳定版Redis 2.8.8 输入:s 回车;安装测试版Redis 3.0.0输入:b 回车;安装旧版Redis 2.6.17输入:o 回车。

7、opcache

此脚本是用来安装opcache的,是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。LNMP 1.2下安装的PHP 5.5或更高版本的PHP不需要额外安装OPcache,默认已经安装上。

 

安装
进入lnmp解压后的目录,执行:./addons.sh install opcache
Opcache和eAccelerator是冲突的,脚本会卸载eAccelerator后再安装Opcache,回车确认后就会自动安装opcache。

卸载
执行:./addons.sh uninstall opcache

 

 

下载地址:

LNMP 1.2

下载版:http://soft.vpser.net/lnmp/lnmp1.2.tar.gz  (107KB)
MD5:4be72b49b67605477871d3f9676ca52f
完整版:http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz  (312MB)
MD5:b3d3d9e40395f4eb5e525adfaabfb675
国内下载地址:
https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz 下载时wget需要加--no-check-certificate参数
最后更新: 2015年7月24日17:34 GMT+8

 

百度网盘 :lnmp1.2-full.tar.gz (312MB) : http://pan.baidu.com/s/1jHhTVDW    

               lnmp1.2.tar.gz  (107KB)   :    http://pan.baidu.com/s/1eRgGsRw 

更多下载地址及替换下载源教程

lnmp 一键安装详解

标签:

原文地址:http://www.cnblogs.com/sunbeidan/p/5226725.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!