老闆讓我一週上線一個網站的一些記錄(上)

本人IR方向情報學碩士一枚,記得上週二本是一個平靜的調參之夜,老闆突然來了電話讓我去找他一趟。到了辦公室之後,老闆說,我們最近發佈了一個數據集,需要搭個網站。正當我想問“哦?誰來搭呢”,我發現,老闆的眼裏,都是我……

本文講講筆者在本個項目裏購買服務器和服務器環境配置時踩過的那些坑。

1 需求分析

經過對老闆的需求整理,這次網站看起來不是很複雜,簡而言之有三個要實現的功能:

第一,主頁信息展示。寫個homepage展示我們數據集的使用規則,留下我們的聯繫方式,可以讓用戶下載需要填寫的文件等;

第二,信息收集。提交填寫好的協議文檔,留下提交者的個人信息等,存儲到數據庫。

第三,審覈申請信息的管理員界面。實現對提交文檔的在線查看,審批等功能。

2 已有的技術基礎

我的技術基礎:大二的時候照着W3School學了點html/css/js三件套,說實話,忘得差不多了,所以節約時間起見,查了幾個Bootstrap在線生成網站

四種最好的免費Bootstrap在線設計工具 -解道Jdon​www.jdon.com

最後選中了Carrd

Simple, free, fully responsive one-page sites for pretty much anything​carrd.co

網上說這個是免費的,不過現在貌似收費了,在註冊之後送了一週的試用會員,可以把生成的網站發佈到一個以 .carrd.co 結尾的網頁,不過這個試用版會員不能直接下載網頁的源碼(下載源代碼的會員要充錢,一年49美刀)。可是,這裏有個BUG——既然直接能生成一個在線預覽的網頁,那我ctrl+s不就可以保存網頁源代碼了嗎?所以也是變相的一週免費試用(對不起 羊毛 我薅了)。以上,一頓拖拽操作之後,用於應付這次建站足夠了。

至於關於如何拖拽生成一個前端網站不是本文的重點,下文就不贅述了。

此外,我的主語言是Python,所以這次後臺的搭建打算採用Django。之前也只是聽說Django是一種基於Python的Web開發框架,上線快,性能強。作爲一個好奇寶寶還是蠻想嘗試的。

服務器購買記

除了技術基礎,我們還要考慮到硬件的問題——我們還需要一個雲服務器來放我們的網站,我選擇了阿里雲的(可能是前幾天看王堅院士的新聞看的吧)。

購買服務器這裏踩了第一個坑

阿里雲提供的服務器主要有兩種,一種叫“虛擬主機”,另一種叫“雲服務器ECS”。

一開始,圖便宜買了第一種虛擬雲主機,中等點的配置,一年500多塊。這種雲主機,說白了就是通過ftp訪問的主機文件,操作簡單,實現前端頁面只要把homepage重命名爲“zhuye.html”就可以直接訪問頁面了。但是,越到後面越覺得不對,爲毛只能放靜態頁面啊?!(雖然有人說放ASP或者.NET程序可能會實現,但是沒時間去考證了)

打了客服電話,那邊給的回覆是:

“虛擬主機適合放企業的一些比較簡單的展示頁面,如果需要交互功能的話,推薦購買ECS產品……”

還好,阿里提供每個用戶一次5天無條件退貨的選擇,一場虛驚。

巧的是,退貨之後,我翻到了阿里的“雲翼計劃”產品。

阿里雲學生機-雲服務器學生機優惠-學生機推薦-雲翼計劃-阿里雲​promotion.aliyun.com

簡而言之,就是學生(默認24歲之前都是學生。哎呀,暴露年齡了)首次購買一個一年的雲服務器ECS(1核/2G內存/40GB硬盤),只需要114元。小是小了點,應付我這個網站足夠了呀,果斷入手。

最後,購買域名,老闆的精心挑選之下,阿里雲域名服務裏買了一個.cn的域名,兩年68元,國內服務器只能掛國內域名,要不然不給備案。沒啥大坑,買就完事了。

4 服務器環境配置

前面說到,前端頁面直接通過拖拽發佈ctrl+s就搞下來了,也不是我的主要採坑點,所以就不贅述了。(Carrd牛X!再次感謝Carrd!好看好用好吧)

回到正題。這裏我要說一個服務器環境的版本號問題,這坑耗費了很多時間。

我選擇的ECS版本是windows server2008 32位的(也許當時我選Ubuntu就沒有這麼多坑了吧),沒想到這坑,介麼大。

先說一下最終的配置(下面三個是踩着坑排出來的雷):

Python==3.6
Django==2.1.7
MySQL 5.6

還記得,裝環境那一天的上午,我先裝了Python3.8,告訴我版本過高,服務器裝不了(cmd輸入Python之後會秒退),於是退3.7版本,也不行,一樣秒退。一氣之下,裝了個3.5的。結果在使用Django的時候告訴我,Django最低也得Python3.6才能用。

中午一個人憂鬱的去食堂吃了頓午飯,喜歡吃的思鄉掉渣餅突然就不香了。

下午回到實驗室開始安裝MySQL,結果同樣遇到了問題,我先裝了MySQL 8.0,閃退,裝了MySQL5.7版本太高裝不上,之後裝了個MySQL5.5,結果在python manage.py inspectdb的時候告訴我,5.5,低了。

此情此景,我想吟詩詩一首:


服務器啊 真是小,一天騎次 妹裝好;
Django Python MySQL, 誰先裝上 誰最屌。

一點脾氣都沒有甚至有點想學習。

同樣,也是在python manage.py inspectdb的時候,會報一個版本1.3.13,但是你的mysqlclient (感覺就是指pymysql) 版本是0.9.3的錯。

Django - installing mysqlclient error: mysqlclient 1.3.13 or newer is required; you have 0.9.3

網上有主要有兩種解決方案,一種是改庫的源碼(註釋掉判斷版本號的那一行,然後把某處的decode改成encode),個人非常不推薦,這樣會影響代碼的可移植性,且治標不治本,以後在遇到總不能總改源碼吧。所以,比較推薦第二種方法,

pip install Django==2.1.7 

就沒有這個問題了。如果沒換源,下載速度很慢,可以加一個源:

pip install Django==2.1.7 -i https://pypi.douban.com/simple

總之,上面除了通過閃退進行判斷安裝的版本有問題外,如果報“無法加載到動態鏈接庫xxx.dll”之類的錯誤,也別找dll了,找到也沒有管理員權限安裝到System32目錄裏,大概率就是版本有問題的意思,要重新裝其他版本的環境了。

小結

本文主要記錄了一下阿里雲服務器選擇和服務器環境準備上的問題。

總之,如果經濟允許,首選ECS,畢竟相比雲虛擬主機解鎖了多種玩法,並且雲翼計劃也很划算。

其次,如果你也是windows server2008 32位版本,請直接Python3.6(Anaconda約4.4.0,別忘區分32和64位)+Django 2.1.7+ MySQL 5.6。(來自沙雕博主裝環境的一天得出來的結果)

最後,一週上線是不可能的,光是服務器備案就得一週了,而且這種企業性質的頁面內容,管局貌似也不會通過我以個人身份進行的備案吧。不過老闆倒是很靠譜地聯繫了學校的信息中心,讓我直接把後臺接過去。哦吼,我豈不是白嫖了一個域名和服務器?

等這兩天網站上線了,再總結一下Django搭建後臺時,以及自動生成Django後臺管理員界面時遇到的“坑”吧。

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