詳細源碼編譯安裝httpd介紹

一、源代碼編譯概述:

1.使用源代碼安裝軟件的優點

獲得最新的軟件版本,及時修復bug
根據用戶需要,靈活定製軟件功能

2.應用場合舉例

安裝較新版本的應用程序時
自由軟件的最新版本大都以源碼的形式最先發布
當前安裝的程序無法滿足需要時
編譯安裝可由用戶自行修改、定製功能
需要爲應用程序添加新的功能時
用戶可以重新配置、自由修改源代碼,加入新的功能

3.Tarball 封包

.tar.gz 和 .tar.bz2 格式居多

4.完整性校驗

使用md5sum校驗工具
計算MD5校驗和,並與官方提供的值相比較,判斷是否一致

[root@localhost ~]# md5sum httpd-2.4.25.tar.gz 
24fb8b9e36cf131d78caae864fea0f6a  httpd-2.4.25.tar.gz

5.確認源代碼編譯環境需安裝支持 C/C++程序語言的編譯器,如:

[root@localhost ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@localhost ~]# make --version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu

6.編譯安裝的基本過程

步驟1.解包

習慣上將軟件包釋放到 /usr/src/ 目錄(-C指定目錄)

解包後的源代碼文件位置:/usr/src/軟件名-版本號/

[root@localhost ~]# tar -zxvf httpd-2.4.25.tar.gz -C /usr/src/

步驟2.配置

使用源碼目錄中的 configure 腳本

執行“./configure --help” 可以查看幫助

典型的配置選項:

--prefix=軟件安裝目錄

[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/apache

步驟3.編譯(-j指定邏輯CPU個數,加快編譯速度。默認只有1個CPU處理)

執行make命令

[root@localhost httpd-2.4.25]# make -j 4

步驟4.安裝

執行make install 命令(在命令前面添加time,可以查看安裝時間,可選項)

[root@localhost httpd-2.4.25]# time make install

二、案例(apache編譯安裝)

1、下載軟件包(http://archive.apache.org/dist/httpd/

[root@localhost ~]# ifconfig  ens32
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.14.13  netmask 255.255.255.0  broadcast 192.168.14.255

[root@localhost ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz

2、完整性檢驗,因爲這裏下載的是gz包,所以打開對應的MD5

查看下載到本地的MD5值

[root@localhost ~]# md5sum httpd-2.4.25.tar.gz 
24fb8b9e36cf131d78caae864fea0f6a  httpd-2.4.25.tar.gz

3、解壓到指定目錄

[root@localhost ~]# tar -zxvf httpd-2.4.25.tar.gz  -C /usr/src/

4、切換到解壓目錄

[root@localhost ~]# cd /usr/src/httpd-2.4.25/

5、執行./configure指定安裝目錄,選擇安裝模塊並且排錯,安裝所依賴的包。

1)源碼編譯使用gcc,所以先安裝gcc

[root@localhost httpd-2.4.25]# yum install -y gcc

2)./configure --prefix=安裝目錄自定義,可以不存在,會自動創建。後面可選項根據需求更改。

第一次編譯:提示APR

[root@localhost httpd-2.4.25]# ./configure --prefix=/apps/httpd24  --sysconfdir=/etc/httpd --enable-ssl --enable-so
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... no
configure: error: APR not found.  Please read the documentation.

查看yum包裏面的有關apr的,一般編譯缺少的包,都是提示名字加上devel開發包,比如:apr-devel

[root@localhost httpd-2.4.25]# yum search apr
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
===================================================================================== N/S matched: apr ======================================================================================
apr-devel.i686 : APR library development kit
apr-devel.x86_64 : APR library development kit
apr-util-devel.i686 : APR utility library development kit
apr-util-devel.x86_64 : APR utility library development kit
apr-util-ldap.x86_64 : APR utility library LDAP support
apr-util-mysql.x86_64 : APR utility library MySQL DBD driver
apr-util-nss.x86_64 : APR utility library NSS crytpo support
apr-util-odbc.x86_64 : APR utility library ODBC DBD driver
apr-util-openssl.x86_64 : APR utility library OpenSSL crytpo support
apr-util-pgsql.x86_64 : APR utility library PostgreSQL DBD driver
apr-util-sqlite.x86_64 : APR utility library SQLite DBD driver
pcp-pmda-haproxy.x86_64 : Performance Co-Pilot (PCP) metrics for HAProxy
apr.i686 : Apache Portable Runtime library
apr.x86_64 : Apache Portable Runtime library
apr-util.i686 : Apache Portable Runtime Utility library
apr-util.x86_64 : Apache Portable Runtime Utility library
haproxy.x86_64 : TCP/HTTP proxy and load balancer for high availability environments

安裝:apr-devel

[root@localhost httpd-2.4.25]# yum install -y apr-devel

3)第二次編譯:提示APR-util

[root@localhost httpd-2.4.25]# ./configure --prefix=/apps/httpd24  --sysconfdir=/etc/httpd --enable-ssl --enable-so
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... yes
  setting CC to "gcc"
  setting CPP to "gcc -E"
  setting CFLAGS to "  -pthread"
  setting CPPFLAGS to " -DLINUX -D_REENTRANT -D_GNU_SOURCE"
  setting LDFLAGS to " "
configure: 
configure: Configuring Apache Portable Runtime Utility library...
configure: 
checking for APR-util... no
configure: error: APR-util not found.  Please read the documentation.

按照上面操作,先查看是否有關apr-util-devel包

[root@localhost httpd-2.4.25]# yum search apr-util
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
=================================================================================== N/S matched: apr-util ===================================================================================
apr-util.i686 : Apache Portable Runtime Utility library
apr-util.x86_64 : Apache Portable Runtime Utility library
apr-util-devel.i686 : APR utility library development kit
apr-util-devel.x86_64 : APR utility library development kit
apr-util-ldap.x86_64 : APR utility library LDAP support
apr-util-mysql.x86_64 : APR utility library MySQL DBD driver
apr-util-nss.x86_64 : APR utility library NSS crytpo support
apr-util-odbc.x86_64 : APR utility library ODBC DBD driver
apr-util-openssl.x86_64 : APR utility library OpenSSL crytpo support
apr-util-pgsql.x86_64 : APR utility library PostgreSQL DBD driver
apr-util-sqlite.x86_64 : APR utility library SQLite DBD driver

安裝:apr-util-devel

[root@localhost httpd-2.4.25]# yum install -y apr-util-devel

4)第三次編譯:提示PCRE

[root@localhost httpd-2.4.25]# ./configure --prefix=/apps/httpd24  --sysconfdir=/etc/httpd --enable-ssl --enable-so
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... yes
  setting CC to "gcc"
  setting CPP to "gcc -E"
  setting CFLAGS to "  -pthread"
  setting CPPFLAGS to " -DLINUX -D_REENTRANT -D_GNU_SOURCE"
  setting LDFLAGS to " "
configure: 
configure: Configuring Apache Portable Runtime Utility library...
configure: 
checking for APR-util... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for gcc option to accept ISO C99... -std=gnu99
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

查詢

[root@localhost httpd-2.4.25]# yum search pcre
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
===================================================================================== N/S matched: pcre =====================================================================================
pcre-devel.i686 : Development files for pcre
pcre-devel.x86_64 : Development files for pcre
pcre-static.i686 : Static library for pcre
pcre-static.x86_64 : Static library for pcre
pcre-tools.x86_64 : Auxiliary utilities for pcre
pcre2-devel.i686 : Development files for pcre2
pcre2-devel.x86_64 : Development files for pcre2
pcre2-static.i686 : Static library for pcre2
pcre2-static.x86_64 : Static library for pcre2
pcre2-tools.x86_64 : Auxiliary utilities for pcre2
pcre2-utf16.i686 : UTF-16 variant of PCRE2
pcre2-utf16.x86_64 : UTF-16 variant of PCRE2
pcre2-utf32.i686 : UTF-32 variant of PCRE2
pcre2-utf32.x86_64 : UTF-32 variant of PCRE2
pcre.i686 : Perl-compatible regular expression library
pcre.x86_64 : Perl-compatible regular expression library
pcre2.i686 : Perl-compatible regular expression library
pcre2.x86_64 : Perl-compatible regular expression library

安裝:pcre-devel

[root@localhost httpd-2.4.25]# yum install -y pcre-devel

5)第四次編譯:提示OpenSSL version is too old

編譯顯示過長,只截取錯誤提示

checking for OpenSSL... checking for user-provided OpenSSL base directory... none
checking for OpenSSL version >= 0.9.8a... FAILED
configure: WARNING: OpenSSL version is too old
no
checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

查詢

[root@localhost httpd-2.4.25]# yum search openssl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
=================================================================================== N/S matched: openssl ====================================================================================
apr-util-openssl.x86_64 : APR utility library OpenSSL crytpo support
openssl-devel.i686 : Files for development of applications which will use OpenSSL
openssl-devel.x86_64 : Files for development of applications which will use OpenSSL
openssl-perl.x86_64 : Perl scripts provided with OpenSSL
openssl-static.i686 : Libraries for static linking of applications which will use OpenSSL
openssl-static.x86_64 : Libraries for static linking of applications which will use OpenSSL
perl-Crypt-OpenSSL-Bignum.x86_64 : Perl interface to OpenSSL for Bignum
perl-Crypt-OpenSSL-RSA.x86_64 : Perl interface to OpenSSL for RSA
perl-Crypt-OpenSSL-Random.x86_64 : Perl interface to OpenSSL for Random
pyOpenSSL.x86_64 : Python wrapper module around the OpenSSL library
pyOpenSSL-doc.noarch : Documentation for pyOpenSSL
xmlsec1-openssl.i686 : OpenSSL crypto plugin for XML Security Library
xmlsec1-openssl.x86_64 : OpenSSL crypto plugin for XML Security Library
xmlsec1-openssl-devel.i686 : OpenSSL crypto plugin for XML Security Library
xmlsec1-openssl-devel.x86_64 : OpenSSL crypto plugin for XML Security Library
m2crypto.x86_64 : Support for using OpenSSL in python scripts
nss_compat_ossl.i686 : Source-level compatibility library for OpenSSL to NSS porting
nss_compat_ossl.x86_64 : Source-level compatibility library for OpenSSL to NSS porting
openssl.x86_64 : Utilities from the general purpose cryptography library with TLS implementation
openssl-libs.x86_64 : A general purpose cryptography library with TLS implementation
openssl-libs.i686 : A general purpose cryptography library with TLS implementation
openssl098e.i686 : A compatibility version of a general cryptography and TLS library
openssl098e.x86_64 : A compatibility version of a general cryptography and TLS library
perl-Crypt-SSLeay.x86_64 : Crypt::SSLeay - OpenSSL glue that provides LWP https support
perl-Net-SSLeay.x86_64 : Perl extension for using OpenSSL
qca-ossl.i686 : OpenSSL plugin for the Qt Cryptographic Architecture v2
qca-ossl.x86_64 : OpenSSL plugin for the Qt Cryptographic Architecture v2

安裝:

[root@localhost httpd-2.4.25]# yum install -y openssl-devel

6)第五次編譯終於成功(如果按照以上操作有問題,可以刪除解壓包,因爲相關的依賴包已經安裝完成。重新解壓軟件包編譯即可)

config.status: executing default commands
configure: summary of build options:

    Server Version: 2.4.25
    Install prefix: /apps/httpd24
    C compiler:     gcc -std=gnu99
    CFLAGS:           -pthread
    LDFLAGS:         
    LIBS:           
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE
    C preprocessor: gcc -E

6、由此可見,編譯成功需要的軟件包:gcc  apr-devel  arp-util-devel  pcre-devel  openssl-devel

7、make

[root@localhost httpd-2.4.25]# make -j 4

8、make install(可以查看到創建了相關目錄)

[root@localhost httpd-2.4.25]# make install
...
...
Installing configuration files
mkdir /etc/httpd                   #配置目錄
mkdir /etc/httpd/extra
mkdir /etc/httpd/original
mkdir /etc/httpd/original/extra
Installing HTML documents
mkdir /apps/httpd24/htdocs        #頁面目錄
Installing error documents
mkdir /apps/httpd24/error
Installing icons
mkdir /apps/httpd24/icons
mkdir /apps/httpd24/logs
Installing CGIs
mkdir /apps/httpd24/cgi-bin
Installing header files
mkdir /apps/httpd24/include
Installing build system files
mkdir /apps/httpd24/build
Installing man pages and online manual
mkdir /apps/httpd24/man
mkdir /apps/httpd24/man/man1
mkdir /apps/httpd24/man/man8
mkdir /apps/httpd24/manual
make[1]: Leaving directory `/usr/src/httpd-2.4.25'

9、關閉防火牆和selinux

[root@localhost httpd-2.4.25]# systemctl stop firewalld
[root@localhost httpd-2.4.25]#  sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

10、啓動apache服務(如何不知道如何啓動,可以查看)

[root@localhost httpd-2.4.25]# more INSTALL 

  APACHE INSTALLATION OVERVIEW

  Quick Start - Unix
  ------------------

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.4/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start        #用戶指定安裝目錄(apps/httpd24)/bin/apachectl start
[root@localhost httpd-2.4.25]# cd /apps/httpd24/bin/
[root@localhost bin]# ./apachectl start 
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost bin]# ss -ntlp
State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
LISTEN      0      128                                                                *:22                                                                             *:*                   users:(("sshd",pid=5066,fd=3))
LISTEN      0      100                                                        127.0.0.1:25                                                                             *:*                   users:(("master",pid=5558,fd=13))
LISTEN      0      128                                                               :::80                                                                            :::*                   users:(("httpd",pid=17249,fd=4),("httpd",pid=17248,fd=4),("httpd",pid=17247,fd=4),("httpd",pid=17246,fd=4))
LISTEN      0      128                                                               :::22                                                                            :::*                   users:(("sshd",pid=5066,fd=4))
LISTEN      0      100                                                              ::1:25                                                                            :::*                   users:(("master",pid=5558,fd=14))

11、在其他主機訪問成功

[root@localhost ~]# curl http://192.168.14.13
<html><body><h1>It works!</h1></body></html>

三、腳本安裝

1、最好先下載httpd-2.4.25.tar放到/root目錄下(因爲腳本就在/root目錄下,安裝包放到跟腳本同一個目錄),這樣執行腳本過程中不需要重新下載,節省時間

[root@localhost ~]# cat http.sh 
#!/bin/bash
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config    #關閉selinux
systemctl stop firewalld       #關閉防火牆
systemctl disable firewalld    #開機不啓動
cpu=`cat /proc/cpuinfo| grep "processor"| wc -l`    #獲取主機邏輯CPU個數
prefix=/apps/httpd24           #httpd安裝目錄
sysconfdir=/etc/httpd          #httpd配置文件目錄
yum install -y gcc apr-devel apr-util-devel pcre-devel openssl-devel wget
ls | grep httpd-2.4.25.tar.gz
if [ $? -eq 0 ];then
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    echo "the httpd is exist"        #提升安裝包已經存在
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    sleep 30
    tar -zxvf httpd-2.4.25.tar.gz  -C /tmp/
    cd /tmp/httpd-2.4.25/
    ./configure --prefix=$prefix --sysconfdir=$sysconfdir --enable-ssl --enable-so
    make -j $cpu
    make install
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    echo "the httpd is start"        #啓動服務提示
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    sleep 30
    $prefix/bin/apachectl start
else
    wget http://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz
    tar -zxvf httpd-2.4.25.tar.gz  -C /tmp/
    cd /tmp/httpd-2.4.25/
    ./configure --prefix=$prefix --sysconfdir=$sysconfdir --enable-ssl --enable-so
    make -j $cpu
    make install
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    echo "the httpd is start"        #啓動服務提示
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    sleep 30
    $prefix/bin/apachectl start

fi

四、遠程服務器腳本安裝httpd

(其他主機調用腳本服務器裏面的腳本,直接執行安裝)

服務器端(192.168.14.13),把腳本放到htdocs目錄下

[root@http-server htdocs]# pwd
/apps/httpd24/htdocs
[root@http-server htdocs]# ll
total 8
-rwxr-xr-x. 1 root root  1610 Sep 24 04:18 http.sh
-rw-r--r--. 1  501 games   45 Jun 11  2007 index.html

客戶端:

1、客戶端IP

[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:08:01:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.14.40/24 brd 192.168.14.255 scope global noprefixroute dynamic ens32
       valid_lft 3117sec preferred_lft 3117sec
    inet6 fe80::c241:11e3:176d:aca4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2、cur http://192.168.14.13/http.sh查看

[root@localhost ~]# curl http://192.168.14.13/http.sh
#!/bin/bash
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
cpu=`cat /proc/cpuinfo| grep "processor"| wc -l`
prefix=/apps/httpd24
sysconfdir=/etc/httpd
yum install -y gcc apr-devel apr-util-devel pcre-devel openssl-devel wget
ls | grep httpd-2.4.25.tar.gz
if [ $? -eq 0 ];then
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    echo "the httpd is exist"
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    sleep 30
    tar -zxvf httpd-2.4.25.tar.gz  -C /tmp/
    cd /tmp/httpd-2.4.25/
    ./configure --prefix=$prefix --sysconfdir=$sysconfdir --enable-ssl --enable-so
    make -j $cpu
    make install
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    echo "the httpd is start"
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    sleep 30
    $prefix/bin/apachectl start
else
    wget http://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz
    tar -zxvf httpd-2.4.25.tar.gz  -C /tmp/
    cd /tmp/httpd-2.4.25/
    ./configure --prefix=$prefix --sysconfdir=$sysconfdir --enable-ssl --enable-so
    make -j $cpu
    make install
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    echo "the httpd is start"
    echo "-----------------------------------------------------------------------"
    echo "-----------------------------------------------------------------------"
    sleep 30
    $prefix/bin/apachectl start

fi

3、把查看的結果傳遞給bash執行

root@localhost ~]# curl http://192.168.14.13/http.sh | bash

4、查看結果

make[1]: Leaving directory `/tmp/httpd-2.4.25'
-----------------------------------------------------------------------
-----------------------------------------------------------------------
the httpd is start
-----------------------------------------------------------------------
-----------------------------------------------------------------------
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost ~]# ss -ntlp
State       Recv-Q Send-Q                    Local Address:Port                                   Peer Address:Port              
LISTEN      0      128                                   *:22                                                *:*                   users:(("sshd",pid=5192,fd=3))
LISTEN      0      100                           127.0.0.1:25                                                *:*                   users:(("master",pid=5684,fd=13))
LISTEN      0      128                                  :::80                                               :::*                   users:(("httpd",pid=12034,fd=4),("httpd",pid=12033,fd=4),("httpd",pid=12032,fd=4),("httpd",pid=12031,fd=4))
LISTEN      0      128                                  :::22                                               :::*                   users:(("sshd",pid=5192,fd=4))
LISTEN      0      100                                 ::1:25                                               :::*                   users:(("master",pid=5684,fd=14))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章