? ? ? ? 對(duì)于我們后臺(tái)開(kāi)發(fā)人員來(lái)說(shuō),很多時(shí)候去了公司第一件事就是安裝各種環(huán)境,有的是用在電腦上,有的是在虛擬機(jī)上面,電腦上面的一般都比較好裝,虛擬機(jī)上面很多就是通過(guò)命令,一般情況,換一次工作使用一次,不知道有多少人能記得比較清楚,反正我是不記得的。所以寫(xiě)一點(diǎn)自己在自己虛擬機(jī)上面的搭建方式,哪天忘記了再來(lái)看看。當(dāng)然百度一下也有一大堆的。我自己記一下加深一下印象吧。
????????首先我們的java,不說(shuō)了,記得設(shè)置環(huán)境變量就可以了。win7在高級(jí)系統(tǒng)設(shè)置->環(huán)境變量->%JAVA_HOME%\bin;?JAVA_HOME就是jdk的安裝目錄了,這樣在任何目錄下都可以執(zhí)行java相關(guān)命令了,話說(shuō)我沒(méi)有專門(mén)配置classpath也運(yùn)行的挺好的,所以我一直沒(méi)有配。。。 mac的話稍微麻煩點(diǎn),因?yàn)槭欠耹inux的,所以需要命令進(jìn)行打開(kāi)/etc/profile文件,輸入path和classpath內(nèi)容,看這個(gè)鏈接吧https://www.cnblogs.com/zjx2711904647/p/7735556.html;
? ? ? ? ?IDEA大家可能用習(xí)慣了eclipse之后不喜歡換這個(gè),但是只要你熟悉了這個(gè)之后,你一定不喜歡再用eclipse了,比如我,用了半年就很不喜歡eclipse了,尷尬。關(guān)于破解版,我有一個(gè)方法,如下:(mac版)
下載旗艦版?https://www.jetbrains.com/idea/download/#section=mac
解壓縮安裝,啟動(dòng)IDEA一次。
訪問(wèn)?http://idea.lanyus.com?,下載JetbrainsCrack-2.7-release-str.jar
將JetbrainsCrack-2.7-release-str.jar 放置到 IDEA/Contents/bin 文件夾下面
編輯idea.vmoptions, 增加一行:
-javaagent:JetbrainsCrack-2.7-release-str.jar
重新啟動(dòng)IDEA
填入http://idea.lanyus.com?上面的注冊(cè)碼,注冊(cè)后重啟。
? ? mysql:有兩篇挺好的文章,分享一下,我win7和mac各裝過(guò)一次,都是百度的,快忘光了。https://www.cnblogs.com/sshoub/p/4321640.html;https://www.cnblogs.com/chengxs/p/5986095.html;https://blog.csdn.net/u012721519/article/details/55002626(這個(gè)用來(lái)卸載了,mac版,我沒(méi)干過(guò))
? ? ? ? 好了,下面才是我想說(shuō)的關(guān)于在linux下裝的東西,nginx,tomcat,redis單機(jī)和集群,zookeeper單機(jī)和集群。
????????nginx:(有點(diǎn)雜亂,因?yàn)楹芏喽际俏乙郧暗墓P記復(fù)制的)
首先這個(gè)是c語(yǔ)言開(kāi)發(fā)的,先yum –y install gcc-c++ 安裝c的環(huán)境,然后安裝pcre用于正則解析http模塊,yum install -y pcre pcre-devel,還有http內(nèi)容的壓縮格式,gzip解壓和壓縮,yum install -y zlib zlib-devel。最后就是https的ssl密鑰相關(guān)東西了,yum install -y openssl openssl-devel,這些都是基本環(huán)境的搭建。之后開(kāi)始nginx的搭建;
? ? ? ? 上傳,解壓都不用重復(fù)了,之后就是nginx的一些配置了,有點(diǎn)多,建議初學(xué)者復(fù)制,參數(shù)設(shè)置如下:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:上邊將臨時(shí)文件目錄指定為/var/temp/nginx,需要在/var下創(chuàng)建temp及nginx目錄
mkdir -p /var/temp/nginx。。。之后編譯安裝,make make install,安裝完成就是在sbin目錄下直接啟動(dòng)nginx了。注意:執(zhí)行./nginx啟動(dòng)nginx,這里可以-c指定加載的nginx配置文件,如下:./nginx -c /usr/local/nginx/conf/nginx.conf。如果不指定-c,nginx在啟動(dòng)時(shí)默認(rèn)加載conf/nginx.conf文件,此文件的地址也可以在編譯安裝nginx時(shí)指定./configure的參數(shù)(--conf-path= 指向配置文件(nginx.conf))。
? ? 停止和重啟nginx,./nginx -s quit(不要使用stop,那樣會(huì)將正在執(zhí)行的任務(wù)直接kill),重啟:建議先quit再啟動(dòng),reload是用于重新加載配置的。
? ? ? ? 配置虛擬主機(jī),修改/usr/local/nginx/conf/nginx.conf文件,添加兩個(gè)虛擬主機(jī),如下:
#配置虛擬主機(jī)aaa.test.com?
server {
#監(jiān)聽(tīng)的ip和端口,配置本機(jī)ip和端口
????????listen 192.168.101.3:80;
#虛擬主機(jī)名稱是aaa.test.com,請(qǐng)求域名aaa.test.com的url將由此server配置解析
????????server_name aaa.test.com; ?
#所有的請(qǐng)求都以/開(kāi)始,所有的請(qǐng)求都可以匹配此location
????????location / {
#使用root指令指定虛擬主機(jī)目錄即網(wǎng)頁(yè)存放目錄
#比如訪問(wèn)http://ip/test.html將找到/usr/local/aaa_html/test.html
#比如訪問(wèn)http://ip/item/test.html將找到/usr/local/aaa_html/item/test.html
????????????????root /usr/local/aaa_html;
#指定歡迎頁(yè)面,按從左到右順序查找
????????????????index index.html index.htm;
????????}
????}
#配置虛擬主機(jī)bbb.test.com
????server {
????????listen 192.168.101.3:80;
????????server_name bbb.test.com;
????????location / {
????????????????root /usr/local/bbb_html;
????????????????index index.html index.htm;
????????}
????}
最后配置兩個(gè)tomcat反向代理
#配置一個(gè)代理即tomcat1服務(wù)器
upstream tomcat_server1 {
????????????server 192.168.101.5:8080;
????????}
#配置一個(gè)代理即tomcat2服務(wù)器
????upstream tomcat_server2 {
????????????server 192.168.101.6:8080;
????????}
#配置一個(gè)虛擬主機(jī)
????server {
????????listen 80;
????????server_name aaa.test.com;
????????location / {
#域名aaa.test.com的請(qǐng)求全部轉(zhuǎn)發(fā)到tomcat_server1即tomcat1服務(wù)上
????????????????proxy_pass http://tomcat_server1;
#歡迎頁(yè)面,按照從左到右的順序查找頁(yè)面
????????????????index index.jsp index.html index.htm;
????????}
????}
????server {
????????listen 80;
????????server_name bbb.test.com;
????????location / {
#域名bbb.test.com的請(qǐng)求全部轉(zhuǎn)發(fā)到tomcat_server2即tomcat2服務(wù)上
??????????????????proxy_pass http://tomcat_server2;
??????????????????index index.jsp index.html index.htm;
????????}
????}
負(fù)載均衡配置,根據(jù)上邊的需求在nginx.conf文件中配置負(fù)載均衡,如下:
upstream tomcat_server_pool{
????????server 192.168.101.5:8080 weight=10;
????????server 192.168.101.6:8080 weight=10;
????????}
????server {
????????listen 80;
????????server_name aaa.test.com;
????????location / {
?????????????????proxy_pass http://tomcat_server_pool;
?????????????????index index.jsp index.html index.htm;
????????}
????}
配置nginx的高可用,主備 ,首先需要keepalived的軟件用于心跳檢測(cè),rpm –ivh keepalived-1.2.13-5.el6_6.i686.rpm。。之后配置keepalived。
修改主nginx下/etc/keepalived/keepalived.conf文件
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { ?#指定keepalived在發(fā)生切換時(shí)需要發(fā)送email到的對(duì)象,一行一個(gè)
?????XXX@XXX.com
???}
notification_email_from XXX@XXX.com ?#指定發(fā)件人
#smtp_server XXX.smtp.com ????????????????????????????#指定smtp服務(wù)器地址
#smtp_connect_timeout 30 ??????????????????????????????#指定smtp連接超時(shí)時(shí)間
router_id LVS_DEVEL ???????????????????????????????????#運(yùn)行keepalived機(jī)器的一個(gè)標(biāo)識(shí)
}
vrrp_instance VI_1 {
state MASTER ??????????#標(biāo)示狀態(tài)為MASTER 備份機(jī)為BACKUP
interface eth0 ????????#設(shè)置實(shí)例綁定的網(wǎng)卡
virtual_router_id 51 ??#同一實(shí)例下virtual_router_id必須相同
priority 100 ??????????#MASTER權(quán)重要高于BACKUP 比如BACKUP為99 ?
advert_int 1 ??????????#MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒
authentication { ??????#設(shè)置認(rèn)證
auth_type PASS ????#主從服務(wù)器驗(yàn)證方式
????????auth_pass 8888
????}
virtual_ipaddress { ???#設(shè)置vip
192.168.101.100 ??????#可以多個(gè)虛擬IP,換行即可
????}
}
[if !supportLists]1.1.1.1?[endif]備nginx
修改備nginx下/etc/keepalived/keepalived.conf文件
配置備nginx時(shí)需要注意:需要修改state為BACKUP , priority比MASTER低,virtual_router_id和master的值一致
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { ?#指定keepalived在發(fā)生切換時(shí)需要發(fā)送email到的對(duì)象,一行一個(gè)
????XXX@XXX.com
???}
???notification_email_from XXX@XXX.com?? #指定發(fā)件人
???#smtp_server XXX.smtp.com ???????????????????????????? #指定smtp服務(wù)器地址
#smtp_connect_timeout 30 ??????????????????????????????#指定smtp連接超時(shí)時(shí)間
router_id LVS_DEVEL ???????????????????????????????????#運(yùn)行keepalived機(jī)器的一個(gè)標(biāo)識(shí)
}
vrrp_instance VI_1 {
state BACKUP ??????????#標(biāo)示狀態(tài)為MASTER 備份機(jī)為BACKUP
interface eth0 ????????#設(shè)置實(shí)例綁定的網(wǎng)卡
virtual_router_id?51 ??#同一實(shí)例下virtual_router_id必須相同
priority 99 ???????????#MASTER權(quán)重要高于BACKUP 比如BACKUP為99 ?
advert_int 1 ??????????#MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒
authentication { ??????#設(shè)置認(rèn)證
auth_type PASS ????#主從服務(wù)器驗(yàn)證方式
????????auth_pass 8888
????}
virtual_ipaddress { ???#設(shè)置vip
192.168.101.100 ??????#可以多個(gè)虛擬IP,換行即可
????}
}
? ? 因?yàn)橛锌赡艹霈F(xiàn)nginx全部掛掉,但是keepalived沒(méi)有掛掉的情況,這個(gè)可以寫(xiě)一個(gè)腳本,#!/bin/bash
#如果進(jìn)程中沒(méi)有nginx則將keepalived進(jìn)程kill掉
A=`ps -C nginx --no-header |wc -l` ?????##查看是否有 nginx進(jìn)程 把值賦給變量A
if [ $A -eq 0 ];then ???????????????????##如果沒(méi)有進(jìn)程值得為 零
service keepalived stop ?????????##則結(jié)束 keepalived 進(jìn)程
fi? 然后拷貝到/etc/keepalived下,即可。
修改主nginx的keepalived.conf,添加腳本定義檢測(cè):
注意下邊紅色標(biāo)識(shí)地方:
#全局配置
global_defs {
notification_email { ?#指定keepalived在發(fā)生切換時(shí)需要發(fā)送email到的對(duì)象,一行一個(gè)
?????XXX@XXX.com
???}
notification_email_from miaoruntu@itcast.cn ?#指定發(fā)件人
#smtp_server XXX.smtp.com ????????????????????????????#指定smtp服務(wù)器地址
#smtp_connect_timeout 30 ??????????????????????????????#指定smtp連接超時(shí)時(shí)間
router_id LVS_DEVEL ???????????????????????????????????#運(yùn)行keepalived機(jī)器的一個(gè)標(biāo)識(shí)
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" ????????##監(jiān)控腳本
interval 2 ?????????????????????????????????????##時(shí)間間隔,2秒
weight 2 ???????????????????????????????????????##權(quán)重
}
vrrp_instance VI_1 {
state MASTER ??????????#標(biāo)示狀態(tài)為MASTER 備份機(jī)為BACKUP
interface eth0 ????????#設(shè)置實(shí)例綁定的網(wǎng)卡
virtual_router_id 51 ??#同一實(shí)例下virtual_router_id必須相同
priority 100 ??????????#MASTER權(quán)重要高于BACKUP 比如BACKUP為99
advert_int 1 ??????????#MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒
authentication { ??????#設(shè)置認(rèn)證
auth_type PASS ????#主從服務(wù)器驗(yàn)證方式
????????auth_pass 8888
????}
???track_script {
check_nginx ???????#監(jiān)控腳本
???}
virtual_ipaddress { ???#設(shè)置vip
192.168.101.100 ??????#可以多個(gè)虛擬IP,換行即可
????}
}
修改后重啟keepalived;
還有緩存配置,不寫(xiě)了,因?yàn)樯洗尾涣宋募?。。我這個(gè)已經(jīng)很難看了,所以再寫(xiě)點(diǎn)其他的好了。