1. 怎麼把網頁發布到Web伺服器
1、遠程登錄到自己的伺服器,進入到存羨運放網頁的根目錄。我用的是阿里雲伺服器Ubuntu14.04版本,根目錄路徑為 /var/www/html。
2. 一個前端頁面如何部署
一個前端頁面,在本地直接打開就能訪問。另外如果是要放到伺服器下的話,可以裝個nginx,或者apache,或者tomcat,直接放到網頁路徑下,就行。
3. web前端項目部署到伺服器:
執行成功後會生成dist文件
4.1 進入到nginx配置目錄:/usr/local/nginx/conf,對 nginx.conf 文件進行配置
使用include可以配置多個.conf文件,如一個項目一個配置文件。在同目錄下創建demo文件夾,並創建demo.conf配置文件
下面使用是以ip地址的方式創建的的配置文件
訪問地址:
其中dist名稱時可以修改,保持與/usr/local/nginx/html下cp名稱一致,否則會訪問不到;並且/usr/local/nginx/html目錄可存在同一ip下多個web項目。
域名與ip綁定
配置域名demo.conf
eg: 域名 - demo.cn
4.2阿里雲配置域名前綴
阿里雲->域名->域名列表—>域名 管理-> 域名解析->解析設置
如圖:記錄值 填寫當前服務ip
學習過程中所記錄,有問題或者有好的方式歡迎指點。不勝感激 🤗 🤗 🤗
4. nginx部署前端純頁面
1.進入nginx配置文件vim .../nginx-1.9.12/conf/nginx.conf。
如上圖所示:第一個紅框中的內容就是應用伺服器的地址;第二個紅框中的內容就是前端包的位置。
此時,配置文件已經准備完畢。這個包和埠可以存在多個。
2.進入.../nginx-1.9.12/sbin 找到nginx的啟動程序。
nginx -c ../nginx-1.9.12/conf/nginx.conf 啟動nginx程序,並指定配置文件。
3.如果要替換包,則直接替換就行,nginx為熱載入自動更新的。但是以防有緩存之類的存在,可以使用nginx -s reload命令進行重載一次。
追加 一 :
如果前端包的構造如下圖
則location配置依然如下圖
但是訪問地址則需要指定到具體的html文件上。。
綁定: http://127.0.0.1:48110/binding.html
成功: http://127.0.0.1:48110/success.html
失敗: http://127.0.0.1:48110/error.html
追加 二:
同一個埠部署多個頁面:
一個server下,多個 location。
location的作用就是是否有後綴,並且這個後綴會去拼接root後的地址。
比如第二個location /sis/。
則在訪問127.0.0.1:8080/sis時,會去自動尋找/apps/svr/nginx-1.9.12/pagefile/0921/sis這個包。 (Ps:location後的地址一定要用 / 關閉,比如 location /sis/,不然訪問127.0.0.1:8080/sis時,會報錯,只有用127.0.0.1:8080/sis/才行。)
這樣就部署好了一個 埠支持多個頁面。
5. 怎麼開發和部署前端代碼
先部署頁面,再部署資源:在二者部署的時間間隔內,如果有用戶訪問頁面,就會在新的頁面結構中載入舊的資源,並且把這個舊版本的資源當做新版本緩存起來,其結果就是:用戶訪問到了一個樣式錯亂的頁面,除非手動刷新,否則在資源緩存過期之前,頁面會一直執行錯誤。
先部署資源,再部署頁面:在部署時間間隔之內,有舊版本資源本地緩存的用戶訪問網站,由於請求的頁面是舊版本的,資源引用沒有改變,瀏覽器將直接使用本地緩存,這種情況下頁面展現正常;但沒有本地緩存或者緩存過期的用戶訪問網站,就會出現舊版本頁面載入新版本資源的情況,導致頁面執行錯誤,但當頁面完成部署,這部分用戶再次訪問頁面又會恢復正常了。
- 總之,前端性能優化絕逼是一個工程問題!
好的,上面一坨分析想說的就是:先部署誰都不成!都會導致部署過程中發生頁面錯亂的問題。所以,訪問量不大的項目,可以讓研發同學苦逼一把,等到半夜偷偷上線,先上靜態資源,再部署頁面,看起來問題少一些。
但是,大公司超變態,沒有這樣的「絕對低峰期」,只有「相對低峰期」。So,為了穩定的服務,還得繼續追求極致啊!
這個奇葩問題,起源於資源的 覆蓋式發布,用 待發布資源 覆蓋 已發布資源,就有這種問題。解決它也好辦,就是實現 非覆蓋式發布。
<img src="https://pic4.mg.com/50/_hd.jpg" data-rawwidth="631" data-rawheight="456" class="origin_image zh-lightbox-thumb" width="631" data-original="https://pic4.mg.com/_r.jpg">
好了,目前我們快速的學習了一下前端工程中關於靜態資源緩存要面臨的優化和部署問題,新的問題又來了:這™讓工程師怎麼寫碼啊!!!
要解釋優化與工程的結合處理思路,又會扯出一堆有關模塊化開發、資源載入、請求合並、前端框架等等的工程問題,以上只是開了個頭,解決方案才是精髓,但要說的太多太多,有空再慢慢展開吧。或者大家可以去我的blog看其中的一些拆解:fouber/blog · GitHub
以上不是我YY的,可以觀察 網路 或者 facebook 的頁面以及靜態資源源代碼,查看它們的資源引用路徑處理,以及網路請中靜態資源的緩存控制部分。再次贊嘆facebook的前端工程建設水平,跪舔了。
建議前端工程師多多關注前端工程領域,也許有人會覺得自己的產品很小,不用這么變態,但很有可能說不定某天你就需要做出這樣的改變了。而且,如果我們能把事情做得更極致,為什麼不去做呢?
另外,也不要覺得這些是運維或者後端工程師要解決的問題。如果由其他角色來解決,大家總是把自己不關心的問題丟給別人,那麼前端工程師的開發過程將受到極大的限制,這種情況甚至在某些大公司都不少見!
6. 前端怎麼把網頁部署到tomcat 怎麼啟動tomcat
首先配置下Myeclipse里Tomcat服務 在Windows-->Preferences-->MyEclipse-->Application Servers 中選擇你的tomcat版本,在右側的面板里指定tomcat的安裝路徑後,點擊Apply或OK保存
7. 常見的前端集成部署方案有哪些各自的優缺點是什麼
前端行業經歷了這么長時間的發展,技術元素非常豐富,這里列舉出一般web團隊需要用到的技術元素:
開發規范:包括開發、部署的目錄規范,編碼規范等。不要小瞧規范的威力,可以極大的提升開發效率,真正優秀的規范不會讓使用者感到約束,而是能幫助他們快速定位問題,提升效率。
模塊化開發:針對js、css,以功能或業務為單元組織代碼。js方面解決獨立作用域、依賴管理、api暴露、按需載入與執行、安全合並等問題,css方面解決依賴管理、組件內部樣式管理等問題。是提升前端開發效率的重要基礎。現在流行的模塊化框架有requirejs、seajs等。
組件化開發:在模塊化基礎上,以頁面小部件(component)為單位將頁面小部件的js、css、html代碼片段放在一起進行開發、維護,組件單元是資源獨立的,組件在系統內可復用。比如頭部(header)、尾部(footer)、搜索框(searchbar)、導航(menu)、對話框(dialog)等,甚至一些復雜的組件比如編輯器(editor)等。通常業務會針對組件化的js部分進行必要的封裝,解決一些常見的組件渲染、交互問題。
組件倉庫:有了組件化,我們希望將一些非常通用的組件放到一個公共的地方供團隊共享,方便新項目復用,這個時候我們就需要引入一個組件倉庫的東西,現在流行的組件庫有bower、component等。團隊發展到一定規模後,組件庫的需求會變得非常強烈。
性能優化:這里的性能優化是指能夠通過工程手段保證的性能優化點。由於其內容比較豐富,就不在這里展開了,感興趣的同學可以閱讀我的這兩篇文章 [1] [2]。性能優化是前端項目發展到一定階段必須經歷的過程。這部分我想強調的一點是性能優化一定是一個工程問題和統計問題,不能用工程手段保證的性能優化是不靠譜的,優化時只考慮一個頁面的首次載入,不考慮全局在宏觀統計上的優化提升也是片面的。
項目部署:部署按照現行業界的分工標准,雖然不是前端的工作范疇,但它對性能優化有直接的影響,包括靜態資源緩存、cdn、非覆蓋式發布等問題。合理的靜態資源資源部署可以為前端性能帶來較大的優化空間。
開發流程:完整的開發流程包括本地開發調試、視覺效果走查確認、前後端聯調、提測、上線等環節。對開發流程的改善可以大幅降低開發的時間成本,工作這些年見過很多獨立的系統(cms系統、靜態資源推送系統)將開發流程割裂開,對前端開發的效率有嚴重的阻礙。
開發工具:這里說的工具不是指IDE,而是工程工具,包括構建與優化工具、開發-調試-部署等流程工具,以及組件庫獲取、提交等相關工具,甚至運營、文檔、配置發布等平台工具。前端開發需要工具支持,這個問題的根本原因來自前端領域語言特性(未來我會單獨寫一篇文章介紹前端領域語言缺陷問題)。前端開發所使用的語言(js、css、html)以及前端工程資源的載入與定位策略決定了前端工程必須要工具支持。由於這些工具通常都是獨立的系統,要想把它們串聯起來,才有了yeoman這樣的封裝。前面提到的7項技術元素都直接或間接的對前端開發工具設計產生一定的影響,因此能否串聯其他技術要素,使得前端開發形成一個連貫可持續優化的開發體系,工具的設計至關重要。
8. 前端的代碼怎麼部署到伺服器
1、安裝護衛神主機大師,一鍵配置全能網站環境
2、用主機大師開設網站,並綁定域名
3、解析域名到伺服器IP
4、FTP上傳前端代碼到伺服器
5、輸入域名即可訪問前端代碼了
9. 使用Tomcat和Nginx部署前端項目
第一種方式,將我們的前端項目放置在webapps目錄下
進入tomcat安裝路徑下的conf目錄,在server.xml文件中<Host>標簽內配置虛擬路徑
簡單的解釋一下參數
path 對應用戶請求過來的url路徑, /static 匹配所有以 /static 開頭的請求
docBase 表示實際匹配到的路徑,這里可以使用絕對路徑,也可以使用相對路徑
reloadable 如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化。(對於靜態資源來說,個人覺得這個配置用處不大)
總結起來就是,對於ip:8080/static的資源請求,會通過虛擬路徑匹配到我們實際的資源路徑music_client/static。
配置好後重啟,我們可以發現已經能夠看到我們的前端項目了
對於ROOT目錄下的資源,tomcat可以直接在根目錄下進行訪問。通過這種方式,我們可以讓項目的路徑去適配tomcat訪問的路徑。
但是這種方式不是特別推薦,當有多個項目在同一個tomcat伺服器上的時候,會不方便管理。
Nginx是當下熱門的伺服器,使用起來只需要進行簡單的配置即可。對於Nginx的安裝大家可以自行網路解決。
我們先進入到usr/local/nginx(具體以實際nginx安裝目錄為准)下的conf目錄,vim編輯nginx.xml。主要進行下面的配置
簡單的解釋一下
listen 表示nginx監聽的埠號,也就是你希望暴露哪個埠給用戶進行訪問
server_name 表示nginx接受請求的域名,一般默認localhost就行
location 模塊用於響應請求,這里的 / 表示匹配8082埠的所有請求
root 表示靜態資源/項目的路徑
index 表示默認的訪問資源
配置完成後,進入 sbin 目錄下,通過 ./nginx -t 檢查配置文件的格式是否正確
如正確 ./nginx 進行啟動或者 ./nginx -s reload 進行重啟
啟動完,我們就可以直接ip:8082直接訪問我們的前端項目啦
開啟nginx的反向代理也比較簡單,只需要加上proxy_pass 配置即可
出現這個問題的原因是: 在history模式下,只是動態的通過js操作window.history來改變瀏覽器地址欄里的路徑,並沒有發起http請求,但是當我們直接在瀏覽器輸入這個地址的時候,就會對伺服器發起http請求,但是這個目標在伺服器上又不存在,所以會返回404。
我們可以通過把所有請求都轉發到首頁上來解決這個問題。只需要在 Nignx 中的配置文件加入如下配置:
事實上,上面的解決方式也是Vue-Router官方推薦的解決方式( https://router.vuejs.org/zh/guide/essentials/history-mode.html#nginx )。
那上面的 try_files 為什麼能幫助我們解決這個問題呢?我們可以看一下這個屬性的作用
try_files :按選項所指定的順序去檢查用戶請求的文件是否存在,如果本地存在的話則返回該請求;不存在的話將該請求轉發到指定的其它路徑。也就是說,比如我們當前的前端項目部署在 /usr/myproj 目錄下,現在我們在瀏覽器發起 ip:port/testApi 請求,那麼此時 uri 為testApi,nginx會先去 $root/testApi (即/usr/local/myproj/testApi)找是否存在該靜態資源,若不存在,則繼續尋找 $root/testApi/index (即/usr/local/myproj/testApi/index)文件是否存在,如果還是不存在,則會把請求轉發到首頁。
而我們的項目本事就是由Vue-Cli創建的 單頁面應用 ,當index頁面接收到請求的時候,對應的history模式路由就可以發揮作用了,根據瀏覽器的路由跳轉到對應的頁面,這也就保證了我們的路由請求都能夠轉發給index頁面來進行處理。
這種問題一般是出現在伺服器一開始安裝Nginx的時候,沒有安裝SSL模塊。在不重裝Nignx的情況下,可以安裝如下方式進行操作:
執行如下命令
這一步只是以防萬一,可以省略
也可以直接執行 ./usr/local/nginx/sbin/nginx -t 看還會不會報錯就行
nginx報錯: [emerg] https protocol requires SSL support in /usr/local/nginx/conf/nginx.conf:50