摘要:微軟也意識到了這個問題,于是來了,不僅開源而且跨平臺,前不久已經發布了版本,號稱已經兼容了下的的類庫,并且開發了強大的服務器應用來替代用以跨平臺部署。
前言:被linux和java虐了快1年,筆者的內心是崩潰的,這一年的經歷,更加堅定了擁 護.NET之心,微軟對于開發者真的是太友好了,無論從工具到文檔,乃至技術應用性都是那么為用戶著想,筆者認同一種說法JAVA之所以占有比例高的原因是JAVA從開發工具到部署環境都是免費的,高自由度的JAVA也意味著更多的折騰,而.NET的開發,2015年之前是沒有community版之前,搞.NET開發是要錢的而且是很多錢(VS、WINDOWS、MSSQL),這也是大公司傾向于JAVA的原因之一吧,可能國內盜版橫行并不能感受到國外對版權對知識產權的重視,很多開發者并不覺得.NET開發很花錢,單一個VS 2017 professional版本就要3k5軟妹幣以上,而且是每年,服務器系統以及MSSQL一整套微軟的解決方案花錢可真不低。微軟也意識到了這個問題,于是.NET CORE來了,不僅開源而且跨平臺(WINDOWS、LINUX、MAC OS),.NET CORE前不久已經發布了2.0版本,號稱已經兼容了.NET Framework下nuget的70%的類庫,并且開發了強大的Kestrel服務器應用來替代IIS用以跨平臺部署。全球90%的服務器使用的都是liux系統,而且docker的興起,.NET CORE在5年后應該會有較大的需求,所以,linux系統的操作和使用也即將成為.NET CORE開發者一條必經之路,學好用好linux是必須的,筆者未來(預計半年內)可能會出個.NET CORE系列,有興趣的可以關注下。言歸正傳,之前筆者學習了ubuntu沒多久之后,又用上了RHEL,由于RHEL企業版是收費的,故而經常用的是與RHEL同根同源版本CentOS,當前時間2017年7月,可以下到CentOS 7.3也就是對應RHEL 7.3(兩者區別知乎上講得更清楚)。以下記錄了筆者遇到的幾個坑,本文僅供自用,不足之處請諒解,本文不定期更新:
1.Linux常用小技巧a.vi的使用,一般linux的發行版本都會自帶這個編輯器,替代品就很多啦,vim、nano等。注意linux是嚴格區分大小寫的,命令是vi xxx/xxx意為使用vi打開某文件,shift+g或者大寫G是直接跳轉到最后一頁,linux有很多用同字母大小寫來實現對反操作的命令,我想你已經猜到了小寫g則就是跳轉到第一頁。
在vi編輯器(vim也是)下分編輯模式和非編輯模式,默認打開的是非編輯模式,即只可以查看不能修改,如果需要修改文件,按i(小寫)進入編輯模式(左下角有會---INSERT---的狀態提示)才能修改,修改時候注意你的光標所在位置哈,剛開始很不習慣容易改到其他地方,編輯完成之后先按ESC鍵退出編輯模式,再輸入:wq進行保存,如果你誤操作了,要放棄,則先按ESC鍵退出編輯模式,再輸入:q!即可,vi的其他幾個常用命令,非編輯模式下輸入:q正常退出vi,非編輯模式輸入/xxx進行模糊查找,查找下一個是小寫n,查找上一個是大寫N。記命令要這么記哈,q是英文quit(退出)的首字母,linux里有大量的這種英文首字母簡寫,明白單詞分分鐘就記住怎么用了,wq=write quit(寫入、退出),n=next(小寫下一個,取反上一個則是大寫)。更多vi命令
b.WinSCP是一款連接linux的軟件,不僅提供了SFTP的功能,也提供了PuTTY的bash終端直連linux,這個東西比你直接在linux下操作要方便很多,什么光標選擇、粘帖復制易如反掌。要使linux完全使用上WinSCP的全功能你需要安裝SSH,CentOS 7.3下為yum -y install openssh-server,裝完之后記得開啟SSH的root遠程連接權限,不然很多寫入操作你都沒辦法操作,編輯/etc/ssh/sshd_config文件,注意這里是sshd_config不是ssh_config,多了一個d,linux下很多這種同一個東西不同名字的坑,找到PermitRootLogin這一行,將之修改為PermitRootLogin yes,完了記得需要重啟sshd服務才能生效,命令service sshd restart,完成之后就可以用WinSCP連接了。如下圖,協議默認SFTP,端口默認22
c.使用虛擬機時,網絡部分建議使用NAT模式,該模式下可以使用主機的網卡直接出去,簡單容易操作
d.常用指令及對應軟件命:
1.ifconfig,查看你網卡、IP信息的,與Windows上ipconfig同功能,如果沒有這個命令,請裝net-tools,安裝例子yum -y install net-tools
2.curl,這個是很實用的工具可以上傳下載訪問各種協議的URL,詳細功能自行研究,我一般也就用來調試應用,沒有這個命令,請裝curl
3.wget,該命令用于下載文件,沒有的話,請裝wget
e.不知道命令怎么用,一般都會有help幫助,例子vi --help,命令后加 --help就會顯示
f.按2次tab鍵會列出當前文件夾下的所有文件,如果輸入了xxx,再按兩次tab則會自動補全或列出以xxx開頭的文件夾及文件
g.常用shell命令
1.cd,轉到某文件夾(目錄),全拼:change directory,示例:cd xxx
2.mkdir,創建文件夾,全拼:make directory,示例:mkdir temp
3.mv,移動文件或文件夾,全拼:move,示例:mv aaa bbb 移動aaa到bbb
4.rm,刪除文件,全拼:remove,示例:rm -f xxx
5.rmdir,刪除文件夾,全拼:remove directory,示例:rmdir xxx
6.cp,拷貝文件,全拼:copy,示例:cp a path,將a文件拷貝到path文件夾
7.ls,查看文件夾下資源,全拼:List Source,后面可以跟很多種參數來進行篩選和排序,示例:ls -a
8.locate,查找某文件路徑,示例:locate index.html
9.其他常用文件操作命令
10.十大常用命令
h.linux默認路徑為絕對路徑,及任意路徑下cd /xxx意味著你將轉到系統根目錄下的xxx文件夾,如果要到當前目錄下的xxx文件夾則需要使用cd ./xxx這樣的表示方法,./即表示當前文件夾下,上一級文件夾下的xxx文件夾則為../xxx,可以依次類推
2.Linux 代理設置a./etc/profile為用戶變量配置,/etc/environment為系統變量配置,當同一變量出現在兩個文件中時,以/etc/profile用戶變量配置為準,linux各種環境配置文件看這里
b.使用root帳號登錄之后,先修改用戶變量配置,也就是/etc/profile文件,在最后添加以下代碼:
MY_PROXY_URL="http://x.x.x.x:xxx" HTTP_PROXY=$MY_PROXY_URL HTTPS_PROXY=$MY_PROXY_URL FTP_PROXY=$MY_PROXY_URL http_proxy=$MY_PROXY_URL https_proxy=$MY_PROXY_URL ftp_proxy=$MY_PROXY_URL export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy
c.保存之后,使用source /etc/profile重新加載一下配置
d.修改yum的配置文件,/etc/yum.conf,在最后添加以下代碼:
proxy=http://x.x.x.x:xxx
傳送門一篇較詳細的配置
3.xxx is not in the sudoers file. This incident will be reported,某用戶不是sudoera.使用root帳號登錄之后,為/etc/sudoers文件添加修改權限(為了安全性默認是只讀),使用這個命令chmod u+w /etc/sudoers
b.編輯/etc/sudoers文件,找到root ALL=(ALL) ALL這一行,然后另一起行,添加代碼:xxx ALL=(ALL) ALL(xxx是你的用戶名),然后wq保存退出
c.記得撤銷該文件的修改權限哈,命令為chmod u-w /etc/sudoers
傳送門筆者當時搜到的有效文章
a.這個問題筆者在CentOS 7.3 minimal版本下遇到,原因是你網卡沒開
b.編輯/etc/sysconfig/network-script/ifcfg-ens33這個文件,找到ONBOOT=no這一行,將它改為ONBOOT=yes,保存退出
c.然后使用dhclient刷新配置即可
筆者當時搜到的有效文章
以下操作,筆者建議你直接登錄root帳號進行,否則出現的root權限要求會很多
a.這是筆者在ubuntu里欠下的坑,一直沒忙贏寫就又跑來CentOS下挖坑了,兩者大同小異,湊合看吧,建議你按JRE/JDK->Tomcat->Apache的順序安裝
b.JRE/JDK的安裝
如果只是服務器跑JAVA應用,安裝JRE就夠了,JDK全稱是Java Development Kit(java開發套件),JRE全程是Java Runtime Environment(java運行時環境),從字面意思就可以區分你什么環境該裝啥了
1.裝JRE/JDK,我建議使用rpm安裝,其他方法筆者在安裝、卸載時候都遇到各種問題
2.以JRE1.8.0_131為例,首先下載rpm安裝包,命令wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jre-8u131-linux-x64.rpm,安裝后默認路徑是/usr/java/jre1.8.0_131,其他JDK/JRE地址
3.安裝rpm,命令rpm -ivh jre-8u131-linux-x64.rpm
4.檢查JRE/JDK版本,命令java -version
5.配置JAVA_HOME環境變量,編輯/etc/profile文件,在末尾追加export JAVA_HOME="/usr/java/jre1.8.0_131,退出編輯器后重新加載該文件source /etc/profile
6.卸載用rpm方式安裝的JDK/JRE,命令rpm -e jre-8u131-linux-x64.rpm
7.rpm命令詳解,ivh為install(安裝)、verbose(輸出詳細信息)、hash(打印hash值),rpm命令可以跟很多參數,有興趣使用rpm --help查看,e的全拼為erase(刪除/抹除)此處不同于常見的remove、uninstall這類用詞,學linux也是學計算機英語的好機會,更多rpm命令看這里
c.Tomcat的安裝
筆者建議下載tar.gz壓縮包,解壓安裝
1.以tomcat8.5.16為例,先下載tomcat,命令wget --no-check-certificate --no-cookies http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz
2.解壓apache-tomcat-8.5.16.tar.gz,命令tar -xvzf apache-tomcat-8.5.16.tar.gz
3.開啟關閉命令工具在apache-tomcat-8.5.16/bin/目錄下,一個start.sh一個shutdown.sh,使用sh ./apache-tomcat-8.5.16/bin/start.sh啟動tomcat
4.檢測tomcat是否開啟,命令ps aux|grep tomcat,將可以看到進程信息,該命令會產生默認的一個進程信息(圖中39900),只有帶路徑的進程信息才是正在運行的tomcat進程
5.關閉tomcat的兩種方式,一是用bin/shutdown.sh,二是直接殺掉tomcat進程kill -9
6.tomcat默認端口8080,需要開防火墻,臨時開啟命令firewall-cmd --add-port=80/tcp,然后重新加載防火墻配置firewall-cmd --reload,最后檢查8080端口是否已經生效sudo firewall-cmd --list-all
7.如果開了8080端口,那么則可以直接使用x.x.x.x:8080訪問,x.x.x.x為你的linux所用ip,順利看到下圖則表示你的tomcat成功搭建完成
8.關于war包的上傳與部署,將編譯后的war包上傳至./apache-tomcat-8.5.16/webapps/文件夾下即可,tomcat在啟動時會自動部署,另外一種方式是使用Manager App功能(如下圖),但筆者并不建議開啟該功能(基于服務器安全原因考慮),有興趣的請看這里
d.Apache的安裝
apache官方并沒有提供官方編譯版文件,只提供了源碼,你可以下載后自行編譯,或者使用官方推薦的第三方編譯版本安裝,筆者最佳實踐是使用yum或apt直接安裝,當前筆yum可使用的apache版本為2.4.6
1.apache在linux大部分系統里的軟件名叫httpd,命令yum -y install httpd,如果需要使用SSL(俗稱https)的話,可以一起把mod_ssl這個module安裝了yum -y install mod_ssl
2.打開防火墻端口(永久性),firewall-cmd --permanent --add-port=80/tcp,這里只開了80端口,如果需要使用SSL,則還需要開啟443端口firewall-cmd --permanent --add-port=443/tcp
3.重新加載防火墻配置firewall-cmd --reload并檢查端口firewall-cmd --list-all
4.檢查apache是否開啟service httpd configtest,當看到Syntax [OK]則表示已經正常開啟,如果不正常則需要重啟一下apache
5.在CentOS下啟動start、重啟restart、關閉stop,apache需要調用systemctl,示例:systemctl restart httpd
6.如果已經打開了80端口,則可以直接使用x.x.x.x:80訪問(:80可省略,默認80端口),x.x.x.x為你的linux所用ip,順利看到下圖則表示你的apache成功搭建完成
7.在CentOS中,apache默認安裝后的路徑為/etc/httpd
e.Apache與Tomcat整合
首先說一下實現Apache與Tomcat整合目前主流有2種方案,一種是使用代理及反向代理的方式,另一種則是使用AJP的方案,個人最佳實踐是使用方案一:代理及反向代理,這樣做可以方便做負載均衡和集群,后者方案配置也麻煩,當然后者的優點是啥,筆者了解到的是AJP是二進制的協議,速度快一點,具體沒有實際對比過,二者從實際操作上來說,前者更容易上手,利用Apache處理http的強大功能,可以按要求處理之后再轉發給tomcat
1.在Apache的/etc/httpd/conf.d文件夾,注意是conf.d,該文件夾下的所有*.conf文件都會被apache當作配置文件加載,創建你自己的配置文件即可,示例:
vi fortomcat.conf創建fortomcat.conf
添加如下代碼
ProxyPreserveHost On ProxyPass / http://localhost:8080/xxx/ ProxyPassReverse / http://localhost:8080/xxx/ ErrorLog /var/log/httpd/xxx-error.log CustomLog /var/log/httpd/xxx-access.log common
代碼解析,ProxyPass /為正向代理,ProxyPassReverse /為反向代理,加上VirtualHost *:80的意思就是為把80端口下的所有/請求轉發到localhost:8080/xxx/下,xxx即為你的tomcat應用名,注意結尾必須帶/,這個配置的關系請嘗試修改后感受,很難用語言描述清楚他們之間的微妙關系,總的來說就是路由的問題,ErrorLog為指定apache錯誤日志,CustomLog為指定apache訪問日志
保存退出,然后重啟apache,命令systemctl restart httpd
2.如果完成以上操作仍未能通過apache連同tomcat,請查看/var/log/httpd/xxx-error.log錯誤日志文件,在CentOS 7.3 minimal版本中,筆者遇到[error] (13)Permission denied: proxy: AJP: attempt to connect to x.x.x:8080的問題(該錯誤信息來源于配置的/var/log/httpd/xxx-error.log),這里下需要使用/usr/sbin/setsebool -P httpd_can_network_connect 1命令即可修復
f.關于Aapche配置SSL
我覺得我看到的文章里微軟為.NET CORE寫的apache+kestrel的文檔是簡潔明了而且有效的了,有興趣的朋友可以看一下,筆者配置apache時參照這篇文章完成的,國內大部分都是AJP的方案,很繁瑣
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35840.html
摘要:環境問題如下操作系統版本是否支持不支持版本是否支持不支持是否支持支持是否支持支持重要文件是否完整完整服務器是否開啟安全模式關閉解決方式版本不能太高,用的會出現不支持問題本次使用的版本為。 環境:php5.4.45+nginx1.13.6+mysql5.7.20+ecshopV2.7.3 問題:如下操作系統............................................
摘要:環境問題如下操作系統版本是否支持不支持版本是否支持不支持是否支持支持是否支持支持重要文件是否完整完整服務器是否開啟安全模式關閉解決方式版本不能太高,用的會出現不支持問題本次使用的版本為。 環境:php5.4.45+nginx1.13.6+mysql5.7.20+ecshopV2.7.3 問題:如下操作系統............................................
閱讀 3710·2023-04-25 22:43
閱讀 3706·2021-09-06 15:15
閱讀 1332·2019-08-30 15:54
閱讀 3542·2019-08-30 14:20
閱讀 2884·2019-08-29 17:16
閱讀 3117·2019-08-29 15:28
閱讀 3397·2019-08-29 11:08
閱讀 1070·2019-08-28 18:05