由於前段時間騰訊雲打折,所以買了一台小服務器,想着以后寫幾個小網站,博客什么的,但是一開始就遇到了難題,大概就是Linux服務器的配置問題,比如如何假設服務器,配置非root用戶,配置服務器數據的非root用戶訪問,nginx請求轉發,iptables的端口控制等問題,接下來博主就記錄一下搭建Tomcat所遇到的問題以及解決方案。
一。服務器系統選擇
我讓騰訊雲自己幫我裝了一個CentOS7.2,說真的由於防火牆的一些小改動,7.0以上版本讓人覺得有點煩,所以我還是建議用6.0的版本,畢竟網上大多數的服務器博客都講的6.0。
拿到服務器的第一時間,當然是root登錄了。Windows使用SecureCRT,MAC和Linux直接SSH登錄。
ssh root@服務器IP
然后輸入密碼,就登錄了服務器。
登錄的第一件事情,我選擇創建子用戶並且禁用了root用戶的遠程登錄。
用vim找到ssh的設置,並且更改PermitRootLogin為no
vim /etc/ssh/sshd_config
之后添加一個新用戶。
adduser 用戶名 passwd 用戶名
以后登錄服務器就使用這些新加的用戶,若要使用root則用子用戶登錄之后執行su命令切換root。
之后就各種安裝,yum install一些,wget一些。必須要裝一個gcc,因為很多安裝文件都需要gcc編譯。
對於vim的配置,比如設置行數。
vim /etc/vimrc
在末尾輸入set nu。

要搜索某些關鍵字,在命令模式下輸入/關鍵字,回車之后就會顯示查找結果。命令模式下按dd可以清除一行內容,在操作完成之后命令模式下按:x保存並退出。
二。端口監聽
一台服務器通常打開的端口就有兩個,一個是22一個是80。22專門用作ssh登錄,80則作為服務器程序監聽。我們為了防止80端口的權限過大,一般不采用root用戶去啟動tomcat,而采用轉發的方式。如果直接修改server.xml監聽80端口,普通用戶啟動的時候是權限不足,無法綁定,因為1024以下的端口都無法被普通用戶享有權限。而暴露8080端口也是不怎么上乘的選擇,所以采用了nginx轉發動態請求到tomcat的這種方法。
首先找到tomcat和nginx的下載連接,然后wget到服務器上。
安裝nginx需要gcc編譯器,常規的./configure,make,make install后,nginx就安裝到了/usr/local/nginx下了。
打開nginx/conf/nginx.conf,編輯轉發配置。

這個叫做nginx反向代理,除了這種粗淺的配置還可以配置多路由、攔截靜態資源請求等等。
啟動nginx的命令就是執行它sbin下的nginx文件。
/usr/local/nginx/sbin/nginx
要停止nginx首先要在進程中找到它。
# ps -ef|grep nginx

然后執行從容停止。
kill -QUIT 進程ID
解決了nginx之后,啟動tomcat監聽8080,然而瀏覽器訪問IP仍然沒有能顯示tomcat的主頁。問題出在防火牆上。
由於CentOS7不是自帶的iptables,用了別的防火牆,我查閱資料把原來的替換成了iptables,並打開了80端口的訪問權限。
首先停止firewall。
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall開機啟動
然后安裝iptables
yum install iptables

然后啟動iptables。
service iptables start
打開80端口的訪問權限。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT iptables -I OUTPUT -p tcp --dport 80 -j ACCEPT
然后save。
service iptables save
最后查看一下當前策略。
iptables -L -n

等這些東西弄完之后,就可以從ip訪問tomcat的首頁了。一個粗略的網站服務器就這樣搭建完成了。對了,記得配上Java環境,不然tomcat跑不起來。

三。數據庫
毫無疑問,mysql。(其他的能跑起來?才1G內存,主要是mysql很熟很容易用)
yum install mysql-server
不大記得剛安裝的時候怎么登錄的,好像不用密碼。本地登錄之后記得搞一下把root遠程訪問給禁掉,開啟一個不能刪除表的用戶遠程訪問,要問為什么,參照《MYSQL從刪庫到跑路》。
MYSQL的訪問是3306,記得去iptables修改一下3306的打開狀態。
修改mysql數據庫密碼的命令,在登錄mysql后使用。方法有很多,我采用其中一條。
set password for 用戶名@localhost = password('新密碼');
localhost應該是本地登錄的密碼,還可以設置一個遠程登錄密碼,然而我們必須禁用遠程root。

user的前面是%的表示可以遠程訪問,把root的Host改為localhost就無法遠程訪問了。
至此,這就是博主這兩天自己建站的全部筆記,糟糕,代碼還沒寫……
