1. 程式人生 > >centos7最小版本安裝nginx+tomcat+java+mysql執行環境

centos7最小版本安裝nginx+tomcat+java+mysql執行環境

  最近專案從windows搬到linux,由於專案組成員有限並且有其它緊急的任務需要處理,因而這個任務就落到我的頭上了。下面記錄下centos最小版本安裝nginx+tomcat+mysql+java的執行環境。

  • centos7 minimal安裝

  參考:http://www.tecmint.com/centos-7-installation/

  • 安裝java

  下載Java,可到oracle官網獲取相應的連線

wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz?AuthParam=1456375809_50db5985ac01ede6091b467add0b89b2
# 改名:
mv jdk-7u79-linux-x64.tar.gz?AuthParam=1456375809_50db5985ac01ede6091b467add0b89b2 jdk-7u79-linux-x64.tar.gz
# 解壓: 
tar -zxvf jdk-7u79-linux-x64.tar.gz
# 更換目錄:
mv ./jdk1.7.0_79 /usr/local/ jdk1.7.0_79

  新增到環境變數

[email protected] java]# vi /etc/profile
# 在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL下新增

export JAVA_HOME=/usr/local/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  執行

source /etc/profile

  使環境變數生效

  檢視是否安裝成功

[[email protected] jdk1.7.0_79]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
  • 安裝tomcat

複製程式碼

# 建立使用者
groupadd tomcat
useradd -s /bin/bash -g tomcat tomcat

# 下載:
wget http://apache.opencas.org/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz
# 解壓:
tar -zxvf apache-tomcat-7.0.68.tar.gz
# 複製:
cp -R ./apache-tomcat-7.0.68 /usr/local
cd /usr/local/apache-tomcat-7.0.68
# 修改許可權:
chown -R tomcat:tomcat apache-tomcat-7.0.68
# 啟動:
sh ./bin/startup.sh

複製程式碼

  將8080埠新增到防火牆例外並重啟

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

  訪問:http://IP:8080/,熟悉的感覺

  • 安裝Mysql

複製程式碼

# 建立使用者
groupadd mysql
useradd -g mysql -s /sbin/nologin -d /dev/null mysql
# 檢視mysql使用者
id mysql
# 下載:
wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.11-linux-glibc2.5-x86_64 /usr/local/mysql
chown -R mysql:mysql mysql
cd /usr/local/mysql
mkdir /data
cd /data
mkdir mysql
cd mysql
mkdir -p mysql3306/{logs,tmp,data}
cp /usr/local/mysql/support-files/my-default.cnf /data/mysql/mysql3306/my.cnf

vi /data/mysql/mysql3306/my.cnf
# 修改
# 指定data目錄
datadir=/data/mysql/mysql3306/data/
# 指定監聽埠
port=3306
# 表名忽略大小寫
lower_case_table_names=1

複製程式碼

 

  初始化mysql,(注意獲取初始化密碼),命令安裝也可參考:centos7 安裝mysql5.7.11注意事項

 

複製程式碼

[[email protected] mysql]# bin/mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --initialize
2016-02-26T10:28:43.821897Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-02-26T10:28:43.822126Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2016-02-26T10:28:43.822138Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2016-02-26T10:28:44.311120Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-02-26T10:28:44.411026Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-02-26T10:28:44.492963Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b671cd20-dc73-11e5-abe1-000c29c3b190.
2016-02-26T10:28:44.495657Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-02-26T10:28:44.511137Z 1 [Note] A temporary password is generated for [email protected]: fUVd&7p,qbf0
# 此處需要注意root使用者生成的隨機密碼,後面要用到。

複製程式碼

 

  啟動mysql

 

 bin/mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --user=root

 

  設定root使用者密碼

[[email protected] mysql]# ./bin/mysqladmin -uroot -p password
Enter password: 
New password: 
Confirm new password: 
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

  編輯/etc/profile,將mysql新增到環境變數(可參考java新增環境變數的方法)

 

export PATH=$PATH:/usr/local/mysql/bin/

 

  • 安裝nginx

  安裝依賴庫

 

yum -y install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel libssl-dev

 

  下載並解壓

wget http://nginx.org/download/nginx-1.9.12.tar.gz
tar -zxvf nginx-1.9.12.tar.gz

  編譯安裝

./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module
make
make install

  如果沒報錯的話,檢視是否安裝成功

whereis nginx

  新增到防火牆例外

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

  啟動nginx

 

/usr/local/nginx/nginx

 

  訪問:http://IP/,熟悉的味道

 

 

  • Nginx和tomcat整合

  tomcat配置

複製程式碼

###### Tomcat配置
# 建立tomcat專案預設目錄
mkdir /home/www/web/jsp/
# 配置tomcat預設專案
# ./conf/server.xml中的Host節點中新增
<Context path="" debug="0" docBase="/home/www/web/jsp/" reloadable="true"></Context>
# 重啟tomcat
/usr/local/apache-tomcat-7.0.68/bin/shutdown.sh
/usr/local/apache-tomcat-7.0.68/bin/startup.sh
# 建立index.jsp內容為“tomcat web project index page”

複製程式碼

 

  http://IP:8080/

  

  建立test.html,內容為“tomcat test html”

  http://192.168.222.128:8080/test.html

  

  nginx配置

  建立nginx靜態檔案存放目錄

 

mkdir /home/www/web/ROOT

 

  代理設定

複製程式碼

[[email protected] nginx]# vi proxy.conf

#!nginx 
# proxy.conf
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;  #獲取真實ip
#proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #獲取代理者的真實ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

複製程式碼

  配置nginx.conf

 

複製程式碼

#執行nginx所在的使用者名稱和使用者組
#user  www www;
 
#啟動程序數
worker_processes 8;
#全域性錯誤日誌及PID檔案
error_log  /usr/local/nginx/logs/nginx_error.log  crit;
 
#pid        /usr/local/nginx/nginx.pid;
 
#Specifies the value for maximum file descriptors that can be opened by this process.
 
worker_rlimit_nofile 65535;
#工作模式及連線數上限
events
{
        use epoll;
        worker_connections 65535;
}
#設定http伺服器,利用它的反向代理功能提供負載均衡支援
http
{
        #設定mime型別
        include       mime.types;
        default_type  application/octet-stream;
        include /usr/local/nginx/proxy.conf;
        #charset  gb2312;
        #設定請求緩衝   
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        #client_max_body_size 8m;
         
        sendfile on;
        tcp_nopush     on;
         
        keepalive_timeout 60;
         
        tcp_nodelay on;
         
        #  fastcgi_connect_timeout 300;
        #  fastcgi_send_timeout 300;
        #  fastcgi_read_timeout 300;
        #  fastcgi_buffer_size 64k;
        #  fastcgi_buffers 4 64k;
        #  fastcgi_busy_buffers_size 128k;
        #  fastcgi_temp_file_write_size 128k;
         
        #  gzip on;
        #  gzip_min_length  1k;
        #  gzip_buffers     4 16k;
        #  gzip_http_version 1.0;
        #  gzip_comp_level 2;
        #  gzip_types       text/plain application/x-javascript text/css application/xml;
        #  gzip_vary on;
         
        #limit_zone  crawler  $binary_remote_addr  10m;
        ###禁止通過ip訪問站點
        #server{
        #       server_name _;
        #       return 404;
        #}


        server
        {
                listen       80;
                server_name  localhost;
                index index.html index.htm index.jsp;#設定訪問的預設首頁地址
                root  /home/www/web/ROOT;#設定網站的資源存放路徑

                #limit_conn   crawler  20;   

                location / {
                        index   index.html index.jsp;
                }        

                location ~ .*.jsp$ #所有jsp的頁面均交由tomcat處理
                {
                        index index.jsp;
                        proxy_pass http://192.168.222.128:8080;#轉向tomcat處理
                }
         
         
                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #設定訪問靜態檔案直接讀取不經過tomcat
                {
                        expires      30d;
                }
         
                location ~ .*\.(js|css)?$
                {
                        expires      1h;
                }
         
                #定義訪問日誌的寫入格式
                #log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
                #'$status $body_bytes_sent "$http_referer" '
                #'"$http_user_agent" $http_x_forwarded_for';
                #access_log  /usr/local/nginx/logs/localhost.log access;#設定訪問日誌的存放路徑
         
        }
}

複製程式碼

 

  檢測配置檔案

/usr/local/nginx/nginx -t
nginx: the configuration file /usr/local/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/nginx.conf test is successful

  平滑重啟nginx

/usr/local/nginx/nginx -s reload

  /home/www/web/ROOT目錄下建立test.html內容為“nginx static html”

  訪問:http://IP/test.html

  此時訪問的是nginx靜態資源所在的目錄

  http://IP/index.jsp

  

  此時html等靜態檔案訪問的是nginx指定的靜態檔案目錄,而jsp檔案則分發到tomcat進行處理。

 

 

 

  • 服務自啟動

  mysql自啟動

 

複製程式碼

1./usr/lib/systemd/system目錄下新建mysql.service
    [Unit]
Description=mysql
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
#LimitNOFILE=max_open_files
PIDFile=/usr/local/mysql/mysql.pid
TimeoutSec=0
PermissionsStartOnly=true
ExecStartPre=/usr/local/mysql/
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --user=mysql
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
#Nice=nice_level
#LimitCore=core_file_limit
#Environment="LD_PRELOAD=/usr/local/mysql/lib"
Restart=on-failure
RestartPreventExitStatus=1

[Install]
WantedBy=multi-user.target

複製程式碼

 

  允許mysql開機啟動

 

systemctl enable mysql

 

  檢查配置是否成功

systemctl is-enabled mysql

  mysql開啟慢查詢

 

/data/mysql/mysql3306/my.cnf中新增
# 慢日誌
slow_query_log=1
slow_query_log_file=/data/mysql/mysql3306/logs/localhost-slow.log
slow_launch_time=1

 

  nginx和tomcat自啟動(和mysql類似,不再闡述)