最近世道動盪,在前往高級的路上走出了車到山前必有路,睜眼一看是絕路的感受。因此就索性瞎折騰一下。領了一個服務器,開啓了一個僞全棧的運維之路,各類服務線上部署。javascript
騰訊免費七天,阿里要錢,山裏娃就在亞馬遜AWS申請了一個可無償使用一年的EC2雲服務器,申請連接,步驟很簡單,跟着提示一步一步整就是,惟一要提醒的就是,須要準備一張信用卡,一張能支持外匯($)結算的最好。
申請到資格後,選擇你的雲服務,選擇對應的區域,你須要給服務實例選擇一個操做系統,linux,windows經常使用的均可選(注意觀察,咱們只選免費的,很重要,很重要, 很重要)。而後配置安全組,bla,bla,....,而後啓動實例。保存好你的密鑰,而後打開ssh終端鏈接實例。操做步驟能夠打開管理面板,選擇實例-》選擇實例-》鏈接-》根據面板提示鏈接。css
登陸進服務後,就能夠開啓一段服務器配置之旅了。若是你和我同樣,對Linux經常使用的命令行還不熟悉,你可能須要這樣一份手冊:Linux經常使用命令大全。我選擇的鏡像是Ubuntu,若是你和我選擇的同樣,那麼下面的命令你能夠直接用,若是是redhat或者centos,有些命令,你須要本身去探索。先把一些經常使用的工具安裝上:html
sudo apt-get install unzip // 解壓工具 sudo apt-get install git // git工具 sudo apt-get install wget // 下載工具 sudo apt-get install nginx // 下載nginx
node安裝是一個相對簡單的過程,你能夠直接查看官網,而後按照提示一步一步進行。很是重要的一步就,你須要創建你命令的軟連接。在這裏我列出本身的操做步驟:
-下載:sudo wget https://nodejs.org/download/r...前端
centos可參考連接,同時也適用於ubuntu,如今使用wget下載jdk有點麻煩(須要鑑權),因此我是本地下載,而後scp上傳上去的,如下是個人操做:java
mysql的安裝複雜一點,折騰了本身大量時間,在redhat8上沒有安裝成功mysql5,也迫使我把鏡像換成了ubuntu,曲折的路就很少說了,直接說順利的。若是直接使用apt-get install mysql安裝,默認是安裝mysql8,因此在開啓安裝前,須要藉助mysql-apt-config增長一段配置,具體安裝步驟,請查考前人栽下的樹:Ubuntu 16.04安裝MySQL:經過APT方式安裝。
安裝好以後,開啓mysql,並登陸node
至此,本地連接已經ok,可是mysql遠程連接數據庫仍然報無發鏈接。緣由不少,這裏說起兩個我遇到的。mysql
第一種很簡單,去EC2面板上修改你正在用的安全策略,加入3306端口,並啓用。
第二種稍微麻煩一點,你須要以下操做:react
關於sql批量導入 linux
安裝nginx,無非就想解決靜態資源訪問,反向代理,gzip,負載均衡問題,因爲我這是初級使用,沒有涉及到負載均衡的情形。nginx
前面已經安裝了nginx,看是否安裝成功,可以使用命令運行:
sudo systemctl start nginx.service // 其餘經常使用命令 sudo systemctl stop nginx.service sudo systemctl reload nginx.service sudo systemctl status nginx.service
而後經過ip訪問80端口,若是順利能夠看到,可是通常都是不順利,顯示403。
可參考鏈接:nginx權限不足形成的訪問問題,我遇到的是第四項,即SELinux。
我要代理的靜態資源是一個react框架打包的網站,話很少說,直接列出個人配置:
server { listen 80; listen [::]:80; server_name h5.closertb.site; index index.html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { root /home/static; autoindex on; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
個人後端服務是基於tomcat,端口爲8080。
server { listen 80; listen [::]:80; server_name server.closertb.site; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
門戶網站是一個基於nextJs的ssr渲染,因此須要代理一個node服務,這個服務運行在8500端口
server { listen 80; listen [::]:80; server_name client.closertb.site; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8500; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
關於nginx代理的一些常識,從上面三段配置,咱們能夠看到,咱們都是對80端口進行了代理,但能夠設置不一樣類別,指向不一樣資源,區分點就在於server_name,經過此來決定返回代理的內容。代理上面也列出了兩種,靜態資源的代理(root)和服務的代理(proxy_pass)。
爲何都要用80端口?
爲何要開啓gzip?由於雖然前端框架的不斷侵蝕和資源的豐富,雖然網絡更快了,打包壓縮策略也用了,但100K以上的資源加載確實很慢,因此咱們還得藉助gzip來加快資源的獲取。話很少說,上圖本身感覺:
開啓gzip前
開啓gzip後
看完上面兩幅圖,你就會以爲這是肉眼可見的差異,提速增效太明顯了
# Gzip Settings gzip on; gzip_disable "msie6"; gzip_min_length 10k; gzip_vary on; # gzip_proxied any; gzip_comp_level 3; gzip_buffers 16 8k; # gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
至此,一個純前端服務,純後端服務,SSR渲染服務就啓動完成,訪問相應的域名便可查看。
其實,這整篇都是一些我的雜七雜八的知識整理,作個筆記,方便之後翻閱。但下面的碎片知識,纔是真的雜,包括一些不經常使用的命令
暫時就列出這麼多吧,公司快要掛了,是時候開始準備面試了,Fighting。