Windows Server通過(guò)寶塔面板安裝 Snipe-IT資產(chǎn)管理系統(tǒng)

一硅卢、安裝寶塔面板

1、下載寶塔面板

??地址:https://www.bt.cn/new/download.html

2藏杖、安裝

??根據(jù)提示安裝即可将塑。

二、寶塔面板初始配置

1制市、啟動(dòng)

??雙擊桌面上的寶塔面板圖標(biāo)抬旺,執(zhí)行程序。

2祥楣、初始配置

(1)域名

??可以不填开财,如果需要汉柒,后期可以再補(bǔ)充。
??如果在局域網(wǎng)使用责鳍,可以直接使用IP Address訪問(wèn)寶塔面板的管理界面碾褂。當(dāng)然也可以通過(guò)修改hosts文件來(lái)達(dá)到域名訪問(wèn)寶塔面板的目的,但不需要在此處設(shè)置历葛。除非在互聯(lián)網(wǎng)上需要直接訪問(wèn)寶塔面板的管理界面(相信出于安全的考慮正塌,一般沒(méi)人這么做)并且購(gòu)買有域名可用,否則此處都可以不填恤溶。

(2)端口

??默認(rèn)是8888乓诽,如果與服務(wù)器上的其他程序沖突,可以在此處更改咒程。一般沖突時(shí)會(huì)有提示鸠天。

(3)安全入口

??登錄寶塔面板的管理界面時(shí),默認(rèn)地址是http://ip地址:端口號(hào)/安全入口的格式帐姻。
例如:

http://127.0.0.1:8888/**admin**

??此處的安全入口即為admin稠集,可以根據(jù)自己意思改成其他的,比如default饥瓷,那登錄地址就變?yōu)椋?/p>

http://127.0.0.1:8888/default

(4)授權(quán)IP

??可訪問(wèn)寶塔面板管理界面的IP地址白名單剥纷。

(5)用戶名

??登錄寶塔面板管理界面的用戶名,根據(jù)需要自己設(shè)置呢铆,但不能使用admin晦鞋。

(6)密碼

??登錄寶塔面板管理界面的密碼。

3刺洒、訪問(wèn)面板的管理界面

(1)本機(jī)訪問(wèn)

??如果在安裝寶塔面板的本機(jī)(通常是服務(wù)器)訪問(wèn)鳖宾,可以直接使用http://127.0.0.1:端口號(hào)/安全入口的格式直接在瀏覽器中打開(kāi)。
??也可以使用http://localhost:端口號(hào)/安全入口的地址直接在瀏覽器中打開(kāi)逆航。如果是使用localhost代替127.0.0.1訪問(wèn)失敗鼎文,可以在hosts中做一下解析。

(2)在其他電腦上遠(yuǎn)程訪問(wèn)

??跟上面的“通過(guò)本機(jī)”訪問(wèn)一樣因俐,只不過(guò)把IP Address改為安裝寶塔面板的機(jī)器(服務(wù)器)的IP Address即可拇惋。

三、登錄寶塔面板的管理界面

??直接輸入初始配置中帳號(hào)密碼登錄即可抹剩。



??登錄后會(huì)推薦一些應(yīng)用撑帖,可以直接叉掉,后期自行安裝澳眷。

四胡嘿、在寶塔面板中安裝應(yīng)用

1、安裝并設(shè)置PHP

(1)安裝

??①按上圖所示在寶塔面板的管理界面中點(diǎn)擊軟件商店——運(yùn)行環(huán)境钳踊,找到PHP-7.4衷敌,點(diǎn)擊后面的安裝勿侯,會(huì)彈出如下兩圖所示的確認(rèn)對(duì)話框。

??②依次點(diǎn)擊安裝缴罗、確定按鈕助琐,繼續(xù)到下一步,開(kāi)始安裝面氓。

??③安裝完成后會(huì)提示當(dāng)前沒(méi)有任務(wù)兵钮!,如下圖舌界。

??按F5鍵刷新頁(yè)面掘譬,出現(xiàn)如下圖所示的界面,即為安裝完畢呻拌,并且已經(jīng)執(zhí)行屁药。


  **注意:此處之所以選擇安裝PHP7.4的版本,是因?yàn)橄旅嫘枰惭b的phpMyAdmin需要該版本的支持柏锄。而單獨(dú)安裝目前寶塔面板中較新的PHP8.0和PHP8.1兩個(gè)版本會(huì)均會(huì)導(dǎo)致phpMyAdmin安裝失敗。實(shí)際操作中發(fā)現(xiàn)如果單獨(dú)只安裝PHP7.4版本复亏,后面安裝Snipe-IT時(shí)趾娃,又會(huì)導(dǎo)致網(wǎng)頁(yè)不能打開(kāi)。
所以下面需要重復(fù)以上步驟再安裝PHP8.1版本缔御。所以同時(shí)安裝PHP7.4和PHP8.1版本抬闷。

(2)重復(fù)以上步驟安裝PHP8.1版本,步驟略耕突。

(3)設(shè)置

??在上圖中找到安裝好的PHP8.1笤成,點(diǎn)擊后面的設(shè)置,進(jìn)入到PHP設(shè)置界面眷茁。
說(shuō)明:
  PHP8.1是為Snipe-IT準(zhǔn)備的炕泳,所以只需要對(duì)應(yīng)設(shè)置PHP8.1即可。而PHP7.4是為phpMyAdmin服務(wù)的上祈,沒(méi)有此要求培遵,可以不設(shè)置。

①解禁部分必需的PHP函數(shù)

??查詢網(wǎng)上的資料說(shuō)登刺,PHP包管理工具Composer需要使用部分被禁用掉的有風(fēng)險(xiǎn)的函數(shù)籽腕,包括putenv、proc_open纸俭、pcntl_signal皇耗、proc_get_status,需要對(duì)這些函數(shù)解除禁用揍很。
  a.在設(shè)置界面中點(diǎn)擊禁用函數(shù)

b.依次找到上面所說(shuō)的幾個(gè)函數(shù)抗蠢,點(diǎn)擊后面的刪除二庵,把對(duì)應(yīng)的函數(shù)刪除掉。如果找不到某個(gè)函數(shù)壕翩,說(shuō)明該函數(shù)沒(méi)有在禁用列表中,可以不予理會(huì)傅寡。

②安裝擴(kuò)展


  點(diǎn)擊安裝擴(kuò)展放妈,在擴(kuò)展中找到fileinfo,點(diǎn)擊后面的安裝即可荐操。這個(gè)版本是默認(rèn)已經(jīng)安裝好的芜抒,可以忽略本步驟。

③將PHP安裝目錄添加到PATH路徑中去

??安裝路徑位于寶塔面板安裝目錄中的php\xx目錄中托启。其中xx是PHP的版本號(hào)宅倒,比如本例中的PHP版本8.1,則此處的xx81屯耸,本例中的寶塔面板安裝在d:\software中拐迁,則PHP的完整路徑為d:\SoftWare\BtSoft\php\81(前面安裝的php74并不是給Snipe-IT使用的,所以不需要添加到path環(huán)境變量中疗绣,而且這影響到下面Key的生成)线召。
  在服務(wù)器中右擊此電腦——屬性——高級(jí)系統(tǒng)設(shè)置——高級(jí)標(biāo)簽頁(yè)——環(huán)境變量——系統(tǒng)變量——雙擊path——在編輯環(huán)境變量對(duì)話框中添加d:\SoftWare\BtSoft\php\81,最后依次點(diǎn)擊確定完成操作多矮。
通常需要重啟電腦或注銷一下用戶才能使用該環(huán)境變量生效缓淹。

2、安裝WEB運(yùn)行環(huán)境Nginx

(1)安裝

與前面安裝PHP的步驟相同塔逃,具體如下圖讯壶,不一一詳述。


3湾盗、安裝MySQL

方法同上伏蚊。



  需要注意的是,在安裝過(guò)程中要選擇一下需要安裝的MySQL的版本號(hào)淹仑,如下圖丙挽,這兒選擇8.0版本。


222.PNG

4匀借、安裝phpMyAdmin

??phpMyAdmin是一款WEB端的MySQL管理工具颜阐。如果不需要訪問(wèn)MySQL數(shù)據(jù)庫(kù),可以不安裝吓肋。
  安裝方法與上面應(yīng)用相同凳怨,如下圖。


  安裝過(guò)程中注意選擇版本,我個(gè)人習(xí)慣使用最新版本肤舞,如下圖紫新。

  注意:如果phpMyAdmin安裝過(guò)程結(jié)束刷新后,phpMyAdmin還是出現(xiàn)如圖所示的樣子李剖,說(shuō)明安裝沒(méi)有成功芒率,這時(shí)候就要查看一下安裝日志示中的報(bào)錯(cuò)提示是否是因?yàn)榍懊姘惭b了phpMyAdmin不支持的php版本。

五篙顺、下載Snipe-IT偶芍,并在寶塔面板中做相應(yīng)設(shè)置

1、下載Snipe-IT

??Snipe-IT是一款開(kāi)源的軟件德玫,發(fā)布在github上匪蟀。下載方法有兩種。分別是直接到github.com上下載壓縮包宰僧,或是通過(guò)git命令的方式進(jìn)行下載材彪。

(1)直接在github.com上下載

??按下圖所示直接訪問(wèn)https://github.com/snipe/snipe-it,按下圖所示直接下載zip包琴儿。

說(shuō)明:
  這兒要說(shuō)一下段化,壓縮包解壓之前,需要先確定安裝位置造成。Linux中一般網(wǎng)站都是存放在/www/wwwroot/下穗泵,而Windows使用IIS則一般是將網(wǎng)站放在c:\inetpub\wwwroot目錄中。這兒結(jié)合兩種情況以及Windows本身的規(guī)則和磁盤占用情況谜疤,在D盤新建d:\wwwroot文件夾用來(lái)存入網(wǎng)站。然后再新建d:\wwwroot\snipe-it文件夾现诀。然后將下載的壓縮包解壓到d:\wwwroot\snipe-it中去夷磕。注意,壓縮包打開(kāi)時(shí)仔沿,里面嵌套了一層文件夾坐桩,只需要把文件夾中的所有文件解壓到相應(yīng)位置即可,不需要連最上層的嵌套文件夾一起解壓封锉。具體路徑如下圖绵跷。

說(shuō)明:
??此處的d:\wwwroot\snipe-it并不是最終的安裝文件夾。

(2)使用git命令下載

說(shuō)明:
   Git是一個(gè)程序員常用的項(xiàng)目版本控制系統(tǒng)成福,可以直接對(duì)github等開(kāi)源代碼托管網(wǎng)站進(jìn)行上傳碾局、下載、同步奴艾、比較等操作净当。有圖形界面和命令行界面。此處沒(méi)有必要安裝一個(gè)完整的Git系統(tǒng),只需要下載個(gè)便攜版本即可像啼。

①下載安裝Git

??下載地址:https://git-scm.com/download/win
  根據(jù)Windows的版本來(lái)選擇對(duì)應(yīng)的32位或是64位的便攜版本俘闯。如下圖

  下載得到的是一個(gè)類似于PortableGit-2.36.1-64-bit.7z.exe的自解壓的壓縮包。
  直接雙擊或是用WinRAR之類的壓縮軟件直接打開(kāi)忽冻,均可以執(zhí)行解壓操作真朗。不管解壓后這個(gè)目錄具體的位置放在哪里,都要把這個(gè)目錄中的cmd文件夾添加到windows的環(huán)境變量path中去僧诚,這樣可以在cmd環(huán)境中的任何位置直接執(zhí)行g(shù)it.exe命令遮婶。
  臨時(shí)添加的話可以在cmd中使用以下代碼實(shí)現(xiàn):

path %path%;D:\SoftWare\PortableGit\cmd

??其中D:\SoftWare\PortableGit\cmd根據(jù)Git實(shí)際的安裝位置進(jìn)行修改。

②通過(guò)git命令下載Snipe-IT

??直接在CMD命令行中執(zhí)行以下命令

git clone https://github.com/snipe/snipe-it d:\wwwroot\snipe-it

??其中的d:\wwwroot\snipe-it僅是本例中的地址振诬,具體可根據(jù)需要來(lái)決定蹭睡。
??該命令執(zhí)行后,正常情況下會(huì)出現(xiàn)類似下面的安裝過(guò)程赶么。

C:\Users\Administrator>git clone https://github.com/snipe/snipe-it d:\wwwroot\snipe-it
Cloning into 'd:\wwwroot\snipe-it'...
remote: Enumerating objects: 144604, done.
remote: Counting objects: 100% (1339/1339), done.
remote: Compressing objects: 100% (444/444), done.
remote: Total 144604 (delta 952), reused 1259 (delta 895), pack-reused 143265
Receiving objects: 100% (144604/144604), 142.61 MiB | 1.01 MiB/s, done.
Resolving deltas: 100% (95529/95529), done.
Updating files: 100% (6536/6536), done.

C:\Users\Administrator>

??但因?yàn)镚itHub網(wǎng)站在國(guó)內(nèi)有時(shí)會(huì)不能訪問(wèn)或訪問(wèn)緩慢等情況肩豁,有可能導(dǎo)致下載不成功的情況出現(xiàn)。這種情況請(qǐng)調(diào)整網(wǎng)絡(luò)環(huán)境辫呻。

2清钥、在寶塔面板中添加網(wǎng)站

(1)寶塔面板中點(diǎn)擊如下圖如示的網(wǎng)站,切換到網(wǎng)站管理界面放闺。


(2)點(diǎn)擊上圖中的添加網(wǎng)站祟昭,彈出如下圖的添加網(wǎng)站的界面。
  大多數(shù)內(nèi)容參照下圖中的設(shè)置怖侦。

??①域名
  此處必須填寫篡悟,不可以省略。使用什么域名匾寝、IP地址以及使用什么端口來(lái)訪問(wèn)這個(gè)網(wǎng)站就由此處填寫什么來(lái)決定搬葬。當(dāng)然,域名和IP地址必須是真實(shí)有效的艳悔。
  如何填寫急凰,在文本框中未填寫任何內(nèi)容時(shí)有很詳細(xì)的說(shuō)明。如果沒(méi)有域名就填寫IP地址加端口號(hào)的格式猜年。

??①備注
  理論上來(lái)說(shuō)是隨便填寫抡锈,但最好填寫一些有用的信息,比如網(wǎng)站的用途乔外、說(shuō)明等

??②根目錄
  參照Snipe-IT下載時(shí)的實(shí)際存放安裝位置選擇,本例中是d:\wwwroot\snipe床三。寶塔面板會(huì)根據(jù)這兒填寫的內(nèi)容自動(dòng)創(chuàng)建對(duì)應(yīng)的文件夾,并在文件夾中生成.htaccess杨幼、.user.ini勿璃、404.htmlindex.html四個(gè)文件,如下圖补疑。

注意:
  此處輸入的路徑并不是下載時(shí)所使用的d:\wwwroot\snipe-it歧沪。就是因?yàn)槿绻苯邮褂胹nipe-it時(shí),寶塔面板自動(dòng)生成的.htaccess莲组、.user.ini诊胞、404.htmlindex.html四個(gè)文件會(huì)覆蓋掉下載路徑中的同名文件锹杈。

??③FTP
  出于管理的需要可以創(chuàng)建撵孤,但不是必須。本例中因?yàn)榍懊娌](méi)有安裝FTP竭望,同時(shí)實(shí)際使用中有其他的辦法對(duì)文件進(jìn)行管理邪码,所以選擇不創(chuàng)建

??④數(shù)據(jù)庫(kù)
  Snipe-IT支持MySQL咬清,在創(chuàng)建站點(diǎn)時(shí)可以同時(shí)為該站點(diǎn)創(chuàng)建數(shù)據(jù)庫(kù)闭专,所以按如圖所示選擇即可。
  代碼集中有utf-8及utf8mb4的選項(xiàng)旧烧,utf-8是utf8mb4的子集影钉,為了避免實(shí)際使用過(guò)程中出現(xiàn)不可預(yù)知的情況,直接選擇utf8mb4掘剪,從網(wǎng)絡(luò)上所查詢的資料來(lái)看平委,實(shí)際使用過(guò)程中使用utf-8似乎也可以。

??⑤數(shù)據(jù)庫(kù)設(shè)置用戶名夺谁、密碼
  為數(shù)據(jù)庫(kù)創(chuàng)建用戶,并設(shè)置用戶名廉赔、密碼。這個(gè)根據(jù)自己的喜歡來(lái)做就可以了匾鸥。

??⑥程序類型
  沒(méi)什么好說(shuō)的昂勉,這兒不讓改。

??⑦PHP版本
  基本上扫腺,我們?cè)谏厦姘惭b了什么版本的php,這兒就選擇什么版本。

??⑧網(wǎng)站分類
  如果不是網(wǎng)站很多的話村象,這兒無(wú)所謂選不選笆环。而且前面并沒(méi)有創(chuàng)建多個(gè)網(wǎng)站分類,本例中這兒也沒(méi)什么好選的厚者。

(3)提交
  以上內(nèi)容填寫好后,點(diǎn)提交按鈕躁劣,如果出現(xiàn)以下界面說(shuō)明網(wǎng)站創(chuàng)建成功。

直接叉掉上圖的提示框后可以繼續(xù)其他操作库菲。

(4)將新建網(wǎng)站自動(dòng)生成的snipe文件夾刪除账忘,并將d:\wwwroot\snipe-it改為d:\wwwroot\snipe

3、確認(rèn)數(shù)據(jù)庫(kù)是否建立成功

在添加網(wǎng)站時(shí)可以同時(shí)建立數(shù)據(jù)庫(kù)鳖擒,在此我們點(diǎn)擊“數(shù)據(jù)庫(kù)”溉浙,查看數(shù)據(jù)庫(kù)是否建立成功。



  如果數(shù)據(jù)庫(kù)未建立成功蒋荚,可以手工在此處為剛建立的網(wǎng)站建立數(shù)據(jù)庫(kù)戳稽。

4、安裝Composer

??Composer 是 PHP5.3以上 的一個(gè)依賴管理工具期升。根據(jù)在網(wǎng)上找到的資料惊奇,需要安裝。

(1)升級(jí)Composer

??寶塔面板中已經(jīng)集成了Composer的下載安裝操作播赁,我們只需要在寶塔面板中下載安裝即可颂郎。
??①在寶塔面板中點(diǎn)擊網(wǎng)站,然后點(diǎn)擊對(duì)應(yīng)網(wǎng)站后面的設(shè)置容为,如下圖乓序。


??在彈出的界面中點(diǎn)擊Ccomposer,然后點(diǎn)擊下圖界面中的升級(jí)Composer,先將Composer升級(jí)到最新版本舟奠。

??如果有新的版本竭缝,就會(huì)執(zhí)行升級(jí),否則會(huì)提示當(dāng)前已經(jīng)是最新的版本沼瘫。

(2)安裝Composer

??依次按上圖所示填入或選擇各項(xiàng)內(nèi)容抬纸。
  ①PHP版本:自動(dòng)選擇即可耿戚,如果選擇PHP-81會(huì)報(bào)錯(cuò)湿故。
  ②執(zhí)行參數(shù):選擇Install膜蛔。
 √持怼③補(bǔ)充命令:填入--no-dev --prefer-source --ignore-platform-reqs
 ≡砉伞④鏡像源:默認(rèn)阿里源(mirrors.alyyun.com)即可墅茉。
  ⑤執(zhí)行目錄:默認(rèn)為當(dāng)前網(wǎng)站目錄呜呐,具體是什么意思不太清楚就斤,因?yàn)閷?shí)際Composer安裝的位置并不在網(wǎng)站目錄中。我最終是通過(guò)搜索最終在寶塔面板的安裝目錄中的panel\script里同找到composer.phar文件蘑辑。
  最后點(diǎn)擊執(zhí)行會(huì)彈出 如下界面洋机。


  此處等待一會(huì)后會(huì)自動(dòng)開(kāi)始安裝,如下圖洋魂。

  安裝完成后绷旗,叉掉安裝界面即可喜鼓。

六、其它一些設(shè)置

1衔肢、設(shè)置目錄權(quán)限

??從網(wǎng)上的搜索到的資料是需要將網(wǎng)站目錄中的public\uploads和的所有者給www用戶庄岖,同時(shí)賦予www用戶對(duì)于該目錄的完全權(quán)限,其他用戶則只保留讀與執(zhí)行的權(quán)限膀懈。
  該資料的背景中在CentOS7中進(jìn)行Snipe-IT的安裝顿锰,具體到Windows中使用寶塔面板進(jìn)行安裝,需要根據(jù)具體情況處理启搂。

(1)查看Nginx是用什么用戶運(yùn)行

??寶塔面板中點(diǎn)擊軟件商店硼控,在已安裝中找到Nginx,點(diǎn)擊后面的設(shè)置胳赌,如下圖牢撼。


  在彈出的界面中(如下圖),選擇運(yùn)行用戶,查看運(yùn)行用戶是管理員還是'www用戶疑苫。本例中是管理員用戶熏版,個(gè)人理解只要保證管理員用戶能對(duì)public\uploads`文件夾具體完全讀寫權(quán)限,其他用戶(組)具有讀與執(zhí)行權(quán)限即可捍掺。

(2)修改權(quán)限


??在服務(wù)器上撼短,直接在Windows中找到網(wǎng)站目錄中的public\uploads文件夾。

  在文件夾上右擊挺勿,選擇屬性曲横,在彈出的文件夾屬性對(duì)話框中選擇安全標(biāo)簽頁(yè)。按照上面的要求做以下幾項(xiàng)操作:
 〔黄俊①給administrators組賦于讀取禾嫉、寫入、執(zhí)行的權(quán)限蚊丐。
  一般來(lái)說(shuō)熙参,默認(rèn)不需要修改。
 ÷蟊浮②添加everyone用戶,并賦予該用戶讀取與執(zhí)行權(quán)限孽椰,取消寫入權(quán)限。

??具體的操作只是普通的Windows操作凛篙,不作詳細(xì)步驟說(shuō)明黍匾。

2、創(chuàng)建并修改配置文件

(1)創(chuàng)建配置文件

??直接在網(wǎng)站目錄中找到.env.example文件鞋诗,將該文件復(fù)制一份,并改名為.env迈嘹。需要注意的是削彬,如果在資源管理器中直接進(jìn)行修改全庸,會(huì)提示“必須鍵入文件名”的提示,如下圖融痛。這是因?yàn)閃indows中把文件名最后一個(gè).后面的視做擴(kuò)展名壶笼,最后一個(gè).前面的視作文件名,而這個(gè)文件最后一個(gè).前面沒(méi)有任何字符雁刷,Windows認(rèn)為該文件沒(méi)有文件名覆劈,而這是不被允許的。


??此時(shí)可以進(jìn)入到CMD中進(jìn)行修改沛励,具體命令參見(jiàn)下方责语。
??具體到命令中涉及到的路徑,根據(jù)實(shí)際網(wǎng)站路徑來(lái)確認(rèn)目派。

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation坤候。保留所有權(quán)利。

C:\Users\Administrator>d:

D:\>cd D:\wwwroot\snipe

D:\wwwroot\snipe>copy .env.example .env
已復(fù)制         1 個(gè)文件企蹭。

D:\wwwroot\snipe>

(2)修改配置文件

①編輯方法介紹

??直接對(duì)新生成的.env文件進(jìn)行編輯白筹,可以直接使用記事本或是其他文本編輯器對(duì)該文件編輯,也可以直接在寶塔面板的文件中對(duì)該文件進(jìn)行編輯谅摄。


??在上圖所示界面中雙擊.env文件徒河,即可對(duì)該文件進(jìn)行編輯,如下圖送漠。具體操作細(xì)節(jié)略顽照。

②修改內(nèi)容

??見(jiàn)以下代碼中注釋部分。

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_ENV=production
APP_DEBUG=false
APP_KEY=ChangeMe
APP_URL=xxx.xxx.xxx.xxx                              #網(wǎng)站域名
APP_TIMEZONE='Asia/Shanghai'                         #默認(rèn)時(shí)區(qū)
APP_LOCALE=zh-cn                                     #默認(rèn)語(yǔ)言
MAX_RESULTS=500

# --------------------------------------------
# REQUIRED: UPLOADED FILE STORAGE SETTINGS
# --------------------------------------------
PRIVATE_FILESYSTEM_DISK=local
PUBLIC_FILESYSTEM_DISK=local_public

#PRIVATE_FILESYSTEM_DISK=s3_private
#PUBLIC_FILESYSTEM_DISK=s3_public

# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
DB_CONNECTION=mysql
DB_HOST=127.0.0.1                                            #數(shù)據(jù)庫(kù)服務(wù)器地址
DB_DATABASE=null                                             #數(shù)據(jù)庫(kù)名稱
DB_USERNAME=null                                             #數(shù)據(jù)庫(kù)用戶名
DB_PASSWORD=null                                             #數(shù)據(jù)庫(kù)密碼
DB_PREFIX=null
DB_DUMP_PATH='D:\\SoftWare\\BtSoft\\mysql\\MySQL8.0\\bin'    # mysqldump.exe文件路徑
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

# --------------------------------------------
# OPTIONAL: SSL DATABASE SETTINGS
# --------------------------------------------
DB_SSL=false
DB_SSL_IS_PAAS=false
DB_SSL_KEY_PATH=null
DB_SSL_CERT_PATH=null
DB_SSL_CA_PATH=null
DB_SSL_CIPHER=null
……

說(shuō)明 :
  數(shù)據(jù)庫(kù)服務(wù)器地址:網(wǎng)上查到的資料是螺男,這兒要寫清楚網(wǎng)站訪問(wèn)的url棒厘,只有通過(guò)此處填寫的url訪問(wèn)Snipe-it才可以看到上傳的圖片。但實(shí)際測(cè)試過(guò)程中我發(fā)現(xiàn)下隧,在內(nèi)網(wǎng)中(外網(wǎng)沒(méi)有測(cè)試)奢人,此處留空才可以看到正確的圖片。
  關(guān)于DB_DUMP_PATH項(xiàng)淆院,是為了指明mysqldump.exe文件的位置何乎。此處很重要,如果路徑不對(duì)土辩,則使用備份功能時(shí)會(huì)報(bào)錯(cuò)支救。mysqldump.exe是mysql中的一個(gè)可執(zhí)行文件,具體位置根據(jù)安裝的mysql版本不同會(huì)有些區(qū)別拷淘。一個(gè)笨方法就是直接通過(guò)文件搜索找到該文件的位置各墨,將路徑填入此處。本例中的MySQL也是通過(guò)寶塔面板安裝的启涯。具體路徑如上面代碼中所示贬堵。注意恃轩,填寫時(shí),分隔符應(yīng)該使用\\黎做,而不是單個(gè)的\寝凌,此處與正常路徑表達(dá)方式不一樣裕偿。

3、生成Key

(1)先在php安裝目錄(d:\SoftWare\BtSoft\php\74)中新建composer.bat批處理文件,內(nèi)容如下:

@echo off
php D:\SoftWare\BtSoft\panel\script\composer.phar

(2)在cmd中切換d:\wwwroot\snipe為當(dāng)前文件夾萎馅,并執(zhí)行生成key的命令渴肉。

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation命咐。保留所有權(quán)利壹堰。

C:\Users\Administrator>d:

D:\>cd wwwroot\snipe

D:\wwwroot\snipe>php artisan key:generate
**************************************
*     Application In Production!     *
**************************************

 Do you really wish to run this command? (yes/no) [no]:
 > yes

Application key set successfully.

D:\wwwroot\snipe>

注意:
  代碼中的php artisan key:generate一行中的php是指PHP安裝目錄中的php.exe文件,此處一定要保證執(zhí)行的是php8.1版本安裝目錄中的php.exe程序楣铁。這個(gè)在前面講到php安裝時(shí)玖雁,只添加PHP8.1版本的安裝目錄到PATH環(huán)境變量,就是為了保證此處的命令執(zhí)行盖腕。

(3)確認(rèn)key是否生成成功

??打印網(wǎng)站目錄中的.env文件赫冬,查看APP_KEY=項(xiàng)后面是否如下面代碼中的內(nèi)容,如果是即說(shuō)明key生成成功溃列。

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:tIcOuGKfI5Nt0UqeRqxxxh7nUyyy3ytF+//O2yM7wX0=
APP_URL=127.0.0.1
APP_TIMEZONE='Asia/Shanghai'
APP_LOCALE=zh-cn
MAX_RESULTS=500

(4)關(guān)于key

??我在網(wǎng)上找了關(guān)于php artisan key:generate命令以及這個(gè)Key的作用劲厌,但大多數(shù)都是照搬自官網(wǎng)的解釋,引用如下:

在部署項(xiàng)目的時(shí)候必須執(zhí)行听隐,尤其是從 git 上拉下來(lái)的項(xiàng)目补鼻,需要手動(dòng)配置 .env 文件。
php artisan key:generate雅任,項(xiàng)目中所有的的 OpenSSL 加密都是依賴它生成的风范,包括 Cookie,Session沪么,還有 JWT 這些組件硼婿。
所以如果你有生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境,最好都使用命令生成 key禽车,避免重復(fù)寇漫,而且 key 一旦泄露項(xiàng)目就危險(xiǎn)了。
話又說(shuō)回來(lái)殉摔,如果沒(méi)有配置 app_key 項(xiàng)目是運(yùn)行不起來(lái)的州胳。
生成后的key位置在.env里面。

??我本人對(duì)php并不了解逸月,上面的這段話也不是很理解栓撞。總結(jié)就是這個(gè)key沒(méi)有不行碗硬。如果有人能幫我詳細(xì)說(shuō)一下是什么意思瓤湘,非常感謝捌归。

4、設(shè)置網(wǎng)站的運(yùn)行目錄

??(1)在寶塔面板中點(diǎn)擊網(wǎng)站岭粤,如下圖,再點(diǎn)擊相應(yīng)網(wǎng)站后面的設(shè)置特笋。


??(2)在彈出的界面中點(diǎn)擊網(wǎng)站目錄剃浇,然后將運(yùn)行目錄改為如下圖的public

??(3)最后點(diǎn)擊后面的保存按鈕猎物。

5虎囚、對(duì)網(wǎng)站配置文件進(jìn)行配置

??在上圖中點(diǎn)擊配置文件,然后如下圖輸入以下代碼蔫磨。最后點(diǎn)擊保存按鈕即可淘讥。


  此處需要注意是上圖中綠框中的代碼fastcgi_pass 127.0.0.1:20081;,此處20081端口并不是固定的堤如。如果填寫了不正確的端口蒲列,會(huì)導(dǎo)致網(wǎng)站不能訪問(wèn)。
  正確的端口可通過(guò)如下方法查詢搀罢。

  在寶塔面板中點(diǎn)擊軟件商店——已安裝蝗岖,找到Nginx,然后點(diǎn)擊右邊的文件夾圖標(biāo)榔至,會(huì)跳轉(zhuǎn)到如下界面抵赢。

  在上圖所示界面中,依次打開(kāi)D:/SoftWare/BtSoft/nginx/conf/php文件夾唧取,找到81.conf文件(根據(jù)所使用的php版本來(lái)決定是哪個(gè)文件铅鲤,本例中Snipe-IT使用的是php8.1版本的php,所以找到81.conf文件)枫弟,直接雙擊邢享,打開(kāi)該文件,如下圖媒区。

  如上圖紅框中的內(nèi)容所示驼仪,此處端口即20081,將此端口按上面所述填入到配置文件的相應(yīng)位置即可袜漩。

server 
{
    listen 99;
    server_name 10.5.2.11 127.0.0.1; 
    index index.php index.html index.htm default.php default.htm default.html;
    root d:/wwwroot/snipe/public/;

    location ~ \.php$ {
        root d:/wwwroot/snipe/public/;
        try_files $uri $uri/ =404;
        fastcgi_pass   127.0.0.1:20081;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
     {
        expires 30d;
        error_log off;
        access_log /temp/null;
     }

    location ~ .*\.(js|css)?$
    {
        expires 12h;
        error_log off;
        access_log /temp/null;
    }
    

    #反代清理緩存配置
    location ~ /purge(/.*) {
        proxy_cache_purge cache_one $1$is_args$args;
    }
    
    #proxy 反向代理
    include proxy/10.5.2.11/*.conf;


    #REWRITE-START
    include rewrite/10.5.2.11/*.conf;
    #REWRITE-END

    #redirect 重定向
    include redirect/10.5.2.11/*.conf;

    #禁止訪問(wèn)的文件或目錄
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    #一鍵申請(qǐng)SSL證書(shū)驗(yàn)證目錄相關(guān)設(shè)置
    location ~ \.well-known{
        allow all;
    }

    access_log  D:/SoftWare/BtSoft/wwwlogs/10.5.2.11.log;
    error_log  D:/SoftWare/BtSoft/wwwlogs/10.5.2.11.error.log;
}

6绪爸、設(shè)置偽靜態(tài)

(1)在上圖所示界面中點(diǎn)擊偽靜態(tài),在文本框中輸入如下圖所示代碼宙攻,最后點(diǎn)擊保存奠货。


??以上代碼如下,可復(fù)制座掘。

if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
    rewrite (.*) /index.php;
}

??實(shí)測(cè)递惋,如果偽靜態(tài)中不設(shè)置該段代碼柔滔,保留空白,網(wǎng)站也可以運(yùn)行萍虽,但在導(dǎo)入數(shù)據(jù)時(shí)會(huì)報(bào)錯(cuò)睛廊。

七、安裝Snipe-IT

??以上的工作做完杉编,就可以正式安裝Snipe-IT了超全。

??1、直接在瀏覽器中訪問(wèn)建站時(shí)錄入的域名(如下圖)邓馒。


  本例中為http://xxx.xxx.xxx.xxx:99/setup嘶朱,出于安全考慮,此處具體的IP地址做了打碼處理光酣。
  如果前面安裝沒(méi)有問(wèn)題疏遏,此時(shí)訪問(wèn)以上url后會(huì)出現(xiàn)以下界面。

  此處對(duì)Snipe-IT的安裝環(huán)境做了一個(gè)檢測(cè)救军,本例中最后一項(xiàng)的Email必須在點(diǎn)擊Sent Test做發(fā)送測(cè)試成功才會(huì)顯示代表通過(guò)的财异。
  Email的相關(guān)配置在.env中,具體參見(jiàn)下面唱遭。
  打開(kāi).env文件宝当,找到如下的配置內(nèi)容,進(jìn)行對(duì)應(yīng)的修改即可胆萧。
  不配置Email相關(guān)內(nèi)容庆揩,此處點(diǎn)擊Send Test也會(huì)測(cè)試失敗,但并不會(huì)影響Snipe-IT的安裝與使用跌穗。

# --------------------------------------------
# REQUIRED: OUTGOING MAIL SERVER SETTINGS
# --------------------------------------------
MAIL_DRIVER=smtp
MAIL_HOST=email-smtp.us-west-2.amazonaws.com    #服務(wù)器地址
MAIL_PORT=587                                   #SMTP端口
MAIL_USERNAME=YOURUSERNAME                      #用戶名
MAIL_PASSWORD=YOURPASSWORD                      #密碼
MAIL_ENCRYPTION=null                            #是否加密订晌,如果是null代表不加密,否則可以根據(jù)加密方式填寫蚌吸,比如ssl
MAIL_FROM_ADDR=you@example.com                  #發(fā)送郵件的地址
MAIL_FROM_NAME='Snipe-IT'                       #發(fā)送郵件顯示的發(fā)送人
MAIL_REPLYTO_ADDR=you@example.com               #接受郵件的地址
MAIL_REPLYTO_NAME='Snipe-IT'                    #接受郵件的接收人
MAIL_AUTO_EMBED_METHOD='attachment' 

??2锈拨、點(diǎn)擊以上界面的中的Next:Create Database Tables進(jìn)入下一步,在數(shù)據(jù)庫(kù)中創(chuàng)建表羹唠,如下圖奕枢。


??3、繼續(xù)點(diǎn)擊上圖中右下角的general.setup_migrations)create_user佩微,為Snipe-IT創(chuàng)建用戶缝彬,如下圖。

??圖中紅框框起來(lái)的部分是必填項(xiàng)目哺眯。
??(1)站點(diǎn)名稱:為這個(gè)系統(tǒng)起個(gè)名稱谷浅,這個(gè)名稱會(huì)顯示在主頁(yè)上。系統(tǒng)安裝完成后仍舊可以修改。
??(2)默認(rèn)語(yǔ)言:如果是中文用戶一疯,此處改為Chinese Simplified撼玄。系統(tǒng)安裝完成后仍舊可以修改。
??(3)默認(rèn)貨幣:如果要選擇人民幣墩邀,此處輸入RMB.系統(tǒng)安裝完成后仍舊可以修改掌猛。
??(4)生成自動(dòng)遞增的資產(chǎn)標(biāo)簽:我的理解是資產(chǎn)編號(hào)自動(dòng)加1,所以此處我是勾選的眉睹。僅供參考留潦。系統(tǒng)安裝完成后仍舊可以修改。
??(5)完整多企業(yè)支持:我的理解可以一套系統(tǒng)服務(wù)于多個(gè)企業(yè)主體辣往,建立多個(gè)賬套。根據(jù)需要選擇是否打勾殖卑。系統(tǒng)安裝完成后仍舊可以修改站削。
??(6)前綴(可選):我還不太清楚具體使用中前綴的相關(guān)情況。系統(tǒng)安裝后仍舊可以修改孵稽。
??(7)電子郵件域名:電子郵件地址中@符號(hào)后面的部分许起。
??(8)電子郵件格式:根據(jù)喜好選一個(gè)吧。
??(9)名字:
??(10)姓氏:
??(11)郵箱:綁定這個(gè)帳戶的郵箱菩鲜,以后系統(tǒng)中的相關(guān)信息可以發(fā)送到該郵箱园细。
??(12)用戶名:就是用戶名,這個(gè)要好好起個(gè)接校。該用戶默認(rèn)將是超級(jí)用戶猛频。
??(13)密碼:
??(14)確認(rèn)密碼:
??(15)Email my credentials to the email address above:此帳戶建立后,將相關(guān)憑據(jù)發(fā)到上面填寫的對(duì)應(yīng)的電子郵箱中蛛勉。
??4鹿寻、點(diǎn)擊上圖下方的Next:Save User,進(jìn)入系統(tǒng)诽凌,如下圖毡熏。

??至此,所有安裝步驟完成侣诵。

八痢法、關(guān)于一些自定義的功能。

??Snipe是一個(gè)開(kāi)源軟件杜顺,可能對(duì)代碼進(jìn)行一些修改實(shí)現(xiàn)一些簡(jiǎn)單的功能财搁。以下是幾個(gè)摸索出來(lái)的地方可以進(jìn)行一些簡(jiǎn)單修改。

1躬络、中文修改

??網(wǎng)站默認(rèn)目錄下的resources\lang\zh-cn\general.php文件中定義了大量的中文翻譯妇拯,對(duì)于翻譯不準(zhǔn)確的地方,可以在這兒進(jìn)行修改。改的時(shí)候越锈,直接修改中文部分就行了仗嗦,=>前面的部分不要?jiǎng)印?br>   比如:把借出修改為領(lǐng)用
  比如:在查看用戶中的打印所有已分配資產(chǎn)中的管理員簽字改為部門主管簽名甘凭。(下面代碼中已經(jīng)改了)

return [
    'accessories'           => '附屬品',
    'activated'             => '已激活',
    'accessory'             => '附屬品',
    'accessory_report'      => '配件報(bào)告',
    'action'                => '操作',
    'activity_report'       => '活動(dòng)報(bào)告',
    'address'               => '地址',
    'admin'                 => '管理員',
    'administrator'         => '管理員',
    'add_seats'             => '已增加空位',
    'all_assets'            => '所有資產(chǎn)',
    'all'                   => '所有',
    'archived'              => '已存檔',
    'asset_models'          => '資產(chǎn)型號(hào)',
    'asset_model'           => '模型',
    'asset'                 => '資產(chǎn)',
    'asset_report'          => '資產(chǎn)報(bào)備',
    'asset_tag'             => '資產(chǎn)標(biāo)簽',
    'asset_tags'            => '資產(chǎn)標(biāo)簽',
    'assets_available'      => '可用資產(chǎn)',
    'accept_assets'         => '接受資產(chǎn):名稱',
    'accept_assets_menu'    => '接受資產(chǎn)',
    'audit'                 => '審計(jì)',
    'audit_report'          => '審核日志',
    'assets'                => '資產(chǎn)',
    'assigned_to'           => '借出給:name的資產(chǎn)',
    'avatar_delete'         => '刪除頭像',
    'avatar_upload'         => '上傳頭像',
    'back'                  => '后退',
    'bad_data'              => '未發(fā)現(xiàn)任何東西稀拐,是否數(shù)據(jù)錯(cuò)誤?',
    'bulkaudit'             => '批量審核',
    'bulkaudit_status'      => '盤點(diǎn)狀態(tài)',
    'bulk_checkout'         => '批量借出',
    'bulk_edit'             => '批量編輯',
    'bulk_delete'           => '批量刪除',
    'bulk_actions'          => '批量操作',
    'bulk_checkin_delete'   => '批量簽入 & 刪除',
    'bystatus'              => '按狀態(tài)',
    'cancel'                => '取消',
    'categories'            => '目錄',
    'category'              => '類別:',
    'change'                => '歸還/借出',
    'changeemail'           => '更改郵箱',
    'changepassword'        => '修改密碼',
    'checkin'               => '歸還',
    'checkin_from'          => '輸入來(lái)源',
    'checkout'              => '借出',
    'checkouts_count'       => '簽出',
    'checkins_count'        => '簽入',
    'user_requests_count'   => '請(qǐng)求',
    'city'                  => '城市',
    'click_here'            => '點(diǎn)擊此處',
    'clear_selection'       => '清除選擇',
    'companies'             => '公司',
    'company'               => '公司',
    'component'             => '組件',
    'components'            => '組件',
    'complete'              => '完成',
    'consumable'            => '消耗品',
    'consumables'           => '消耗品',
    'country'               => '國(guó)家',
    'create'                => '新增',
    'created'               => '項(xiàng)目已創(chuàng)建',
    'created_asset'         => '新建資產(chǎn)',
    'created_at'            => '新增于',
    'created_by'            => '創(chuàng)建者',
    'record_created'        => '記錄已創(chuàng)建',
    'updated_at'            => '更新日期',
    'currency'              => 'RMB', // this is deprecated
    'current'               => '當(dāng)前',
    'current_password'      => '當(dāng)前密碼',
    'customize_report'      => '自定義報(bào)告',
    'custom_report'         => '自定義資產(chǎn)報(bào)表',
    'dashboard'             => '控制面板',
    'days'                  => '天數(shù)',
    'days_to_next_audit'    => '距離下一次盤點(diǎn)的天數(shù)',
    'date'                  => '日期',
    'debug_warning'         => '警告!',
    'debug_warning_text'    => '此應(yīng)用程序運(yùn)行在生產(chǎn)模式下的調(diào)試狀態(tài)丹弱。如果您的應(yīng)用程序可以被外部訪問(wèn)德撬,這會(huì)使敏感數(shù)據(jù)暴露。通過(guò)將 <code>.env</code> 文件中的<code>APP_DEBUG</code> 值設(shè)置為 <code>false</code>來(lái) 禁用調(diào)試模式躲胳。',
    'delete'                => '刪除',
    'delete_confirm'        => '是否確定刪除此項(xiàng)',
    'deleted'               => '已刪除',
    'delete_seats'          => '已移除空位',
    'deletion_failed'       => '刪除失敗',
    'departments'           => '部門',
    'department'            => '部門',
    'deployed'              => '已分配',
    'depreciation'          => '折舊',
    'depreciations'         => '折舊',
    'depreciation_report'   => '折舊報(bào)告',
    'details'               => '詳細(xì)信息',
    'download'              => '下載',
    'download_all'          => '下載全部',
    'editprofile'           => '修改簡(jiǎn)介',
    'eol'                   => '壽命',
    'email_domain'          => '郵件域',
    'email_format'          => '電子郵件格式',
    'employee_number'       => '員工號(hào)碼',
    'email_domain_help'     => '這在導(dǎo)入時(shí)用以生成電子郵件地址',
    'error'                 => '錯(cuò)誤',
    'example'               => '示例︰ ',
    'filastname_format'         => '縮寫名 姓蜓洪,例如(jsmith@example.com)',
    'firstname_lastname_format' => '名 姓,例如 (jane.smith@example.com)',
    'firstname_lastname_underscore_format' => '名 姓坯苹,例如(jane_smith@example.com)',
    'lastnamefirstinitial_format' =>  '姓氏首字母(smithj@example.com)',
    'firstintial_dot_lastname_format' => '縮寫名 姓隆檀,例如(jsmith@example.com)',
    'first'                 => '首頁(yè)',
    'firstnamelastname'     => '名 姓,例如 (jane.smith@example.com)',
    'lastname_firstinitial' => '姓 縮寫名, 例如 (smith_j@example.com)',
    'firstinitial.lastname' => '縮寫名 姓粹湃,例如(jsmith@example.com)',
    'firstnamelastinitial'  => '名 姓恐仑,例如 (jane.smith@example.com)',
    'first_name'            => '名字',
    'first_name_format'     => '名,例如 (jane@example.com)',
    'files'                 => '文件',
    'file_name'             => '文件',
    'file_type'             => '文件類型',
    'filesize'              => '文件大小',
    'file_uploads'          => '文件上傳',
    'file_upload'           => '文件上傳',
    'generate'              => '生成',
    'generate_labels'       => '生成標(biāo)簽',
    'github_markdown'      => '該字段可以使用 <a >Github flavored markdown語(yǔ)法</a>',
    'groups'                => '分組',
    'gravatar_email'        => 'Gravatar頭像郵件地址',
    'gravatar_url'          => '<a ><small>在 Gravatar.com</small></a> 更改您的頭像为鳄。',
    'history'               => '歷史記錄',
    'history_for'           => '歷史記錄',
    'id'                    => '編號(hào)',
    'image'                 => '圖片',
    'image_delete'          => '刪除圖片',
    'image_upload'          => '上傳圖片',
    'filetypes_accepted_help'    => '可接受的文件類型是 :types. 最大允許上傳大小為 :size.|可接受的文件類型是 :types. 最大允許上傳大小為 :size.',
    'filetypes_size_help'   => '允許最大上傳文件的大小為 :size.',
    'image_filetypes_help'  => '接受jpg裳仆,png,gif和svg類型的文件孤钦。文件大小應(yīng)小于 :size歧斟。',
    'import'                => '導(dǎo)入',
    'importing'             => '正在導(dǎo)入…',
    'importing_help'        => '您可以通過(guò)CSV文件導(dǎo)入資產(chǎn)、配件偏形、許可證构捡、組件、消耗品和用戶壳猜。 <br><br>CSV 應(yīng)以逗號(hào)分隔和格式化勾徽,并且在文檔</a> 中與 <a  target="_new">樣本CSV中的標(biāo)頭匹配。',
    'import-history'        => '導(dǎo)入歷史記錄',
    'asset_maintenance'        => '資產(chǎn)維修',
    'asset_maintenance_report' => '資產(chǎn)維修報(bào)表',
    'asset_maintenances'       => '資產(chǎn)維修',
    'item'                  => '條目',
    'item_name'             => '物品名稱',
    'insufficient_permissions' => '沒(méi)有足夠的權(quán)限',
    'kits'                  => '預(yù)定義的 Kits',
    'language'              => '語(yǔ)言',
    'last'                  => '最后頁(yè)',
    'last_login'            => '上一次登陸:',
    'last_name'             => '姓氏',
    'license'               => '授權(quán)許可',
    'license_report'        => '授權(quán)許可報(bào)告',
    'licenses_available'    => '可用許可',
    'licenses'              => '許可證',
    'list_all'              => '列出全部',
    'loading'               => '正在加載... 請(qǐng)稍候...',
    'lock_passwords'        => '此字段值將不會(huì)保存到演示安裝中统扳。',
    'feature_disabled'      => '演示模式下禁用此功能',
    'location'              => '位置',
    'locations'             => '地理位置',
    'logo_size'             => '方形標(biāo)志使用Logo + 文本看起來(lái)最好喘帚。標(biāo)志最大顯示尺寸為 50px 高 x 500px 寬度。  ',
    'logout'                => '注銷',
    'lookup_by_tag'     => '查找資產(chǎn)標(biāo)簽',
    'maintenances'          => '維護(hù)',
    'manage_api_keys'       => '管理 API 密鑰',
    'manufacturer'          => '制造商',
    'manufacturers'         => '制造商',
    'markdown'              => '該字段可以使用 <a >Github flavored markdown</a>',
    'min_amt'               => 'Min. QTY',
    'min_amt_help'          => '在觸發(fā)警報(bào)之前應(yīng)該可用的最小物品數(shù)咒钟。如果您不希望收到低庫(kù)存的警報(bào)吹由,請(qǐng)將最小數(shù)量留空。',
    'model_no'              => '型號(hào)',
    'months'                => '月數(shù)',
    'moreinfo'              => '更多信息',
    'name'                  => '名稱',
    'new_password'          => '新密碼',
    'next'                  => '下一頁(yè)',
    'next_audit_date'       => '下一次盤點(diǎn)時(shí)間',
    'last_audit'            => '上一次盤點(diǎn)',
    'new'                   => '新朱嘴!',
    'no_depreciation'       => '永久',
    'no_results'            => '沒(méi)有結(jié)果',
    'no'                    => '否',
    'notes'                 => '備注',
    'order_number'          => '訂單號(hào)',
    'page_menu'             => '顯示菜單項(xiàng)',
    'pagination_info'       => '顯示全部',
    'pending'               => '待定',
    'people'                => '組織成員',
    'per_page'              => '每頁(yè)搜索結(jié)果',
    'previous'              => '前一頁(yè)',
    'processing'            => '處理中',
    'profile'               => '您的個(gè)人資料',
    'purchase_cost'                              => '采購(gòu)價(jià)格',
    'purchase_date'         => '購(gòu)買日期',
    'qty'                   => '數(shù)量',
    'quantity'              => '數(shù)量',
    'quantity_minimum'      => '您有 :count 件物品低于或即將低于最低數(shù)量',
    'quickscan_checkin'     => '快速掃描歸還',
    'quickscan_checkin_status'      => '歸還狀態(tài)',
    'ready_to_deploy'       => '待分配',
    'recent_activity'       => '最近操作活動(dòng)',
    'remaining'             => '剩余',
    'remove_company'        => '移除公司關(guān)聯(lián)',
    'reports'               => '報(bào)告',
    'restored'              => '恢復(fù)',
    'restore'               => '還原',
    'requestable_models'    => '可申領(lǐng)的型號(hào)',
    'requested'             => '已申請(qǐng)',
    'requested_date'        => '申領(lǐng)日期',
    'requested_assets'      => '已申領(lǐng)資產(chǎn)',
    'requested_assets_menu' => '已申領(lǐng)資產(chǎn)',
    'request_canceled'      => '取消請(qǐng)求',
    'save'                  => '保存',
    'select'                => '選擇',
    'select_all'            => '全選',
    'search'                => '搜索',
    'select_category'       => '選擇一個(gè)類別',
    'select_department'     => '選擇一個(gè)部門',
    'select_depreciation'   => '選擇失效類型',
    'select_location'       => '選擇地點(diǎn)',
    'select_manufacturer'   => '選擇生產(chǎn)商',
    'select_model'          => '選擇型號(hào)',
    'select_supplier'       => '選擇供貨商',
    'select_user'           => '選擇用戶',
    'select_date'           => '選擇日期 (YYYY-MM-DD)',
    'select_statuslabel'    => '選擇狀態(tài)',
    'select_company'        => '選擇公司',
    'select_asset'          => '選擇資產(chǎn)',
    'settings'              => '設(shè)置',
    'show_deleted'          => '查看已刪除',
    'show_current'          => '查看當(dāng)前',
    'sign_in'               => '登錄',
    'signature'             => '簽名',
    'signed_off_by'         => '部門主管簽名',
    'skin'                  => '主題',
    'slack_msg_note'        => '將發(fā)送一條slack消息',
    'slack_test_msg'        => '哦哈倾鲫!看起來(lái) Slack 已經(jīng)成功應(yīng)用到 Snipe-IT 了粗合!',
    'some_features_disabled' => '演示模式: 此安裝將禁用某些功能。',
    'site_name'             => '站點(diǎn)名稱',
    'state'                 => '省份',
    'status_labels'         => '狀態(tài)標(biāo)簽',
    'status'                => '狀態(tài)',
    'accept_eula'           => '接受協(xié)議',
    'supplier'              => '供應(yīng)商',
    'suppliers'             => '供應(yīng)商',
    'sure_to_delete'    => '是否確認(rèn)要?jiǎng)h除',
    'submit'                => '提交',
    'target'                => '目標(biāo)',
    'toggle_navigation'     => 'Toogle 導(dǎo)航',
    'time_and_date_display' => '時(shí)間和日期顯示',
    'total_assets'          => '共計(jì)資產(chǎn)',
    'total_licenses'        => '共計(jì)許可證',
    'total_accessories'     => '總配件',
    'total_consumables'     => '總耗材',
    'type'                  => '類型',
    'undeployable'          => '無(wú)法被分配',
    'unknown_admin'         => '未知管理員',
    'username_format'       => '用戶名格式',
    'username'              => '用戶名',
    'update'                => '更新',
    'upload_filetypes_help'      => '允許的文件類型是 png, gif, jpg, jpeg, doc, doc, pdf, xls, xlsx, txt, lic, xml, zip, rtf 和 rar. 允許的最大上傳大小是 :size.',
    'uploaded'              => '已上傳',
    'user'                  => '用戶',
    'accepted'              => '已接受',
    'declined'              => '已拒絕',
    'unaccepted_asset_report' => '未接受的資產(chǎn)',
    'users'                 => '用戶',
    'viewall'               => '查看全部',
    'viewassets'            => '查看資產(chǎn)分配',
    'viewassetsfor'         => '查看:name名下資產(chǎn)',
    'website'               => '站點(diǎn)',
    'welcome'               => '歡迎您乌昔,:name',
    'years'                 => '年',
    'yes'                   => '是',
    'zip'                   => 'Zip',
    'noimage'               => '圖片未上傳或圖片無(wú)法找到隙疚。',
    'token_expired'         => '表單會(huì)話已過(guò)期,請(qǐng)重新提交',
    'login_enabled'         => '登錄已啟用',
    'audit_due'             => '到期審計(jì)',
    'audit_overdue'         => '過(guò)期審計(jì)',
    'accept'                => '接受 :asset',
    'i_accept'              => '我接受',
    'i_decline'             => '我拒絕',
    'accept_decline'        => '接受/拒絕',
    'sign_tos'              => '請(qǐng)?jiān)谙旅娴卿浺员砻髂夥?wù)條款:',
    'clear_signature'       => '清除簽名',
    'show_help'             => '顯示幫助',
    'hide_help'             => '隱藏幫助',
    'view_all'              => '查看全部',
    'hide_deleted'          => '隱藏已刪除',
    'email'                 => '郵箱',
    'do_not_change'         => '不要更改',
    'bug_report'            => '報(bào)告錯(cuò)誤',
    'user_manual'           => '用戶手冊(cè)',
    'setup_step_1'          => '第 1 步',
    'setup_step_2'          => '第 2 步',
    'setup_step_3'          => '第 3 步',
    'setup_step_4'          => '第 4 步',
    'setup_config_check'    => '配置檢查',
    'setup_create_database' => '創(chuàng)建數(shù)據(jù)庫(kù)表',
    'setup_create_admin'    => '創(chuàng)建管理員用戶',
    'setup_done'            => '完成磕道!',
    'bulk_edit_about_to'    => '您將要編輯以下內(nèi)容: ',
    'checked_out'           => '已借出',
    'checked_out_to'        => '借出至',
    'fields'                => '字段',
    'last_checkout'         => '上次借出',
    'due_to_checkin'        => '以下:count 件物品將很快歸還:',
    'expected_checkin'      => '預(yù)計(jì)歸還日期',
    'reminder_checked_out_items' => '這是當(dāng)前借出給您的物品的提醒供屉。 如果你覺(jué)得這個(gè)列表不準(zhǔn)確(有些東西缺失,或者你認(rèn)為你從未收到的東西)溺蕉,請(qǐng)給:reply_to_name發(fā)送電子郵件伶丐,郵箱地址為::reply_to_address。',
    'changed'               => '已修改',
    'to'                    => '至',
    'report_fields_info'    => '<p>選擇您想要在自定義報(bào)告中包含的字段疯特,然后單擊生成. 該文件(custom-asset-report-YYYY-mm-dd.csv)將自動(dòng)下載哗魂,您可以使用 Excel打開(kāi)它。</p>
            <p>如果您只想導(dǎo)出某些資產(chǎn)漓雅,使用下面的選項(xiàng)來(lái)微調(diào)您的結(jié)果录别。</p>',
    'range'                 => '范圍',
    'bom_remark'            => '向這個(gè)CSV文件添加一個(gè)BOM(字節(jié)順序標(biāo)記)',
    'improvements'          => '改進(jìn)',
    'information'           => '信息',
    'permissions'           => '權(quán)限',
    'managed_ldap'          => '(通過(guò) LDAP 管理)',
    'export'                => '導(dǎo)出',
    'ldap_sync'             => 'LDAP 同步',
    'ldap_user_sync'        => 'LDAP 用戶同步',
    'synchronize'           => '同步',
    'sync_results'          => '同步結(jié)果',
    'license_serial'        => '序列號(hào)/產(chǎn)品密鑰',
    'invalid_category'      => '無(wú)效的類別',
    'dashboard_info'        => '這是您的儀表板。有很多類似的故硅,但這個(gè)就是您的。',
    '60_percent_warning'    => '60% 完成 (警告)',
    'dashboard_empty'       => '看起來(lái)你還沒(méi)有添加任何東西纵搁,所以我們沒(méi)有什么東西可以顯示吃衅。 現(xiàn)在就開(kāi)始添加一些資產(chǎn)、配件腾誉、耗材或許可證吧徘层!',
    'new_asset'             => '新建資產(chǎn)',
    'new_license'           => '新建許可證',
    'new_accessory'         => '新建配件',
    'new_consumable'        => '新建耗材',
    'collapse'              => '收起',
    'assigned'              => '已分配',
    'asset_count'           => '資產(chǎn)計(jì)數(shù)',
    'accessories_count'     => '配件計(jì)數(shù)',
    'consumables_count'     => '耗材計(jì)數(shù)',
    'components_count'      => '組件計(jì)數(shù)',
    'licenses_count'        => '許可證計(jì)數(shù)',
    'notification_error'    => '錯(cuò)誤:',
    'notification_error_hint' => '請(qǐng)檢查下面的表單以了解錯(cuò)誤',
    'notification_success'  => '成功:',
    'notification_warning'   => '警告:',
    'notification_info'      => '信息:',
    'asset_information'     => '資產(chǎn)信息',
    'model_name'            => '型號(hào)名稱:',
    'asset_name'            => '資產(chǎn)名稱:',
    'consumable_information' => '耗材信息:',
    'consumable_name'       => '耗材名稱:',
    'accessory_information' => '配件信息:',
    'accessory_name'       => '配件名稱:',
    'clone_item'            => '克隆物品',
    'checkout_tooltip' => '借出此物品',
    'checkin_tooltip' => '歸還此物品',
    'checkout_user_tooltip' => '借出此物品給一個(gè)用戶',
    'maintenance_mode'      => '該服務(wù)暫時(shí)無(wú)法用于系統(tǒng)更新。請(qǐng)稍后再試利职。',
    'maintenance_mode_title' => '系統(tǒng)暫時(shí)不可用',
    'ldap_import'           => '用戶密碼不應(yīng)由LDAP管理趣效。(這允許您發(fā)送忘記密碼的請(qǐng)求。)',
    'purge_not_allowed'     => '在 .env 文件中已禁用清除已刪除數(shù)據(jù)猪贪。 請(qǐng)聯(lián)系支持人員或您的系統(tǒng)管理員跷敬。',
    'backup_delete_not_allowed'     => '.env 文件中已禁用刪除備份。 請(qǐng)聯(lián)系支持人員或您的系統(tǒng)管理員热押。',
    'additional_files'           => '附加文件',
    'shitty_browser'        => 'No signature detected. If you are using an older browser, please use a more modern browser to complete your asset acceptance.',
];

2西傀、標(biāo)簽文字修改

??默認(rèn)的標(biāo)簽如下圖。網(wǎng)站默認(rèn)目錄下的resources\views\hardware\labels.blade.php文件中可以對(duì)標(biāo)簽格式做一些修改桶癣。


??比如修改每一行前面的字段名拥褂,或是增加一個(gè)自己想打印的字段,如下圖牙寞。增加了財(cái)務(wù)編號(hào)字段饺鹃。

  具體修改的內(nèi)容大約在120行左右開(kāi)始,具體的行數(shù)隨著Snipe-IT的升級(jí),不同的版本可能會(huì)有變化悔详。此處需要了解一點(diǎn)php和html知識(shí)镊屎,具體不說(shuō)詳述。

3伟端、借出單表格打印寬度調(diào)整

??在查看用戶界面的右側(cè)杯道,有一個(gè)“打印所有已分配資產(chǎn)”,如下圖责蝠。


  該功能打印借用單供用戶簽字党巾,如下圖。

  上圖中有兩個(gè)問(wèn)題:
  (1)表格每一行末尾的簽名列位置偏小霜医,實(shí)際操作中空間不足齿拂,導(dǎo)致用戶簽名無(wú)法簽下。
  (2)表格下方部門主管簽名(原來(lái)為管理員簽名肴敛,后因?yàn)樵趓esource\long\zh-cn\general.php中做了修改)豎排署海,不符合國(guó)人閱讀及審美習(xí)慣。
  可以通過(guò)網(wǎng)站目錄下的resources\views\users\print.blade.php進(jìn)行調(diào)整医男。
調(diào)整后效果如下圖砸狞。

resources\views\users\print.blade.php代碼如下:

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>{{ trans('general.assigned_to', ['name' => $show_user->present()->fullName()]) }}</title>
    <style>
        body {
            font-family: "Arial, Helvetica", sans-serif;
        }
        table.inventory {
            border: solid #000;
            border-width: 1px 1px 1px 1px;
            width: 100%;
        }

        @page {
            size: A4;
        }
        table.inventory th, table.inventory td {
            border: solid #000;
            border-width: 0 1px 1px 0;
            padding: 3px;
            font-size: 12px;
        }

        .print-logo {
            max-height: 40px;
        }

    </style>
</head>
<body>

@if ($snipeSettings->logo_print_assets=='1')
    @if ($snipeSettings->brand == '3')

        <h2>
            @if ($snipeSettings->logo!='')
                <img class="print-logo" src="{{ url('/') }}/uploads/{{ $snipeSettings->logo }}">
            @endif
            {{ $snipeSettings->site_name }}
        </h2>
    @elseif ($snipeSettings->brand == '2')
        @if ($snipeSettings->logo!='')
            <img class="print-logo" src="{{ url('/') }}/uploads/{{ $snipeSettings->logo }}">
        @endif
    @else
        <h2>{{ $snipeSettings->site_name }}</h2>
    @endif
@endif

<h2>{{ trans('general.assigned_to', ['name' => $show_user->present()->fullName()]) }}</h4>

    @if ($assets->count() > 0)
        @php
            $counter = 1;
        @endphp
        <table class="inventory">
            <thead>
            <tr>
                <th colspan="8">{{ trans('general.assets') }}</th>
            </tr>
            </thead>
            <thead>
            <tr>
                <th style="width: 20px;"></th>
                <th style="width: 5%;">{{ trans('admin/hardware/table.asset_tag') }}</th>
                <th style="width: 10%;">{{ trans('general.name') }}</th>
                <th style="width: 10%;">{{ trans('general.category') }}</th>
                <th style="width: 30%;">{{ trans('admin/hardware/form.model') }}</th>
                <th style="width: 15%;">{{ trans('admin/hardware/form.serial') }}</th>
                <th style="width: 20%;">{{ trans('admin/hardware/table.checkout_date') }}</th>
                <th data-formatter="imageFormatter" style="width: 30%;">{{ trans('general.signature') }}</th>
            </tr>
            </thead>

            @foreach ($assets as $asset)

                <tr>
                    <td>{{ $counter }}</td>
                    <td>{{ $asset->asset_tag }}</td>
                    <td>{{ $asset->name }}</td>
                    <td>{{ $asset->model->category->name }}</td>
                    <td>{{ $asset->model->name }}</td>
                    <td>{{ $asset->serial }}</td>
                    <td>
                        {{ $asset->last_checkout }}</td>
                    <td>
                        @if (($asset->assetlog->first()) && ($asset->assetlog->first()->accept_signature!=''))
                            <img style="width:auto;height:100px;" src="{{ asset('/') }}display-sig/{{ $asset->assetlog->first()->accept_signature }}">
                        @endif
                    </td>
                </tr>
                @if($settings->show_assigned_assets)
                    @php
                        $assignedCounter = 1;
                    @endphp
                    @foreach ($asset->assignedAssets as $asset)

                        <tr>
                            <td>{{ $counter }}.{{ $assignedCounter }}</td>
                            <td>{{ $asset->asset_tag }}</td>
                            <td>{{ $asset->name }}</td>
                            <td>{{ $asset->model->category->name }}</td>
                            <td>{{ $asset->model->name }}</td>
                            <td>{{ $asset->serial }}</td>
                            <td>{{ $asset->last_checkout }}</td>
                            <td><img style="width:auto;height:100px;" src="{{ asset('/') }}display-sig/{{ $asset->assetlog->first()->accept_signature }}"></td>
                        </tr>
                        @php
                            $assignedCounter++
                        @endphp
                    @endforeach
                @endif
                @php
                    $counter++
                @endphp
            @endforeach
        </table>
    @endif

    @if ($licenses->count() > 0)
        <br><br>
        <table class="inventory">
            <thead>
            <tr>
                <th colspan="4">{{ trans('general.licenses') }}</th>
            </tr>
            </thead>
            <thead>
            <tr>
                <th style="width: 20px;"></th>
                <th style="width: 40%;">{{ trans('general.name') }}</th>
                <th style="width: 50%;">{{ trans('admin/licenses/form.license_key') }}</th>
                <th style="width: 10%;">{{ trans('admin/hardware/table.checkout_date') }}</th>
            </tr>
            </thead>
            @php
                $lcounter = 1;
            @endphp

            @foreach ($licenses as $license)

                <tr>
                    <td>{{ $lcounter }}</td>
                    <td>{{ $license->name }}</td>
                    <td>
                        @can('viewKeys', $license)
                            {{ $license->serial }}
                        @else
                            <i class="fa-lock" aria-hidden="true"></i> {{ str_repeat('x', 15) }}
                        @endcan
                    </td>
                    <td>{{  $license->pivot->created_at }}</td>
                </tr>
                @php
                    $lcounter++
                @endphp
            @endforeach
        </table>
    @endif


    @if ($accessories->count() > 0)
        <br><br>
        <table class="inventory">
            <thead>
            <tr>
                <th colspan="4">{{ trans('general.accessories') }}</th>
            </tr>
            </thead>
            <thead>
            <tr>
                <th style="width: 20px;"></th>
                <th style="width: 40%;">{{ trans('general.name') }}</th>
                <th style="width: 50%;">{{ trans('general.category') }}</th>
                <th style="width: 10%;">{{ trans('admin/hardware/table.checkout_date') }}</th>
            </tr>
            </thead>
            @php
                $acounter = 1;
            @endphp

            @foreach ($accessories as $accessory)
                @if ($accessory)
                    <tr>
                        <td>{{ $acounter }}</td>
                        <td>{{ ($accessory->manufacturer) ? $accessory->manufacturer->name : '' }} {{ $accessory->name }} {{ $accessory->model_number }}</td>
                        <td>{{ $accessory->category->name }}</td>
                        <td>{{ $accessory->pivot->created_at }}</td>
                    </tr>
                    @php
                        $acounter++
                    @endphp
                @endif
            @endforeach
        </table>
    @endif

    @if ($consumables->count() > 0)
        <br><br>
        <table class="inventory">
            <thead>
            <tr>
                <th colspan="4">{{ trans('general.consumables') }}</th>
            </tr>
            </thead>
            <thead>
            <tr>
                <th style="width: 20px;"></th>
                <th style="width: 40%;">{{ trans('general.name') }}</th>
                <th style="width: 50%;">{{ trans('general.category') }}</th>
                <th style="width: 10%;">{{ trans('admin/hardware/table.checkout_date') }}</th>
            </tr>
            </thead>
            @php
                $ccounter = 1;
            @endphp

            @foreach ($consumables as $consumable)
                @if ($consumable)
                    <tr>
                        <td>{{ $ccounter }}</td>


                        <td>
                        @if ($consumable->deleted_at!='')
                            <td>{{ ($consumable->manufacturer) ? $consumable->manufacturer->name : '' }}  {{ $consumable->name }} {{ $consumable->model_number }}</td>
                            @else
                            {{ ($consumable->manufacturer) ? $consumable->manufacturer->name : '' }}  {{ $consumable->name }} {{ $consumable->model_number }}
                            @endif
                            </td>
                            <td>{{ ($consumable->category) ? $consumable->category->name : ' invalid/deleted category' }} </td>
                            <td>{{  $consumable->pivot->created_at }}</td>
                    </tr>
                    @php
                        $ccounter++
                    @endphp
                @endif
            @endforeach
        </table>
    @endif

    <br>
    <br>
    <br>
    <table>
        <tr>
            <td style="width: 15%;">{{ trans('general.signed_off_by') }}:</td>
            <td style="width: 30px;">________________________</td>
            <td style="width: 18%;"></td>
            <td style="width: 7%;">{{ trans('general.date') }}:</td>
            <td style="width: 30%;">_________________________</td>
        </tr>
    </table>

</body>
</html>

??稍微有點(diǎn)html基礎(chǔ)的,看起來(lái)應(yīng)該不困難镀梭,此處不詳述了刀森。

九、參考資料

??CentOS7結(jié)合寶塔面板安裝/升級(jí)IT資產(chǎn)管理系統(tǒng)Snipe-IT

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末报账,一起剝皮案震驚了整個(gè)濱河市研底,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌透罢,老刑警劉巖榜晦,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異羽圃,居然都是意外死亡乾胶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門朽寞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胚吁,“玉大人,你說(shuō)我怎么就攤上這事愁憔⊥蠓觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吨掌,是天一觀的道長(zhǎng)半抱。 經(jīng)常有香客問(wèn)我脓恕,道長(zhǎng),這世上最難降的妖魔是什么窿侈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任炼幔,我火速辦了婚禮,結(jié)果婚禮上史简,老公的妹妹穿的比我還像新娘乃秀。我一直安慰自己,他們只是感情好圆兵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布跺讯。 她就那樣靜靜地躺著,像睡著了一般殉农。 火紅的嫁衣襯著肌膚如雪刀脏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天超凳,我揣著相機(jī)與錄音愈污,去河邊找鬼。 笑死轮傍,一個(gè)胖子當(dāng)著我的面吹牛暂雹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播创夜,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼杭跪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挥下?” 一聲冷哼從身側(cè)響起揍魂,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤桨醋,失蹤者是張志新(化名)和其女友劉穎棚瘟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喜最,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡偎蘸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞬内。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迷雪。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖虫蝶,靈堂內(nèi)的尸體忽然破棺而出章咧,到底是詐尸還是另有隱情,我是刑警寧澤能真,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布赁严,位于F島的核電站扰柠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏疼约。R本人自食惡果不足惜卤档,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望程剥。 院中可真熱鬧劝枣,春花似錦、人聲如沸织鲸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昙沦。三九已至琢唾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盾饮,已是汗流浹背采桃。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丘损,地道東北人铣缠。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钓觉,于是被迫代替她去往敵國(guó)和親离赫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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