摘要:領了一個服務器,開啟了一個偽全棧的運維之路,各種服務線上部署。然后配置安全組,然后啟動實例。安裝與配置基礎組件安裝與配置登錄進服務后,就可以開啟一段服務器配置之旅了。
最近世道動蕩,在前往高級的路上走出了車到山前必有路,睜眼一看是絕路的感覺。所以就索性瞎折騰一下。領了一個服務器,開啟了一個偽全棧的運維之路,各種服務線上部署。
服務器申請與實例連接接騰訊免費七天,阿里要錢,山里娃就在亞馬遜AWS申請了一個可免費使用一年的EC2云服務器,申請鏈接,步驟很簡單,跟著提示一步一步整就是,唯一要提醒的就是,需要準備一張信用卡,一張能支持外匯($)結算的最好。
申請到資格后,選擇你的云服務,選擇對應的區域,你需要給服務實例選擇一個操作系統,linux,windows常用的都可選(注意觀察,我們只選免費的,很重要,很重要, 很重要)。然后配置安全組,bla,bla,....,然后啟動實例。保存好你的密鑰,然后打開ssh終端連接實例。操作步驟可以打開管理面板,選擇實例-》選擇實例-》連接-》根據面板提示連接。
登錄進服務后,就可以開啟一段服務器配置之旅了。如果你和我一樣,對Linux常用的命令行還不熟悉,你可能需要這樣一份手冊:Linux常用命令大全。我選擇的鏡像是Ubuntu,如果你和我選擇的一樣,那么下面的命令你可以直接用,如果是redhat或者centos,有些命令,你需要自己去探索。先把一些常用的工具安裝上:
sudo apt-get install unzip // 解壓工具 sudo apt-get install git // git工具 sudo apt-get install wget // 下載工具 sudo apt-get install nginx // 下載nginxnode服務安裝與配置
node安裝是一個相對簡單的過程,你可以直接查看官網,然后按照提示一步一步進行。非常重要的一步就,你需要建立你命令的軟鏈接。在這里我列出自己的操作步驟:
-下載:sudo wget https://nodejs.org/download/r...
建一個文件夾:sudo mkdir -p /usr/local/lib/nodejs
解壓到上面新建文件夾:sudo tar -xJvf node-v8.16.0-linux-x64.tar.xz -C /usr/local/lib/nodejs
建立node可執行命令鏈接:sudo ln -snf /usr/local/lib/nodejs/node-v8.16.0-linux-x64/bin/node /usr/bin/node
重復上述步驟,建立npm可執行鏈接
測試有效性:node -v // node-v8.16.0
jdk的安裝與配置centos可參考鏈接,同時也適用于ubuntu,現在使用wget下載jdk有點麻煩(需要鑒權),所以我是本地下載,然后scp上傳上去的,以下是我的操作:
上傳:scp -i "big.pem" jdk-8u211-linux-x64.tar.gz ubuntu@ec2-13-114-140-94.ap-northeast-1.compute.amazonaws.com:/home
解壓并重命名為tomcat:tar xzf jdk-8u211-linux-x64.tar.gz
建立鏈接java,javac,jar:sudo ln -snf /home/tomcat/bin/java(你解壓后的目錄) /usr/bin/java, 其他兩個照做
測試: java -version
tomcat服務的安裝與配置下載 wget http://mirrors.tuna.tsinghua....
解壓
進入到bin目錄,然后執行 ./startup.sh
實例ip查看服務運行情況(前提是在安全策略允許了8080端口的連接)
數據庫的安裝與配置mysql的安裝復雜一點,折騰了自己大量時間,在redhat8上沒有安裝成功mysql5,也迫使我把鏡像換成了ubuntu,曲折的路就不多說了,直接說順利的。如果直接使用apt-get install mysql安裝,默認是安裝mysql8,所以在開啟安裝前,需要借助mysql-apt-config增加一段配置,具體安裝步驟,請查考前人栽下的樹:Ubuntu 16.04安裝MySQL:通過APT方式安裝。
安裝好之后,開啟mysql,并登錄
開啟:sudo service mysql start
查看端口:sudo netstat -anp | grep mysql
登錄:sudo mysql -u root -p
顯示數據庫:show databases
至此,本地鏈接已經ok,但是mysql遠程鏈接數據庫仍然報無發連接。原因很多,這里提及兩個我遇到的。
實例安全策略:實例安全策略默認只開啟了22端口,如果你像我一樣,你還需要開啟3306端口(和mysql相關),80端口,443端口
mysql自己的安全策略,默認只對127.0.0.1開啟,即本地開啟
第一種很簡單,去EC2面板上修改你正在用的安全策略,加入3306端口,并啟用。
第二種稍微麻煩一點,你需要如下操作:
打開mysql配置文件vim /etc/mysql/mysql.conf.d/mysqld.cnf,字段如下圖所示
將bind-address = 127.0.0.1注銷
登錄mysql,并執行grant all privileges on . to "root"@"%" identified by "yourpassword";在有些版本上,不能直接這樣操作root用戶,所以,你需要新建一個用戶,然后對這個用戶執行grant all privileges操作
flush privileges;?
重啟mysql,或則你的實例
關于sql批量導入
導出:mysqldump -u root -p -d targetDatabaseName > targetFileName.sql, 根據提示,輸入密碼,導出ok,當前文件價應該就存在一個targetFileName.sql,里面包含了表數據與結構;
遠程導入mysqldump -h 132.72.192.432 -P 3306 -u root -p targetDatabaseName < targetFileName.sql(導入之前你得已經創建了targetDatabaseName庫)
上面的遠程操作不一定好使,下面的這種操作,成功率更高。ssh遠程登錄,然后mysql登錄,創建你的targetDatabase庫,然后use targetDatabase,采用source命令:source /targetFile/targetFileName.sql;回車,即可導入成功,在這些操作之前,你需要將你本地的sql文件通過scp傳送到遠端服務器;
nginx配置與域名的解析安裝nginx,無非就想解決靜態資源訪問,反向代理,gzip,負載均衡問題,由于我這是初級使用,沒有涉及到負載均衡的情形。
運行前面已經安裝了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端口?
首先,對于一個成熟的網站,他的域名一般是不帶端口號的;
另外,對于一個服務器,對外開放的端口越多,被攻擊的可能性更高;
最后,在域名解析時,是無法將一個域名解析到一個帶端口的ip地址上的,至少阿里云是這樣的
開啟gzip為什么要開啟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;啟動服務
啟動mysql,上面已經說過了;
上傳前端構建包,并解壓靜態資源;
上傳jar包,運行 java -jar target-version.jar,啟動后端服務;
git download,然后npm i,npm run prod運行node服務;
至此,一個純前端服務,純后端服務,SSR渲染服務就啟動完成,訪問相應的域名即可查看。
一些雜七雜八的冷門命令整理其實,這整篇都是一些個人雜七雜八的知識整理,做個筆記,方便以后翻閱。但下面的碎片知識,才是真的雜,包括一些不常用的命令
修改文件權限命令chmod (-R) xxx targetpath, eg: chmod -R 777 /home 將home目錄及其子目錄的屬性修改為可讀,可寫,可執行;
查看文件夾下子文件夾及文件信息ls -l;相比與ls,-l就顯得特別有用,可查看文件的讀寫權限,如果建立了ln鏈接的,可查看鏈接信息;
查看運行端口對應的pid;netstat -tunlp |grep prot;eg: netstat -tunlp |grep 8080
查看相應應用運行的服務列表:ps -ax | grep applicationName;eg: ps -ax | grep node
查看和遠程鏈接網絡狀態,相當于ping,telnet ip/domain port;telnet www.baidu.com 80
暫時就列出這么多吧,公司快要掛了,是時候開始準備面試了,Fighting。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40492.html
前言 在若干次前的一場面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關的問題:你覺得什么是后端? 送命題。當時腦瓦特了,答曰:邏輯處理和數據增刪改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 當場被懟得體無完膚,羞愧難當。事后再反思這問題,結合資料總結了一下。發現自己學過的Re...
閱讀 1476·2021-11-16 11:44
閱讀 3296·2021-09-29 09:43
閱讀 627·2019-08-30 10:52
閱讀 946·2019-08-29 11:01
閱讀 3264·2019-08-26 11:47
閱讀 2897·2019-08-23 12:18
閱讀 1369·2019-08-22 17:04
閱讀 2055·2019-08-21 17:04