GitLab安裝-centos7.6

一蚌成、簡(jiǎn)介

GitLab是利用 Ruby on Rails 一個(gè)開(kāi)源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù)锚扎,可通過(guò)Web界面進(jìn)行訪問(wèn)公開(kāi)的或者私人項(xiàng)目。它擁有與Github類似的功能馁启,能夠?yàn)g覽源代碼驾孔,管理缺陷和注釋」吒恚可以管理團(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問(wèn)翠勉,它非常易于瀏覽提交過(guò)的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流霉颠。它還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用对碌,便于日后有需要的時(shí)候進(jìn)行查找。

二蒿偎、Gitlib和Github區(qū)別

相同點(diǎn)

兩個(gè)都是基于web的Git倉(cāng)庫(kù),而且GitLab在使用方式上和GitHub基本上是一樣的朽们,都提供了存儲(chǔ)、分享诉位、發(fā)布和合作開(kāi)發(fā)項(xiàng)目的中心化云存儲(chǔ)場(chǎng)所

不同點(diǎn)

GitHUb同時(shí)提供公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù)骑脱,但如果需要使用私有倉(cāng)庫(kù),是需要收費(fèi)的.GitLab讓開(kāi)發(fā)團(tuán)隊(duì)對(duì)他們的代碼倉(cāng)庫(kù)擁有更多的控制苍糠,相比于GitHub叁丧,它有不少的特色:
允許免費(fèi)設(shè)置倉(cāng)庫(kù)權(quán)限;允許用戶選擇分享一個(gè)project的部分代碼岳瞭;允許用戶設(shè)置project的獲取權(quán)限拥娄,進(jìn)一步的提升安全性;可以設(shè)置獲取到團(tuán)隊(duì)整體的改進(jìn)進(jìn)度瞳筏;通過(guò)innersourcing讓不在權(quán)限范圍內(nèi)的人訪問(wèn)不到該資源条舔。
所以根據(jù)業(yè)務(wù)使用場(chǎng)景來(lái)看,私密性的話乏矾,gitlib權(quán)限管制無(wú)疑是最好的選擇;而面對(duì)于開(kāi)源的話迁杨,github則是最好的選擇钻心。這個(gè)我們根據(jù)實(shí)際情況而定。

安裝Gitlib

  • 環(huán)境 centos7.6 關(guān)閉防火墻及seliunx設(shè)置(不再介紹)
  • 依賴
sudo yum install -y curl policycoreutils-python openssh-server
  • 安裝postfix來(lái)實(shí)現(xiàn)郵件通知功能
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
  • 配置Gitlib官網(wǎng)的安裝腳本地址并下載安裝铅协,詳情可見(jiàn)官網(wǎng)介紹 這里強(qiáng)調(diào)一下版本問(wèn)題 我們使用CE社區(qū)版本免費(fèi) 企業(yè)版本則為EE版本捷沸,若其他操作平臺(tái),請(qǐng)參考相對(duì)應(yīng)操作系統(tǒng)
#添加倉(cāng)庫(kù)地址,根據(jù)實(shí)際情況選擇
#ee版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
#ce版本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  • 安裝
yum intall gitlab-ce
  • RPM包安裝試狐史,國(guó)內(nèi)清華源鏡像下載[RPM]包相對(duì)要快很多(https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    包自行安裝
    此時(shí)文件量比較大 所以需要時(shí)間來(lái)下載 請(qǐng)耐心等待直到 compete完成安裝
  • 訪問(wèn) 正常來(lái)說(shuō)痒给,執(zhí)行完這步之后说墨,會(huì)幫我們安裝和自動(dòng)配置GitLab相關(guān)的信息的.如果沒(méi)有啟動(dòng)GitLab可以再執(zhí)行一下這句命令。 請(qǐng)初始化配置苍柏,如下命令尼斧,自動(dòng)創(chuàng)建服務(wù)及數(shù)據(jù)
gitlab-ctl reconfigure

直接初始完成


  • 502報(bào)錯(cuò),如圖试吁,此時(shí)請(qǐng)重啟服務(wù)
sudo gitlab-ctl restart

查看gitlab啟動(dòng)狀態(tài)棺棵,gitlab-ctl status查看狀態(tài),如果沒(méi)有報(bào)錯(cuò)熄捍,那么請(qǐng)查看內(nèi)存使用情況烛恤,如有變動(dòng)說(shuō)明gitlab仍在啟動(dòng)中,請(qǐng)耐心等候

[root@k8s ~]# gitlab-ctl status
run: alertmanager: (pid 7017) 115s; run: log: (pid 7013) 115s
run: gitaly: (pid 6956) 116s; run: log: (pid 6955) 116s
run: gitlab-monitor: (pid 6993) 115s; run: log: (pid 6992) 115s
run: gitlab-workhorse: (pid 6980) 115s; run: log: (pid 6979) 115s
run: grafana: (pid 7018) 115s; run: log: (pid 7016) 115s
run: logrotate: (pid 7009) 115s; run: log: (pid 7008) 115s
run: nginx: (pid 7010) 115s; run: log: (pid 6982) 115s
run: node-exporter: (pid 6986) 115s; run: log: (pid 6981) 115s
run: postgres-exporter: (pid 7015) 115s; run: log: (pid 7012) 115s
run: postgresql: (pid 6966) 116s; run: log: (pid 6965) 116s
run: prometheus: (pid 7014) 115s; run: log: (pid 7011) 115s
run: redis: (pid 6985) 115s; run: log: (pid 6984) 115s
run: redis-exporter: (pid 6987) 115s; run: log: (pid 6983) 115s
run: sidekiq: (pid 6958) 116s; run: log: (pid 6957) 116s
run: unicorn: (pid 14764) 1s; run: log: (pid 6994) 115s
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1723        2817          72        1158        3621
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1920        2620          72        1158        3424
Swap:             0           0           0
[root@k8s ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           5699        1943        2597          72        1158        3401
Swap:             0           0           0

稍等片刻 設(shè)置密碼后 以root用戶登陸


系統(tǒng)郵件配置

目的余耽,系統(tǒng)配置郵箱使用stmp發(fā)送創(chuàng)建帳號(hào)信息等缚柏,如:創(chuàng)建帳號(hào)后發(fā)送用戶密碼初始設(shè)置頁(yè)面到用戶或用戶有變更時(shí)會(huì)出現(xiàn)類似情況
SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol) 若報(bào)錯(cuò)則為ssl配置問(wèn)題,因本次我們未使用https域名所以此項(xiàng)則不配置碟贾,具體操作如下

vim /etc/gitlab/gitlab.rb
找到如下設(shè)置
### Email Settings
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.XXX.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "XXX@XXX.com"
gitlab_rails['smtp_password'] = "your password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false #這里是否使用ssl協(xié)議币喧,本次因未配置ssl域名,這里我們?cè)O(shè)置為false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'  #如上同理
gitlab_rails['smtp_domain'] = "mail.XXX.com"
gitlab_rails['gitlab_email_from'] = 'XXX@XXX.com'
保存后
gitlab-ctl reconfigure #重啟配置
gitlab-ctl restart 
gitlab-rails console #測(cè)試郵件
Notify.test_email(‘接收方郵件地址’,‘郵件標(biāo)題’,‘郵件內(nèi)容’).deliver_now
Notify.test_email('xxx@XXX.com','hello','hello').deliver_now
  • 當(dāng)創(chuàng)建用戶或用戶信息變更時(shí)缕陕,系統(tǒng)郵件將會(huì)發(fā)送郵件通知用戶




漢化

請(qǐng)注意對(duì)應(yīng)版本信息 如不清楚gitlab版本以及git粱锐,請(qǐng)不要操作,否則gitlab癱瘓扛邑!

[root@k8s ~]# sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.2.4
  • 下載漢化包 注意補(bǔ)丁包版本一定要與gitlab的版本一致怜浅,以下直接下載的是gitlab-12-2穩(wěn)定版的。
wget https://gitlab.com/xhang/gitlab/repository/12-2-stable-zh/archive.tar.bz2 -O gitlab-12-2-stable-zh.tar.bz2

git clone https://gitlab.com/xhang/gitlab.git
-rw-r--r-- 1 root root 2231640 Sep  4 14:33 gitlab-12-2-stable-zh.tar.bz2
  • 解壓
[root@k8s ~]# tar xf gitlab-12-2-stable-zh.tar.bz2
[root@k8s home]# mv gitlab-12-2-stable-zh-d492132c9775663063d2438cbc674e14cda3bd25/ gitlab-12-2-stable-zh
[root@k8s home]# cat gitlab-12-2-stable-zh/VERSION 
12.2.0
  • 備份原有配置
[root@k8s home]# cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
  • 復(fù)制并覆蓋配置文件
[root@k8s home]# cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/abuse_reports_controller.rb’? yes
cp: overwrite ‘/opt/gitlab/embedded/service/gitlab-rails/app/controllers/acme_challenges_controller.rb’? yes

這里仍提示是否覆蓋 發(fā)現(xiàn)這是別名引起的

[root@k8s home]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

發(fā)現(xiàn)每次執(zhí)行cp命令蔬崩,其實(shí)是執(zhí)行了cp -i命令的別名恶座,因此無(wú)論怎么輸入都提示是否覆蓋。
修改~/.bashrc沥阳,在“alias cp='cp -i'”前添加#號(hào)注釋后即可跨琳。

[root@k8s home]#  vi ~/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
# alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~    

刷新

[root@k8s home]# source ~/.bashrc

仍不生效的話,請(qǐng)?jiān)诿钋凹由稀癨”

[root@k8s home]# \cp -rf gitlab-12-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-12-2-stable-zh/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-12-2-stable-zh/tmp’

這里的錯(cuò)誤桐罕,忽略脉让,因?yàn)橹耙呀?jīng)設(shè)置gitlab的root密碼了

  • 重新配置gitlab
[root@k8s home]# gitlab-ctl reconfigure
  • 重置gitlab
[root@k8s home]# gitlab-ctl restart 
ok: run: alertmanager: (pid 26363) 0s
ok: run: gitaly: (pid 26378) 0s
ok: run: gitlab-monitor: (pid 26400) 0s
ok: run: gitlab-workhorse: (pid 26417) 1s
ok: run: grafana: (pid 26426) 0s
ok: run: logrotate: (pid 26443) 1s
ok: run: nginx: (pid 26451) 0s
ok: run: node-exporter: (pid 26537) 0s
ok: run: postgres-exporter: (pid 26547) 1s
ok: run: postgresql: (pid 26561) 0s
ok: run: prometheus: (pid 26571) 1s
ok: run: redis: (pid 26584) 0s
ok: run: redis-exporter: (pid 26589) 1s
ok: run: sidekiq: (pid 26597) 0s
ok: run: unicorn: (pid 26609) 1s
[root@k8s home]# 
  • 進(jìn)入界面,請(qǐng)耐心等待功炮,仍會(huì)出502錯(cuò)誤提示溅潜。此時(shí)界面已不再是英文,可見(jiàn)漢化成功薪伏,耶~~~


Gitlab基本命令

sudo gitlab-ctl start    # 啟動(dòng)所有 gitlab 組件滚澜;并加入開(kāi)機(jī)啟動(dòng)項(xiàng)里面:/etc/rc.local
sudo gitlab-ctl stop     # 停止所有 gitlab 組件;
sudo gitlab-ctl restart   # 重啟所有 gitlab 組件嫁怀;
sudo gitlab-ctl status    # 查看服務(wù)狀態(tài)设捐;
sudo gitlab-ctl tail       # 查看日志借浊;

安裝GitLab服務(wù)器配置注意事項(xiàng),502很大程度上是因?yàn)镃PU萝招、內(nèi)存耗盡導(dǎo)致

安裝硬件需求

CPU
1 核心CPU最多支持100個(gè)用戶蚂斤,所有的workers和后臺(tái)任務(wù)都在同一個(gè)核心工作這將導(dǎo)致GitLab服務(wù)響應(yīng)會(huì)有點(diǎn)緩慢。
2核心 支持500用戶即寒,這也是官方推薦的最低標(biāo)準(zhǔn)橡淆。
4 核心支持2,000用戶。
8 核心支持5,000用戶母赵。
16 核心支持10,000用戶逸爵。
32 核心支持20,000用戶。
64 核心支持40,000用戶凹嘲。
如果想支持更多用戶师倔,可以使用 集群式架構(gòu)
Memory
安裝使用GitLab需要至少4GB可用內(nèi)存(RAM + Swap)! 由于操作系統(tǒng)和其他正在運(yùn)行的應(yīng)用也會(huì)使用內(nèi)存, 所以安裝GitLab前一定要注意當(dāng)前服務(wù)器至少有4GB的可用內(nèi)存. 少于4GB內(nèi)存會(huì)導(dǎo)致在reconfigure的時(shí)候出現(xiàn)各種詭異的問(wèn)題, 而且在使用過(guò)程中也經(jīng)常會(huì)出現(xiàn)500錯(cuò)誤.
1GB 物理內(nèi)存 + 3GB 交換分區(qū) 是最低的要求,但我們 強(qiáng)烈反對(duì) 使用這樣的配置周蹭。 查看下面unicorn worker章節(jié)獲取更多建議趋艘。
2GB 物理內(nèi)存 + 2GB 交換分區(qū) 支持100用戶,但服務(wù)響應(yīng)會(huì)很慢凶朗。
4GB 物理內(nèi)存 支持100用戶瓷胧,也是 官方推薦 的配置。
8GB 物理內(nèi)存 支持 1,000 用戶棚愤。
16GB 物理內(nèi)存 支持 2,000 用戶搓萧。
32GB 物理內(nèi)存 支持 4,000 用戶。
64GB 物理內(nèi)存 支持 8,000 用戶宛畦。
128GB 物理內(nèi)存 支持 16,000 用戶瘸洛。
256GB 物理內(nèi)存 支持 32,000 用戶。
如果想支持更多用戶次和,可以使用 集群式架構(gòu)
即使你服務(wù)器有足夠多的RAM反肋, 也要給服務(wù)器至少分配2GB的交換分區(qū)。 因?yàn)槭褂媒粨Q分區(qū)可以在你的可用內(nèi)存波動(dòng)的時(shí)候降低GitLab出錯(cuò)的幾率踏施。

注意: Sidekiq的25個(gè)workers在查看進(jìn)程(top或者h(yuǎn)top)的時(shí)候會(huì)發(fā)現(xiàn)它會(huì)單獨(dú)顯示每個(gè)worker石蔗,但是它們是共享內(nèi)存分配的,這是因?yàn)镾idekiq是一個(gè)多線程的程序畅形。 詳細(xì)內(nèi)容查看下面關(guān)于Unicorn workers 的介紹抓督。

注意事項(xiàng)

一、首先看看配置文件/etc/gitlab/gitlab.rb 中的端口號(hào)是否被占用
二束亏、另外一個(gè)原因是gitlab占用內(nèi)存太多,導(dǎo)致服務(wù)器崩潰
內(nèi)存問(wèn)題 解決辦法,啟用swap分區(qū)阵具,步驟如下:

cat /proc/swaps 查看swap分區(qū)是否啟動(dòng)(無(wú))
創(chuàng)建 :
dd if=/dev/zero of=/data/swap bs=512 count=8388616

創(chuàng)建swap大小為bs*count=4294971392(4G)碍遍;

通過(guò)mkswap命令將上面新建出的文件做成swap分區(qū)

mkswap /data/swap

查看內(nèi)核參數(shù)vm.swappiness中的數(shù)值是否為0定铜,如果為0則根據(jù)實(shí)際需要調(diào)整成60

查看: cat /proc/sys/vm/swappiness
設(shè)置: sysctl -w vm.swappiness=60
若想永久修改,則編輯/etc/sysctl.conf文件怕敬,改文件中有vm.swappiness變量配置揣炕,默認(rèn)為0
啟用分區(qū)

swapon /data/swap

echo “/data/swap swap swap defaults 0 0” >> /etc/fstab

再次使用cat /proc/swaps 查看swap分區(qū)是否啟動(dòng)

重啟gitlab。

卸載gitlab

  • 清理命令
sudo gitlab-ctl uninstall
sudo gitlab-ctl cleanse
sudo gitlab-ctl remove-accounts
  • 停止gitlab
gitlab-ctl stop
  • 卸載gitlab
rpm -e gitlab-ce
  • 查看進(jìn)程
ps aux | grep gitlab
kill -9 xxx
殺掉守護(hù)進(jìn)程
  • 清理殘余文件
find / -name gitlab | xargs rm -rf
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末东跪,一起剝皮案震驚了整個(gè)濱河市畸陡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虽填,老刑警劉巖丁恭,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異斋日,居然都是意外死亡牲览,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門恶守,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)第献,“玉大人,你說(shuō)我怎么就攤上這事兔港∮购粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵衫樊,是天一觀的道長(zhǎng)飒赃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)橡伞,這世上最難降的妖魔是什么盒揉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮兑徘,結(jié)果婚禮上刚盈,老公的妹妹穿的比我還像新娘。我一直安慰自己挂脑,他們只是感情好藕漱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著崭闲,像睡著了一般肋联。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刁俭,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天橄仍,我揣著相機(jī)與錄音,去河邊找鬼。 笑死侮繁,一個(gè)胖子當(dāng)著我的面吹牛虑粥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宪哩,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼娩贷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了锁孟?” 一聲冷哼從身側(cè)響起彬祖,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎品抽,沒(méi)想到半個(gè)月后储笑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桑包,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年南蓬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑了。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赘方,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弱左,到底是詐尸還是另有隱情窄陡,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布拆火,位于F島的核電站跳夭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏们镜。R本人自食惡果不足惜币叹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望模狭。 院中可真熱鬧颈抚,春花似錦、人聲如沸嚼鹉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锚赤。三九已至匹舞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間线脚,已是汗流浹背赐稽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工叫榕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人又憨。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓翠霍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蠢莺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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