1. 程式人生 > >[伺服器] linux(Centos7)下的nginx+tomcat+java+mysql環境搭建

[伺服器] linux(Centos7)下的nginx+tomcat+java+mysql環境搭建

系統環境搭建

centos7下載與安裝(Mini版)

下載地址:http://mirrors.163.com/centos/7/isos/x86_64/
網易的源,國內嘛,快些.像我選得就是最小化版本的,即CentOS-7-x86_64-Minimal-1611.iso ,咳咳貌似還有種子版的,有下載工具的可以選擇,比如迅雷啊啥啥的…

配置ip地址與防火牆管理(開啟,關閉,配置規則..)

由於centos7預設啟動的防火牆不是iptables,所以我們先將firewall關掉,移除,再安裝iptables,配置

systemctl stop firewalld.service #停止firewall服務! .service 可以省略
systemctl disable firewalld # 從開機自啟中移除

安裝iptables:

yum search iptables #沒事搜尋一下
yum install iptables #安裝iptables
yum install iptables-services #安裝iptables的service,裝著,不然服務啟動不了
#檢視iptables現有規則
iptables -L -n
#先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT
#清空所有預設規則
iptables -F
#清空所有自定義規則
iptables -X
#所有計數器歸0
iptables -Z #允許來自於lo介面的資料包(本地訪問) iptables -A INPUT -i lo -j ACCEPT #開放22埠 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #開放21埠(FTP) iptables -A INPUT -p tcp --dport 21 -j ACCEPT #開放80埠(HTTP) iptables -A INPUT -p tcp --dport 80 -j ACCEPT #開放443埠(HTTPS) iptables -A INPUT -p tcp --dport 443 -j ACCEPT #允許ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #允許接受本機請求之後的返回資料 RELATED,是為FTP設定的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #其他入站一律丟棄 iptables -P INPUT DROP #所有出站一律綠燈 iptables -P OUTPUT ACCEPT #所有轉發一律丟棄 iptables -P FORWARD DROP

記得按照規則類似的新增8080,3306等埠
配置完後,儲存

service iptables save

啟動iptables,新增開機啟動

systemctl start iptables
systemctl enable iptables

ssh服務配置(接近0配置,尤其是雲伺服器,一般自帶)

安裝ssh服務

yum search ssh #先搜尋,在安裝會簡單點,不用死記 包名字
yum search openssh-server #ssh服務端
yum search openssh-clients#ssh客戶端(可以不裝)

同理啟動ssh服務(sshd)

systemctl start sshd 
systemctl status sshd #檢視下執行狀態

然後使用遠端連線工具,連線你的虛擬機器試試(或者伺服器)

ssh客戶端免密連線服務端(使用者linux之間快速聯機,此時用不上)

咳咳,容我谷歌一下:

ssh-keygen -t rsa #生成rsa金鑰
scp /root/.ssh/id_ras.pub  root@192.168.1.99:/root/id_rsa.pub

規則是這樣, 要用哪臺機器登入另一臺機器,就複製哪臺機器的公鑰到另一臺機器,然後另一臺機器將其公鑰加入authorized_keys

另一臺機器操作:

ssh-keygen -t rsa#連續三次回車即可
cd /root #選對目錄
cat id_rsa.pub >> .ssh/authroized_keys #複製

然後試著互相訪問,多試幾次發現免密登入就可以了(注意不要用內網的機器去和外網的機器互連,沒有know_hosts也是會失敗的,畢竟內網的機器可以訪問外網的,但是外網那臺如何訪問你的內網那臺呢?)

nginx環境搭建

安裝nginx依賴的編譯庫等

使用yum命令一次安裝多個

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

如果某個包安裝失敗(比如zlib),就先查詢zlib

yum search zlib

然後再列表中選擇對應的版本,比如

yum install zlib.x86_64

再安裝pcre(沒有wget的自行yum搜尋下載)

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz#下載pcer
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35/
./configure
make && make install

安裝nginx

下載安裝:

wget http://nginx.org/download/nginx-1.6.2.tar.gz #下載,自己找對應版本
tar -zxvf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module 
make && make install

安裝完成後,進入安裝位置即–prefix後的目錄

cd /usr/local/webserver/nginx
sbin/nginx -v #檢視版本

配置nginx.conf

上一份我的預設改造(帶註釋):

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

#配置http總入口
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    #其他不管,直接配置server
    server {
        listen       80;#埠
        server_name  localhost;#不重要吧

        charset utf-8;#預設編碼

        #access_log  logs/host.access.log  main;

        #匹配/這個正則規則下的一些配置(這裡我配置轉發),這是最簡單版,直接反向代理,連靜態資源都沒有區分
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass   http://127.0.0.1:8080;#雖然8080tomcat還沒安裝,但是可以先配置
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # 預設配置中的示例,不用就刪了吧(留著作參考也行)
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

以上是最簡單的和tomcat整合的配置,直接加了一個反向代理!更復雜的慢慢來!

啟動

cd /usr/local/nginx #進入目錄
sbin/nginx #啟動

其他命令:

nginx -s stop #停止
nginx -s reload #重新載入配置檔案
nginx -s reopen #重啟

java環境搭建

下載jdk1.8

解壓並配置環境變數

自己下載好jdk,我的jdk為jdk1.8.tar.gz

tar -zxvf jdk1.8.tar.gz
mv jdk1.8 /usr/local/java  #根據自己的愛好放到某個地方,然後配置環境變數

臨時環境變數配置:

export PATH=$PATH:/usr/local/java/bin:/usr/local/jre/bin

使用者登入即生效的環境變數:

vi /etc/profile #按j或下到最後一行,按o從新行插入

插入資料為

JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

系統重啟生效環境變數:

vi /etc/environment 

插入資料為

JAVA_HOME=/usr/local/java
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

嗯,貌似這個檔案中不能寫export 命令,所以去掉

到此,重啟後者登出登入測試環境變數,測試方法 echo $PATH
最後記得java,javac試試哦

tomcat環境搭建

下載安裝tomcat7.0.tar.gz

自行下載,tomcat官網有,順便說下tomcat很懶,所以linux和Windows做成一個檔案,Windows的也是可以拿過來用的(不能用當我沒說,重新找linux的…)

然後

tar zxvf tomcat7.0.tar.gz
mv tomcat7.0 /usr/local/tomcat7

配置 server.xml(也不改啥)

cd /usr/local/tomcat7 #進入tomcat目錄
more conf/server.xml #隨便看看

直接啟動,並在瀏覽器(找個瀏覽器咯)訪問8080埠

bin/start.sh #啟動試試

如果失敗,檢查java環境變數

編寫啟動指令碼用以開機自啟

首先,恕我愚鈍,還沒學通shell程式設計,這個指令碼還寫不來,就烤了一個某大神的
在/etc/init.d/目錄下新建一個檔案,內容為:

vi /etc/init.d/tomcatd

複製貼上

#!/bin/bash

#

# /etc/rc.d/init.d/tomcat

# init script for tomcat precesses

#

# processname: tomcat

# description: tomcat is a j2se server

# chkconfig: 2345 86 16

# description: Start up the Tomcat servlet engine.

if [ -f /etc/init.d/functions ]; then

. /etc/init.d/functions

elif [ -f /etc/rc.d/init.d/functions ]; then

. /etc/rc.d/init.d/functions

else

echo -e "\atomcat: unable to locate functions lib. Cannot continue."

exit -1

fi

RETVAL=$?

CATALINA_HOME="/usr/local/tomcat7" #tomcat安裝目錄

case "$1" in

start)

if [ -f $CATALINA_HOME/bin/startup.sh ];

then

echo $"Starting Tomcat"

$CATALINA_HOME/bin/startup.sh

fi

;;

stop)

if [ -f $CATALINA_HOME/bin/shutdown.sh ];

then

echo $"Stopping Tomcat"

$CATALINA_HOME/bin/shutdown.sh

fi

;;

*)

echo $"Usage: $0 {start|stop}"

exit 1

;;

esac

exit $RETVAL

注意更改catalina_home路徑變數!
使用chkconfig新增並開啟在圖形介面和命令列模式(即35的級別)

chkconfig --add tomcatd
chkconfig --level 2345 tomcatd on #還是2345級別都來吧,多多亦善

重啟reboot,直接訪問8080埠試試,是否成功啟動了!(然後發現沒啥用,因為nginx沒有開機啟動,還是得手動來一次,至於能夠nginx如何開機啟動,也許可以編寫類似的指令碼吧)

mysql環境搭建(下回:預編譯版[無需編譯])

下載mysql_glibc2.5_xxx.tar.gz

一種方式是通過官網下載然後上傳到伺服器:(小白最穩方式)

第二種是通過這個頁面的下載連結,點選下載後在下載列表中複製出他的下載地址,然後使用centos的wget命令直接使用伺服器下載(這種也不難啊,就是有一定得失敗可能性),貼出我的可wget的下載地址:

溫馨提示:經本人測試,除非走狗屎運(有一次走到了,下載只花了8s ),無論本地下載還是伺服器下載網速都不如何,建議使用vpn或者ss代理加速後提前下載,並最後使用自己的本地虛擬機器測試(伺服器上傳檔案很慢)!

解壓

費勁萬般努力,心裡祈禱無數次,終於下載完畢,好的,上傳到伺服器(使用和xshell配套的xftp即可,記得協議選擇sftp),然後進入上傳目錄(推薦就上傳在root的根目錄下, 這樣鍵入 cd ~ 就能快速進入 ).假設檔名為mysql-5.7.17-linux-glibc2.5-x86_64.tar,那麼程式碼為:

tar -xcvf mysql-5.7.17-linux-glibc2.5-x86_64.tar

等待片刻,接著把解壓後的資料夾mysql-5.7.17-linux-glibc2.5-x86_64 移到其他目錄(建議移走,不移走不影響操作,但這會顯得你不夠專業)

mv mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql

就移動到 /usr/local/mysql 吧!

配置mysql使用者組和使用者,更改目錄許可權

接著為mysql配置使用者組和使用者;以及更改目錄許可權(以/usr/local/mysql目錄為準):

groupadd mysql
useradd -r -g mysql mysql #-r 為非登入使用者 ,-g 用於指定group

此過程如提示groupadd: group 'mysql' is already exists等類似的提示,說明使用者組或使用者已經存在,忽視即可!

最後記得更改目錄許可權(我都差點忘了)

chown -R mysql.mysql /usr/local/mysql

PS: 注意路徑哦!

配置my.cnf

先複製目錄下的my-default.cnf到/etc/my.cnf(所以先進入目錄 cd /usr/local/mysql,然後執行以下程式碼:

cp support-files/my-default.cnf /etc/my.cnf
vi /etc/my.cnf

關於vi的使用,簡單2句話就是上下左右移動(hjkl也行),然後剛進入鍵入i或a(A)進入編輯模式,修改這2行
記得目錄路徑要和你自己的一一對應!

basedir =/usr/local/mysql 
datadir =/usr/local/mysql/data 

然後在按下Esc 按鍵,退出編輯模式,鍵入 :wq! 這個命令,儲存修改並退出vi,不確定更改與否可以使用more /etc/my.cnf 配合回車鍵瀏覽編輯後的內容!
至此,my.cnf配置完畢

手動複製mysql.server到/etc/init.d/mysqld下

建立mysqld服務:

cp support-files/mysql.server /etc/init.d/mysqld

這一步是將mysql的服務放到系統服務目錄,方便service命令管理

使用mysql自帶 命令mysqld 初始化資料庫

./bin/mysqld --initialize

如果初始化成功,則有隨機密碼生成,最好記下,先用著進入mysql,然後在利用mysql資料庫修改密碼!
另外,初始化成功後,最好重新更改目錄許可權(因為初始化後可能會有data目錄多出,要修改這個目錄的許可權)

chown -R mysql.mysql /usr/local/mysql

PS:注意路勁哦!(看著眼熟對吧,我可沒拷貝上面的!)

開啟mysql服務,修改密碼

廢話不多說,開啟服務:

service mysqld start #失敗?試試下一行的重啟
service mysqld restart #重啟,成功就別執行了

成功!好的修改密碼:

mysql -uroot -pmima

mysql命令記得加入環境變數!,-p後接密碼(初始化生成的隨機密碼)
進入mysql控制檯後:

use mysql;
set password=password('toor');
flush priviledges;

試試新密碼是否有效,失敗了再重啟服務試試?

使用chkconfig命令新增到開機啟動

這個簡單:

chkconfig --add mysqld
chkconfig --level 2345 mysqld on

好的,重啟試試!建議新增全域性變數和使用者變數配合使用(比如全域性變數給JAVA_HOME,MYSQL_HOME之類的賦值,然後在使用者變數(/etc/profile)中export PATH=JAVAHOME/bin:PATH)
PS,記得加$ 引用系統變數!
最後關於開機自啟,貌似將啟動命令打到 /etc/rc.d/rc.local這個腳本里面似乎也可以實現,實現原理肯定就是linux的啟動順序咯!