CentOS7從零零零開始配置python+django+nignx+mysql+supervisor(第二部分)

(一)、安裝python3.6.6

獲取puthon安裝包的方式兩種建瘫,第一種是在linux中使用wget命令下在崭捍,另一種是在window主機(jī)當(dāng)中事前下載好,然后使用WinSCP工具上傳到指定的文件夾然后在進(jìn)行安裝啰脚。

首先在喜歡的目錄中創(chuàng)建一個(gè)文件夾用于放置下載的python安裝包殷蛇,然后使用cd命令進(jìn)入該目錄之下。

第一步:解壓:

tar -zxvf Python-3.6.6.tgz

第二步:編譯:

進(jìn)入加壓后的文件夾 Python-3.6.6,然后執(zhí)行下面的命令:

yum install -y lib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-deve (安裝編譯環(huán)境)

./configure prefix=/usr/local/python3

make && make install

使用prefix指定安裝的目錄橄浓,這里可以自行選擇粒梦,不過(guò)一般都是在user/local之下

如果出現(xiàn)下面的錯(cuò)誤,說(shuō)明你的系統(tǒng)中還沒有安裝gcc編譯器荸实,

configure: error: in `/home/asandemo/software/Python-3.6.6':

configure: error: no acceptable C compiler found in $PATH

此時(shí)使用yum安裝gcc編譯器即可:

yum install gcc* -y

之后在執(zhí)行上面的編譯即可匀们。

安裝好之后執(zhí)行

python -V

顯示的版本還是原來(lái)的版本,是我們沒有安裝成功嗎准给?其實(shí)不是的昼蛀,只是/use/bin中的python沒有被我們新安裝的python替換而已,類似于window中的軟件沒有設(shè)置path圆存,系統(tǒng)還不知道如何去執(zhí)行叼旋,從哪里執(zhí)行python。在linux系統(tǒng)中沦辙,解決方法就是做個(gè)軟鏈即可:

第一步:將原來(lái)的python備份

mv /usr/bin/python /usr/bin/python.back

第二部:做軟鏈

ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

ln -s /usr/local/python/bin/pip3? /usr/bin/pip

這里前面的是你選擇安裝python的路徑夫植,此外,為了使用新版python的pip油讯,我們也需要將pip3連接到舊版的pip上详民,當(dāng)然,你也可將舊版的pip執(zhí)行保存陌兑。

現(xiàn)在運(yùn)行python -V, 發(fā)現(xiàn)已經(jīng)是新版了沈跨。

但是如果此時(shí)使用yum安裝軟件,會(huì)發(fā)現(xiàn)報(bào)錯(cuò)兔综,因?yàn)閜ython的版本已經(jīng)改變饿凛,所以我們要對(duì)yum進(jìn)行一番基操。

vi /usr/bin/yum

把 #!/usr/bin/python 修改為 #!/usr/bin/python2

vi/usr/libexec/urlgrabber-ext-down

把 #!/usr/bin/python 修改為 #!/usr/bin/python2

至此软驰,python3.6.6安裝成功

(二)涧窒、安裝django2.2.13并配置

django與python對(duì)應(yīng)版本對(duì)應(yīng)如下:


版本關(guān)系

先更新pip到最新版本:
pip install --upgrade pip

然后下載django

pip install django==2.2.13

django會(huì)下載在/usr/local/python3/bin的目錄之下,名字為django-admin

想要以后在終端使用django命令創(chuàng)建項(xiàng)目的話還是要做個(gè)軟鏈到/usr/bin/下面:

ln -s /usr/local/python3.6/bin/django-admin /usr/bin/django

django --version

顯示:

2.2.13

說(shuō)明成功锭亏!

接下來(lái)嘗試運(yùn)行django測(cè)試是否成功纠吴。

python manage.py runserver 0.0.0.0:8000

運(yùn)行之后如果出現(xiàn)一大堆字符,并且有

django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).

這樣的說(shuō)明文字慧瘤,那么就說(shuō)明我們系統(tǒng)中的sqlite版本有點(diǎn)低戴已,而django又需要高于3.8.3版本的sqlite固该。但是如果重新安裝sqlite過(guò)于麻煩,所以我們就修改以下django的配置:

找到/…/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py這個(gè)腳本

然后找到下面的代碼塊糖儡,注釋掉那一行并更改為:

def check_sqlite_version():

? ? #if Database.sqlite_version_info < (3, 8, 3):

? ? if Database.sqlite_version_info < (3, 6, 3):

? ? ? ? raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version)

然后在運(yùn)行

python manage.py runserver 0.0.0.0:8000

如果出現(xiàn)紅字伐坏,不要怕,執(zhí)行數(shù)據(jù)遷徙即可:

python manage.py migrate

其實(shí)到這里休玩,django已經(jīng)可以順利的運(yùn)行了著淆,但是在CentOS 7 minimal 的無(wú)界面環(huán)境之下劫狠,我們沒辦法驗(yàn)證它到底有沒有正常的運(yùn)行八┌獭!所以独泞,此時(shí)騷操作來(lái)了:

firewall-cmd --zone=public --add-port=8000/tcp --permanent

firewall-cmd --reload

開放你的CentOS 7的端口呐矾,之后在宿主機(jī)的瀏覽器中輸入我們配置的靜態(tài)網(wǎng)絡(luò)的ip,如果不記得了懦砂,那么就輸入:

ip addr

或者

ifconfig


ip

那么這個(gè)就是你的ip地址了蜒犯。

在宿主機(jī)瀏覽器中輸入:IP:8000, 例如192.168.1.120:8000荞膘,此時(shí)出現(xiàn)下面的界面罚随,則說(shuō)明你安裝的django已經(jīng)可以正常工作了。


django-worked

如果沒有出現(xiàn)這個(gè)界面的話羽资,可能原因有并沒有開放訪問(wèn)django的ip淘菩。雖然我們開放了CentOS的端口,但是對(duì)于django內(nèi)在的屠升,授權(quán)訪問(wèn)的主機(jī)ip我們并沒有開放潮改,需要找到django項(xiàng)目同名app之下的setting進(jìn)行修改:

vi ./demo/settings.py

找到下面的代碼并更改。

ALLOWED_HOSTS = []

改為

ALLOWED_HOSTS = ['*']

保存后退出再重新運(yùn)行即可腹暖。

(三)汇在、安裝uwsgi并配置

使用pip命令安裝uwsgi:

pip install uwsgi

安裝好之后做個(gè)軟鏈:

ln -s /usr/local/python3.6/bin/uwsgi /usr/bin/uwsgi

測(cè)試uwsgi可行性:

創(chuàng)建test.py文件,并輸入以下內(nèi)容

def application(env, start_response):

? ? start_response('200 OK', [('Content-Type', 'text/html')])

? ? return [b"hello world"]

之后運(yùn)行:

uwsgi --http :8000 --wsgi-file test.py

注意:http后面有一個(gè)空格脏答,并且":"和8000之間不能有空格糕殉, 否則會(huì)報(bào)錯(cuò)

完事之后,在瀏覽器中就可以看到結(jié)果了

但這并不是我們想要的效果殖告,我們最終的目的是實(shí)現(xiàn)nginx->uwsgi->django糙麦,所以要配置一下uwsgi,在demo項(xiàng)目之下創(chuàng)建uwsgi.ini 文件丛肮,實(shí)際上名字可以任意赡磅,但是后綴要確保是.ini的

vi uwsgi.ini

在文件中按照下面的格式輸入:

[uwsgi]

socket = 0.0.0.0:8000? ?# 套接字,必須要與nginx保持一致宝与!

chdir = /home/hrui/showMaker

module = showMaker.wsgi

master = true? ? ? ? #主進(jìn)程

#vhost = true? ? ? ? #多站模式

#no-site = true? ? ? #多站模式時(shí)不設(shè)置入口模塊和文件

workers = 2? ? ? ? ? #子進(jìn)程數(shù)

reload-mercy = 10

vacuum = true? ? ? ? #退出焚廊、重啟時(shí)清理文件

max-requests = 1000? #同一時(shí)間最大請(qǐng)求數(shù)量

limit-as = 512

buffer-size = 30000

pidfile = /var/run/xxx.pid? ? # pid進(jìn)程文件冶匹,用于關(guān)閉uwsgi服務(wù),

daemonize = /home/asan/xxxx.log? ? #日志文件?

后兩個(gè)文件放在哪里完全看心情咆瘟。

配置完成之后保存并退出嚼隘。讓我們啟動(dòng)一下試一試:

uwsgi --ini uwsgi.ini

ps aux | grep uwsgi

當(dāng)出現(xiàn)如圖所示的界面的時(shí)候就說(shuō)明啟動(dòng)成功了。



uwsgi_pid


此時(shí)在瀏覽器訪問(wèn)是不能成功的袒餐,還需要nginx的配合才行飞蛹,所以我們先關(guān)閉uwsgi的服務(wù):

uwsgi --stop /var/run/demoUwsgi.pid

重啟的命令是:

uwsgi --reload /var/run/demoUwsgi.pid

再執(zhí)行ps命令發(fā)現(xiàn)uwsgi的進(jìn)程已經(jīng)不存在了, 說(shuō)明關(guān)閉成功灸眼。

接下來(lái)安裝并配置nginx

(四)卧檐、安裝并配置nginx

首先需要下載nginx安裝包,或者使用yum安裝焰宣。安裝包點(diǎn)擊這里霉囚,提取碼是:23pu

下載好之后使用winscp工具上傳到你的CentOS系統(tǒng)中,如何上傳百度一下就OK匕积,傳到哪個(gè)目錄可以任意選擇盈罐。

然后我們解壓:

tar -zxvf nginx-1.13.7.tar.gz

編譯:

進(jìn)入解壓后的文件夾,執(zhí)行:

./configure --prefix=/usr/local/nginx

make && make install

做軟鏈:

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

測(cè)試:

nginx

出現(xiàn)如圖所示就代表成功了闪唆!


nginx_success

配置nginx:

vim /usr/local/nginx1.13/conf/nginx.conf

打開后找到并修改為下面的樣式

localtion / {

????include uwsgi_params;??

?????uwsgi_pass 0.0.0.0:8000;? ??#這里要與uwsgi中的socket套接字保持一致盅粪!

?????uwsgi_param CHDIR /home/asandemo/demo;? #這里的demo指的是工程名,而不是內(nèi)層的demo

?????uwsgi_param UWSGI_SCRIPT demo.wsgi;? # demo.wsgi 相當(dāng)于demo/wsgi

}

完事之后保存并退出悄蕾,然后執(zhí)行:

nginx -t?

檢驗(yàn)是否正確票顾。

出現(xiàn)OK,success字眼笼吟,就代表沒問(wèn)題库物,否則再去修改一下即可

然后我們同時(shí)啟動(dòng)uwsgi和nginx

uwsgi --ini? xxx.ini

nginx

之后在瀏覽器輸入IP:80就可以看到了,如果沒有看到贷帮,可能原因之一是沒有開放80端口戚揭,此時(shí)開放即可。

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload

之后再次嘗試瀏覽器訪問(wèn)即可撵枢。

(五)民晒、配置django與nginx訪問(wèn)靜態(tài)文件

第一步:使html文件可訪問(wèn)

新建testapp app:

python manage.py startapp testapp

新建 templates模板文件:

sudo mkdir templates

在manage.py所在目錄下運(yùn)行:

vi ./demo/settings.py

添加app和添加templates

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] 在'django.contrib.staticfiles',之后追加'testapp',

逗號(hào)不能少!

找到templates锄禽,下的'DIRS'修改如下:

'DIRS': [os.path.join(BASE_DIR, 'templates')],

然后在新建的app的view中定義一個(gè)index函數(shù):

vi ./testapp/views.py

添加:

def index(request):

return render(request, 'index.html')

然后再到settings.py所在目錄下找到urls.py并添加如下:

from testapp import views? ? # 新加

urlpatterns = [

? ? path('admin/', admin.site.urls),

? ? path('index', views.index),? ? ? # 新加

]

然后在瀏覽器輸入IP:80/index即可看到index.html 的內(nèi)容

第二步:配置靜態(tài)文件

在manage.py目錄下新建static文件

sudo mkdir static

在settings.py 的STATIC_URL下添加:

STATIC_ROOT =?os.path.join(BASE_DIR, 'static')

保存并退出之后執(zhí)行:

python manage.py collectstatic

修改nginx配置文件:

1.在頭部添加或者直接修改:user root潜必,否則訪問(wèn)static的時(shí)候會(huì)拋出403錯(cuò)誤

2.location / {} 之后添加:

location /static/ {

? ? alias /path/to/your/static/;

? ? # alias /home/asandemo/demo/static/;

}

注意:

再index.html中使用的靜態(tài)文件要使用固定的格式:

/static/images/img.xxx

/static/css/css.css

/static/js/js.js

之后就能順利的訪問(wèn)靜態(tài)文件了。

(六)沃但、supervisor篇

安裝:

yum install supervisor

或者:

pip install supervisor

使用pip安裝后可執(zhí)行文件在/usr/local/python3.6/bin/里面

可以先鏈接到/usr/bin/中

ln -s /usr/local/python3.6/bin/supervisorctl /usr/bin/

ln -s?/usr/local/python3.6/bin/supervisord /usr/bin/

通過(guò)echo_supervisord_conf生成配置文件:

/usr/local/python3.6/bin/echo_supervisord_conf > /etc/supervisor/supervisord.conf

配置文件說(shuō)明:

[unix_http_server]

file=/tmp/supervisor.sock ;UNIX socket 文件磁滚,supervisorctl 會(huì)使用?

;chmod=0700 ;socket文件的mode,默認(rèn)是0700

;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid

;[inet_http_server] ;HTTP服務(wù)器垂攘,提供web管理界面

;port=127.0.0.1:9001 ;Web管理后臺(tái)運(yùn)行的IP和端口维雇,如果開放到公網(wǎng),需要注意安全性

;username=user ;登錄管理后臺(tái)的用戶名

;password=123 ;登錄管理后臺(tái)的密碼

[supervisord]

logfile=/tmp/supervisord.log ;日志文件晒他,默認(rèn)是 $CWD/supervisord.log

logfile_maxbytes=50MB ;日志文件大小吱型,超出會(huì)rotate,默認(rèn) 50MB陨仅,如果設(shè)成0津滞,表示不限制大小

logfile_backups=10 ;日志文件保留備份數(shù)量默認(rèn)10,設(shè)為0表示不備份

loglevel=info ;日志級(jí)別灼伤,默認(rèn)info触徐,其它: debug,warn,trace

pidfile=/tmp/supervisord.pid ;pid 文件

nodaemon=false ;是否在前臺(tái)啟動(dòng),默認(rèn)是false饺蔑,即以 daemon 的方式啟動(dòng)

minfds=1024 ;可以打開的文件描述符的最小值锌介,默認(rèn) 1024

minprocs=200 ;可以打開的進(jìn)程數(shù)的最小值嗜诀,默認(rèn) 200?

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock ;通過(guò)UNIX socket連接supervisord猾警,路徑與unix_http_server部分的file一致

;serverurl=http://127.0.0.1:9001 ; 通過(guò)HTTP的方式連接supervisord

; [program:xx]是被管理的進(jìn)程配置參數(shù),xx是進(jìn)程的名稱

[program:xxx]

command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序啟動(dòng)命令?

autostart=true ; 在supervisord啟動(dòng)的時(shí)候也自動(dòng)啟動(dòng)

startsecs=10 ; 啟動(dòng)10秒后沒有異常退出隆敢,就表示進(jìn)程正常啟動(dòng)了发皿,默認(rèn)為1秒

autorestart=true ; 程序退出后自動(dòng)重啟,可選值:[unexpected,true,false],默認(rèn)為unexpected拂蝎,表示進(jìn)程意外殺死后才重啟

startretries=3 ; 啟動(dòng)失敗自動(dòng)重試次數(shù)穴墅,默認(rèn)是3

user=tomcat ; 用哪個(gè)用戶啟動(dòng)進(jìn)程,默認(rèn)是root

priority=999 ; 進(jìn)程啟動(dòng)優(yōu)先級(jí)温自,默認(rèn)999玄货,值小的優(yōu)先啟動(dòng)

redirect_stderr=true ; 把stderr重定向到stdout,默認(rèn)false

stdout_logfile_maxbytes=20MB ; stdout 日志文件大小悼泌,默認(rèn)50MB

stdout_logfile_backups = 20 ; stdout 日志文件備份數(shù)松捉,默認(rèn)是10

; stdout 日志文件,需要注意當(dāng)指定目錄不存在時(shí)無(wú)法正常啟動(dòng)馆里,所以需要手動(dòng)創(chuàng)建目錄(supervisord 會(huì)自動(dòng)創(chuàng)建日志文件)

stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out

stopasgroup=false ;默認(rèn)為false,進(jìn)程被殺死時(shí)隘世,是否向這個(gè)進(jìn)程組發(fā)送stop信號(hào),包括子進(jìn)程

killasgroup=false ;默認(rèn)為false鸠踪,向進(jìn)程組發(fā)送kill信號(hào)丙者,包括子進(jìn)程

;包含其它配置文件

[include]

files = relative/directory/*.ini ;可以指定一個(gè)或多個(gè)以.ini結(jié)束的配置文件

一個(gè)示例:

[program:super_nginx]

directory=/usr/bin

autorestart=true

autostart=true

command=sudo nginx -c /usr/local/nginx/conf/nginx.conf

user=rootstderr_logfile=/tmp/nginx_stderr.log

stdout_logfile=/tmp/nginx_stdout.log

redirect_stderr=true

stdout_logfile_maxbytes = 20MB

stdout_logfile_backups = 20

其他的一樣添加就ok了

supervisor常用命令:

supervisord -c /etc/supervisord.conf? ? ?// 啟動(dòng)supervisord,也可以設(shè)置開機(jī)啟動(dòng)

supervisorctl status? ?// 查看當(dāng)前program運(yùn)行狀態(tài)

supervisorctl start program? // 啟動(dòng)設(shè)置的程序营密, 例如上面的super_nginx

supervisorctl stop program? // 關(guān)閉設(shè)置的程序械媒, 例如上面的super_nginx

supervisorctl update? ?// 修改conf文件后更新配置文件

supervisorctl? reload? // 重啟supervisor

Over!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末评汰,一起剝皮案震驚了整個(gè)濱河市纷捞,隨后出現(xiàn)的幾起案子侣集,更是在濱河造成了極大的恐慌,老刑警劉巖兰绣,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件世分,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缀辩,警方通過(guò)查閱死者的電腦和手機(jī)臭埋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)臀玄,“玉大人瓢阴,你說(shuō)我怎么就攤上這事〗∥蓿” “怎么了荣恐?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)累贤。 經(jīng)常有香客問(wèn)我叠穆,道長(zhǎng),這世上最難降的妖魔是什么臼膏? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任硼被,我火速辦了婚禮,結(jié)果婚禮上渗磅,老公的妹妹穿的比我還像新娘嚷硫。我一直安慰自己,他們只是感情好始鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布仔掸。 她就那樣靜靜地躺著,像睡著了一般医清。 火紅的嫁衣襯著肌膚如雪起暮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天状勤,我揣著相機(jī)與錄音鞋怀,去河邊找鬼。 笑死持搜,一個(gè)胖子當(dāng)著我的面吹牛密似,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播葫盼,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼残腌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起抛猫,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蟆盹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后闺金,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逾滥,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年败匹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寨昙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掀亩,死狀恐怖舔哪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情槽棍,我是刑警寧澤捉蚤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站炼七,受9級(jí)特大地震影響缆巧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜特石,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一盅蝗、第九天 我趴在偏房一處隱蔽的房頂上張望鳖链。 院中可真熱鬧姆蘸,春花似錦、人聲如沸芙委。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)灌侣。三九已至推捐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侧啼,已是汗流浹背牛柒。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痊乾,地道東北人皮壁。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像哪审,于是被迫代替她去往敵國(guó)和親蛾魄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容