好久沒寫文章了,因為最近在安卓上寫一個小東西,寫完后,我發(fā)現(xiàn)我們編程的實在是沒什么意思.
不管你在哪個平臺編程,都是調用人家提供的API,現(xiàn)在開源時代,什么都有現(xiàn)成的,程序員滿街都是,我想搞點提神醒腦的玩意.
于是我研究了一下nginx,反向代理,動靜分離,負載均衡,這個挺好,我就開始了我的研究.
我決定用vmware搭建幾個虛擬機,給他們整上centOS7,用其中的一臺當代理服務器暴露出去,再安排二個虛擬機裝上apche當負載均衡服務器,進行傳說中高大上的分布式計算服務器集群,然后再安裝二個虛擬機作mysql主從數(shù)據(jù)庫,然后親自實踐一個前后端分離主從分離,動靜分離的網(wǎng)站+APP實踐.
話說從DOS時代過來的人,玩linux真他媽的好使,一點不覺得別扭,反而有一種遇到知己的感覺.
一個linux裝完就幾分鐘,而且不占內存,輕量級.
第一步當然是下載ISO鏡像啦,然后到虛擬機中新建一個20G的linux虛擬機,直接安裝,到最后一步,建一個root用戶密碼即可,不需要建立其他二級用戶,直接上ROOT開干.
第二步就是編譯安裝nginx了,話說這個nginx開源的真徹底,沒有二進制文件給你直接運行的,要你裝C的編譯環(huán)境現(xiàn)場編譯安裝,一個字,酸爽.
裝好之后,啟動nginx,啥也不做,直接在虛擬機中即可訪問到127.0.0.1,說明80端口成功開始監(jiān)聽http服務了,nginx開始運作了.不過我的目的不是在linux上訪問,而是在外網(wǎng)訪問,起碼我的真實主機和家里的手機,其他電腦也要能訪問啊,為了達到這一步,運行了各種奇怪的linux命令,配置了半天網(wǎng)絡,還整了個靜態(tài)IP,最后在vmware中設置80端口轉發(fā)到虛擬機IP地址80端口,這樣不管是手機還是其他電腦,輸入局域網(wǎng)IP,即可訪問到虛擬機中的nginx的歡迎主頁.
這個虛擬機直接暴露給外網(wǎng)訪問的,我還要搭建二臺apache服務器,用來負載均衡.安裝centOS的過程是一模一樣的,不同點在于第一臺只需安裝nginx,后二臺安裝的卻是apache+PHP,用來解析PHP代碼,提供給nginx訪問.
安裝apache倒是順利,但也在啟動啊,防火墻等地方費了不少精神,因為說什么centOS版本太高,以前的/etc/init.d/下面沒有iptables這個服務,為這個iptables搞了很長的時間,關于iptables的一些命令,一會能運行,一會不能運行的,真是坑的很.
于第二天的時候,我把這個虛擬機給刪除了,用了原生的systemctl來管理服務,用了firewalld來管理防火墻,畢竟iptables這個是過時了,必須與時俱進.
然后還要安裝ftp服務器
yum install vsftpd
firewalld開啟80 21端口后,就能在外網(wǎng)進行訪問了
firewall-cmd --add-service=ftp --permanent ? ? ##永久開放ftp服務
firewall-cmd --remove-service=ftp --permanent ?##永久移除ftp服務
firewall-cmd --add-port=80/tcp --permanent ? ? ##永久添加80端口
然后用systemctl重啟防火墻
sytemctl restart firewalld
新版本centos主意是要注意二點,一個是系統(tǒng)服務管理變成了systemctl,就不要再用舊的service命令了,盡量只用新的,混著用容易拉低咱們的智商.
第二個是防火墻不是iptables了,變成了用firewalld服務,用firewall-cmd命令來管理,習慣就好,有些教程他媽的一上來就刪除firewalld,重新安裝iptables,這都是一些不思進取的廢物,千萬不要學這些行為.
我們一定要擦亮眼睛,不要人云亦云.
接下來,輸入命令 yum install php php-devel -y 全自動安裝PHP5.4,而且安裝完是即時生效的,不用像windows中配置什么路徑亂七八糟的.
為保險起見,還是重啟httpd服務,systemctl restart httpd
apache安裝后,網(wǎng)頁文件存放在 /var/www/html中,在這個目錄中建一個index.php文件,里面輸入
<?php phpinfo(); ?>保存,打開即可以看到效果了.
我目前的配置是這樣的,在真正的主機上輸入localhost,經(jīng)vmware的端口轉發(fā)到虛擬機nginx上,然后nginx做負載均衡轉發(fā)到二臺apache虛擬機上.
所以我在真實主機上輸入localhost即可看到虛擬機中的網(wǎng)頁顯示效果了.
這只是用虛擬機在模擬負載均衡,如果有錢,咱們直接在家里就能建數(shù)據(jù)中心了,全部是真實的主機,那就爽歪歪了.
咱們可以安裝一個apache下的壓力測試工具來測試下性能
yum install httpd-tools -y
進行測試:模擬1000個用戶發(fā)送20000個請求
ab?-n?20000?-c?1000?http://localhost/test.php
發(fā)現(xiàn)效果還不錯,90%的請求能在130ms內響應,一秒能處理2000+并發(fā)
現(xiàn)在是有三個虛擬機了,還差二個用來放mysql,繼續(xù)建唄
這兩臺比較單一,就是安裝mysql后,新建用戶并給予遠程登錄的權限,開啟3306端口
create user‘name’@’192.168.*.*|%’identified by‘pwd’?
GRANT ALL PRIVILEGES ON 數(shù)據(jù)庫名.* TO '用戶名'@'ip地址' IDENTIFIED BY '密碼' WITH GRANT OPTION;
FLUSH PRIVILEGES; //更新授權
firewall-cmd --add-port=3360/tcp --permanent
現(xiàn)在跑到主機上遠程連接測試,成功!
接下來,要設置第一臺虛擬機nginx動靜分離了
編輯nginx.conf文件,增加location路由
location / --->首先全部導入apache服務器
location ~* \.(png|jpg|bmp|webp|js|css)$ {
? ? ? ? root html/web1/; ? ? ? ?#nginx的根是/usr/local/nginx/html,這里將靜態(tài)資源的請求全部發(fā)往web1目錄下取
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #也就是thinkphp的Public目錄被上傳到了web1下了
? ? ? ? expires 3d;
}
現(xiàn)在,我將關閉其中的一臺apache服務器,因為我要安裝我的php網(wǎng)站了,而安裝過程只需在其中一臺上安裝即可,也就是配置mysql的地址帳號密碼等信息,并不需要二臺同時安裝,安裝一臺后,直接把安裝過后的網(wǎng)站文件全站復制到另一臺apache服務器中即可.
這個過程就不寫了,沒什么技術含量
完成后,在主機輸入localhost成功進入網(wǎng)站頁面,而且是真的動靜分離+負載均衡了!
接下來要做的事,就是將mysql庫設置主從,這樣一個小型分布式服務器集群就算完成了.
最后,就是要接入數(shù)據(jù)庫中間件,徹底將數(shù)據(jù)庫隔離開來以保安全