lnmp

lnmp
lamp->lnmp
nginx
survey.netcraft.net
查看各大网站使用的web服务器,使用下面的命令
curl -I www.sina.com
结论:现在大型网站几乎统一都使用nginx或nginx做二次开发的版本(如tengine,OpenResty等)
nginx相对于apache的优势?
资源占用少
支持大并发
-------------------------------------------------------------------------------------------------
搭建lnmp的方法
1,直接rpm版,安装方法大概为 yum install nginx* mysql* php*
2,lnmp.org一键安装包
3,比如买阿里云主机,可以在镜像市场选择一个合适的lnmp环境
4,自定义lnmp
linux+nginx+mysql+php(fastcgi)
lnmp搭建过程
(nginx,mysql,php这三个软件用新的编译方法编译顺序无所谓)
编译lnmp所有的软件包在
笔记目录/program/lnmp_soft/
Discuz_X3.2_SC_UTF8.zip mysql-5.6.26.tar.gz
ImageMagick-6.7.8-9.tar.gz nginx-1.6.2.tar.gz
imagick-3.1.2.tgz nginx-1.8.0.tar.gz
libevent-1.4.11-stable.tar.gz ngx_cache_purge-2.3.tar.gz
libiconv-1.13.tar.gz pcre-7.9.tar.gz
libmcrypt-2.5.8.tar.bz2 php-5.6.12.tar.bz2
mcrypt-2.6.6.tar.gz phpMyAdmin-4.4.11-all-languages.zip
memcache-2.2.7.tgz phpredis-2.2.7.tar.gz
memcached-1.4.22.tar.gz redis-3.0.7.tar.gz
mhash-0.9.9.9.tar.bz2 webbench-1.5.tar.gz
编译安装前准备,先确认编译所需要的依赖软件包已经安装
# yum groupinstall "Desktop Platform Development" -y
# yum groupinstall "Development tools" -y
# yum install curl-devel ncurses-devel net-snmp-* *icu* libxml2-devel pcre-devel -y
第一大步:
编译mysql mysql-5.6.26.tar.gz
# rm /mysqldata56 -rf
# rm /usr/local/mysql -rf
# rm /usr/src/mysql-*/ -rf
--删除以前编译过的,重新编译
# yum install cmake
# tar xvf mysql-5.6.26.tar.gz -C /usr/src/
# cd /usr/src/mysql-5.6.26/
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=gbk,gb2312 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
# make ;make install
安装后
1,手动编写my.cnf配置文件
# mkdir /usr/local/mysql/etc
# vim /usr/local/mysql/etc/my.cnf --新建此文件,并写上下面一段
[mysqld]
port=3307
datadir=/mysqldata56
pid-file=/mysqldata56/mysql56.pid
socket=/mysqldata56/mysql56.socket
log-error=/mysqldata56/mysql56-err.log
user=mysql
[client]
socket=/mysqldata56/mysql56.socket
2:创建相关目录,并修改权限
# useradd -u 27 mysql
# mkdir /mysqldata56
# chown mysql.mysql /mysqldata56 /usr/local/mysql/ -R
3:初始化数据库
# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/usr/local/mysql/etc/my.cnf --basedir=/usr/local/mysql/
4:启动服务
# /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/etc/my.cnf &
5:登录
# /usr/local/mysql/bin/mysql
第二大步:编译安装php
编译之前,确认把以前编译过的给删除
# rm -rf /usr/src/lnmp
# rm -rf /usr/local/php
1,在安装php之前,先安装php扩展包,这些包是rpm里没有自带,所以这里还是编译一下
libiconv-1.13.tar.gz ----语言编码转换
# mkdir /usr/src/lnmp/ ----我这里自己专门建立一个目录存放lnmp项目的所有源码
# tar xvf libiconv-1.13.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/libiconv-1.13/
# ./configure ;make ;make install
# echo /usr/local/lib > /etc/ld.so.conf.d/lnmp.conf
# /sbin/ldconfig
# tar xf php-5.6.12.tar.bz2 -C /usr/src/lnmp/
# cd /usr/src/lnmp/php-5.6.12/
# ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-mysqlnd --with-pcre-dir --enable-opcache
# make ZEND_EXTRA_LIBS='-liconv'
# make install
--上面的编译参数要注意的几点:
一,php安装路径这一次不是默认的/usr/local,我换成了/usr/local/php,你不换也是可以的,我这里只是不想去覆盖以前的lamp编译到/usr/local下的php
二,with-pcre-dir是指定pcre库的路径,因为我前面使用的是编译版本的pcre,路径装到/usr/local/下
三,with-pdo-mysql是指定php与mysql的连接,以前pdo-mysql是得去php官网单独下载安装的,较新的php版本都自带了,用这个参数指定mysql的路径就可以了
四,with-config-file-path这是指定php.ini配置文件的路径,没有使用默认的路径,这一步也是可选的,无论你指定到哪,后面的过程要使用php.ini,路径与你现在编译的对应好就行
五:--enable-fpm参数是支持php的fastcgi模式
六:关于--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
三个参数的说明
传统的安装php的方式中,我们在编译PHP时,一般需要指定以下几项:
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
这实际上就是使用了mysql官方自带的libmysql驱动, 这是比较老的驱动, PHP 5.3开始已经不建议使用它了, 而建议使用mysqlnd
因为mysqlnd内置于PHP源代码,故你在编译安装php时就不需要预先安装mysql server也可以提供mysql client API (mysql_connect, pdo , mysqli),这样就可以实现不用安装mysql,也可以编译php(上次讲lamp时讲的先装mysql,再编php,最后不用mysql,而用远程的另一个mysql的做法为老的做法)
把上面的三个参数换为--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 就可以了
2,php成功安装后,继续安装php第三方模块
安装缓存模块memcache
# tar xvf memcache-2.2.7.tgz -C /usr/src/lnmp/
# cd /usr/src/lnmp/memcache-2.2.7/
# /usr/local/php/bin/phpize ----用phpize生成编译的configure文件。注意使用的路径要为编译的/usr/local/php的路径;
phpize prepare a PHP extension for compiling
如果你不用phpize,你的这个目录里根本就没有configure这个文件
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make ;make install
注意安装信息
Libraries have been installed in:
/usr/src/lnmp/memcache-2.2.7/modules
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
# echo /usr/src/lnmp/memcache-2.2.7/modules/ >> /etc/ld.so.conf.d/lnmp.conf
# /sbin/ldconfig
--------------------------------------------------
安装绘图引擎模块Imagemagick,与GD类似
# tar xf ImageMagick-6.7.8-9.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/ImageMagick-6.7.8-9/
# ./configure
# make;make install
# /sbin/ldconfig
-----------------------------------------------------------------------
安装imagick(连接php与imagemagick的通道)
# tar xf imagick-3.1.2.tgz -C /usr/src/lnmp/
# cd /usr/src/lnmp/imagick-3.1.2/
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make;make install
注意安装的库路径的模块路径信息
Libraries have been installed in:
/usr/src/lnmp/imagick-3.1.2/modules
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
# echo /usr/src/lnmp/imagick-3.1.2/modules >> /etc/ld.so.conf.d/lnmp.conf
# /sbin/ldconfig
到此,与nginx之前要编译的所有软件及扩展模块完成
验证此目录里有三个安装模块,表示安装OK
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
imagick.so memcache.so opcache.so opcache.a
-------------------------------------------------------------------
3,拷贝并配置php配置文件,加上前面所编译的模块支持
# cp /usr/src/lnmp/php-5.6.12/php.ini-production /usr/local/php/etc/php.ini
--拷配置文件,拷的路径是根据编译时的--sysconfigdir参数决定的(因为,我指定安装路径为/usr/local/php,所以就要拷到/usr/local/php/etc/)
配置php.ini文件加上前面安装的扩展的模块支持
# vim /usr/local/php/etc/php.ini
----直接在最后加上下面一段
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/"
extension = "memcache.so"
extension = "imagick.so"
[opcache]
zend_extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/opcache.so"
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.optimization_level=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.save_comments=0
关于上面的几个参数的说明
opcache.memory_consumption=128 --共享内存大小, 这个根据你们的需求可调
opcache.interned_strings_buffer=8 --interned string的内存大小, 也可调
opcache.max_accelerated_files=4000 --最大缓存的文件数目
opcache.revalidate_freq=60 --60s检查一次文件更新
opcache.fast_shutdown=1 --打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.save_comments=0 --不保存文件或函数的注释
------------------------------------------------------------------------------------------------------------------------------------------------
第三大步:编译安装nginx
# useradd -r -d /dev/null -s /sbin/nologin nginx ----我这里建立一个用户来跑nginx,不做也可以,它默认是用daemon用户来跑
# id nginx ----nginx的uid,gid无所谓是多少
uid=493(nginx) gid=487(nginx) groups=487(nginx)
# tar xf nginx-1.8.0.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/nginx-1.8.0/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module
--with-http_stub_status_module模块记得要加,后面做查看nginx状态需要这个模块
# make ;make install
# ls /usr/local/nginx --看到这些文件,则表示nginx安装成功
conf html logs sbin
========================================================================
第四大步:配置优化php的fastcgi配置文件,并启动fastcgi模式的php
配置php-fpm配置文件 (配置fastcgi)
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
----先改名,把.default去掉
要在些配置文件配置的选项有:
监听的IP,端口或者socket
初始化的进程数
执行身份
错误是否显示
打开的资源限制等
# vim /usr/local/php/etc/php-fpm.conf
164 listen = /var/run/fastcgi/fastcgi.socket
534 php_flag[display_errors] = on
149 user = nginx
150 group = nginx
235 pm.max_children = 64
240 pm.start_servers = 20
245 pm.min_spare_servers = 5
250 pm.max_spare_servers = 35
261 pm.max_requests = 3000
458 rlimit_files = 65535
175 listen.owner = nginx
176 listen.group = nginx
177 listen.mode = 0660 ----这三行记得把前面的;去掉(有;是注释)
----这三行是控制启动fastcgi之后的socket文件的权限(特别是新版本的php,修复了以前socket访问权限的bug,所以这里指好权限,那么nginx才能有权限读取socket来访问fastcgi)
pm = dynamic #对于专用服务器,pm可以设置为static。
如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:
pm.max_children #,子进程最大数
pm.start_servers #,启动时的进程数
pm.min_spare_servers #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
# mkdir /var/run/fastcgi
# chown nginx.nginx /var/run/fastcgi/
启动php fastcgi进程
# /usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf
----启动fastcgi,直接这样启动,5.3.3版本之前的php需要加start参数来启动
# ls /var/run/fastcgi/ ----启动过后,就可以在/var/run/fastcgi/目录下找到socket文件
fastcgi.socket
# ps -ef |grep fpm --也可以用此命令来查看php的factcgi的进程,有20个进程,因为我在前面配置pm.start_servers = 20
----如果要关闭fpm,可以直接pkill fpm就可以了
----------------------------------------------------------------------------
nginx的配置文件的一个基本结构如下:
常见基本配置(如跑服务进程的用户,启动进程数,log,pid等)
events {
事件(优化并发数,网络IO模型选择)
}
http {
针对所有server的全局配置
server {
虚拟主机一
}
server {
虚拟主机二
}
}
-----------------------------------------------------------------------------
第五大步:
配置nginx.conf主配置文件
# vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; ----运行用户和组
worker_processes 4; ----启动ngnix的服务的工作进程数
error_log logs/error.log info; ----错误日志以及日志等级
pid logs/nginx.pid; ----pid文件
events {
use epoll; ----epoll工作模式
worker_connections 65535; ----每个进程允许打开的并发连接数
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
server {
listen 8000; ----监听的端口
server_name 10.1.1.9; ----域名或者IP
charset utf8; ----字符集
root /lnmp/web; ----家目录
index index.php index.html index.htm; ----主页文件
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .*\.php$ {
fastcgi_pass unix:/var/run/fastcgi/fastcgi.socket;--对应php-fpm.conf里的设置
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; --把/scripts改成$document_root,表示家目录下的.php文件也当会以php来执行
include fastcgi_params;
}
}
}
# mkdir /lnmp/web -p ----把定义的网站家目录也创建出来
# ulimit -SHn 65535 ----把linux系统的文件描述符限制临时调大
启动nginx
# /usr/local/nginx/sbin/nginx
reload的方法
# /usr/local/nginx/sbin/nginx -s reload
关闭的方法
# /usr/local/nginx/sbin/nginx -s stop
最基本的验证:
# vim /lnmp/web/index.html ----建立一个主页,去访问它
# vim /lnmp/web/test.php --和以前lamp时一样,在家目录下建立一个php测试页面来测试
<?php
phpinfo();
?>
#################################################################
centos7.3平台下rpm版lnmp的搭建
第一步:准备
1,主机名
2,关闭firewalld,selinux
3,关闭NetworkManager,并配置静态ip
4,配置本地yum,epel源,163源
5,时间同步
第二步:安装lnmp相关的rpm包
# yum install httpd* mariadb mariadb-server php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash nginx php-fpm php-pecl-zendopcache
第三步:启动mariadb,并登录验证
# systemctl start mariadb.service
# systemctl status mariadb.service
# systemctl enable mariadb.service
# mysql ----登录确认能使用
第四步:确认php安装模块,并按需求进行模块的增加或删除,对php配置文件进行优化(可选)
# php -m ----查看已经安装的php模块,如果还有需要的模块没有安装,则使用yum install php-xxx去安装相应的模块
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
json
ldap
libxml
mbstring
mhash
mysql
mysqli
odbc
openssl
pcntl
pcre
PDO
pdo_mysql
PDO_ODBC
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
# ls /usr/lib64/php/modules/ ----所有安装的模块路么都在此目录下
bcmath.so json.so odbc.so pdo_sqlite.so sysvsem.so xmlwriter.so
curl.so ldap.so opcache.so phar.so sysvshm.so xsl.so
dom.so mbstring.so pdo_mysql.so posix.so wddx.so zip.so
fileinfo.so mysqli.so pdo_odbc.so sqlite3.so xmlreader.so
gd.so mysql.so pdo.so sysvmsg.so xmlrpc.so
/etc/php.ini ----php主配置文件,如果要进行相应的优化修改或者是以源码编译的方式编出的模块需要加到php里的都需要修改此配置文件
第五步:
优化php-fpm,并启动(php-fpm为php的fastcgi模式,简单来说就是php的服务模式)
# vim /etc/php-fpm.d/www.conf ----打开php-fpm主配置文件并进行优化(以下优化在生产环境视具体情况而定)
12 listen = /var/run/fastcgi/fastcgi.socket ----原来是监听127.0.0.1:9000也是可以的,我这里换成socket来做(本机连接可以使用socket或tcp/ip协议方式,远程连接只能使用tcp/ip协议方式)
218 php_flag[display_errors] = on ----打开php错误显示功能
39 user = nginx ----用户与组和跑nginx服务的用户一致,避免权限问题
41 group = nginx
31 listen.owner = nginx
32 listen.group = nginx ----socket文件的权限设置。用户与组和跑nginx服务的用户一致,避免权限问题(如果前面使用的是tcp/ip的方式,这里就注释就好)
33 listen.mode = 0666
60 pm = dynamic ----对于专用服务器,pm可以设置为static。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则可以动态调整下面几个参数
70 pm.max_children = 64   ----子进程最大数,我这里只是参考值(看系统资源决定,视实际环境测试后调整,下几个参数也一样)
75 pm.start_servers = 20  ----启动时默认启动的进程数
80 pm.min_spare_servers = 5 ----保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
85 pm.max_spare_servers = 35 ----保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
160 rlimit_files = 65535 ----打开的文件描述符数量,不能大于系统的限制(系统可以使用ulimit命令查看和设置)
建立fastcgi模式的socket产生的目录,与上面的配置对应
# mkdir /var/run/fastcgi
# chown nginx.nginx /var/run/fastcgi/
设置系统打开的文件描述符数量,与上面的配置对应
# ulimit -n
1024
# ulimit -SHn 65535
# echo "ulimit -SHn 65535" >> /etc/rc.local
启动php-fpm服务
# systemctl start php-fpm.service
# systemctl status php-fpm.service
# systemctl enable php-fpm.service
第六步:
配置nginx(nginx参数实在太多,这里先简要配置)
我这里的配置结果如下
# cat /etc/nginx/nginx.conf |grep -v '#'
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 172.16.2.10;
root /usr/share/nginx/html;
index index.php index.html;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/fastcgi/fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
启动nginx服务
# systemctl start nginx.service
# systemctl status nginx.service
# systemctl enable nginx.service
第七步:测试nginx是否工作正常,是否能支持php
在nginx家目录里加上php测试页
# vim /usr/share/nginx/html/test.php
<?php
phpinfo();
?>
找一个有firefox的客户端分别访问下面页面进行测试
第八步:
安装discuz论坛并测试
1,解压discuz到nginx家目录
# unzip /Discuz_X3.2_SC_UTF8.zip -d /usr/share/nginx/html/
# cd /usr/share/nginx/html/
# mv upload/* .
# rm upload/ -rf
2,
然后使用firefox用下面的路径来安装
3,
环境检查这一步,有些目录和文件权限需要修改(下面直接使用简单方式全改成nginx的owner和group)
# chown nginx.nginx /usr/share/nginx/html/ -R
4,
mariadb数据库授权
# mysql
MariaDB [(none)]> create database lnmp_discuz; ----创建一个库,用于存放将要安装的discuz论坛的表
MariaDB [(none)]> grant all on lnmp_discuz.* to 'lnmpdiscuz'@'localhost' identified by '123'; ----授权一个用户,用于discuz论坛程序连接mysql
MariaDB [(none)]> flush privileges;
########################################################
安装Discuz论坛
Discuz_X3.2_SC_UTF8.zip
# unzip Discuz_X3.2_SC_UTF8.zip -d /lnmp/web/
# cd /lnmp/web
# mv upload/* .
# rm upload/ -rf
然后使用firefox用下面的路径来安装
环境检查这一步,有些目录和文件权限需要修改
# chown nginx.nginx /lnmp/web/ -R
数据库授权
# /usr/local/mysql/bin/mysql
mysql> create database lnmp_discuz; ----创建一个库,用于存放将要安装的discuz论坛的表
mysql> grant all on lnmp_discuz.* to 'lnmpdiscuz'@'localhost' identified by '123'; ----授权一个用户,用于discuz论坛程序连接mysql
mysql> flush privileges;
安装会出现下面的报错
数据库连接错误
No such file or directory
解决方法1:
把mysql的配置socket路径改成/tmp/mysql.sock
# vim /usr/local/mysql/etc/my.cnf
[mysqld]
port=3307
datadir=/mysqldata56
pid-file=/mysqldata56/mysql56.pid
socket=/tmp/mysql.sock
log-error=/mysqldata56/mysql56-err.log
[client]
socket=/tmp/mysql.sock
改完后,重启mysql
解决方法2:
如果不想改,可以把原来的socket做一个软链接到/tmp/mysql.sock
# ln -s /mysqldata56/mysql56.socket /tmp/mysql.sock
解决方法3:
不使用socket连接,直接在安装界面填mysql的host为127.0.0.1:3307指定以tcp/ip协议的3307端口来连接
posted @ 2018-06-19 21:54  Sky-wings  阅读(307)  评论(0编辑  收藏  举报