Centos 下JBoss as7 + jdk+mysql+nginx 網站配置


網站基本框架設計好了,下來就開始搭建服務器框架了 。

服務器組選的是 VPS,為什么選VPS,因為我們除了要使用公共的web服務外,還要定制一些系統的軟件和服務,自定義上報端口等。除了自己承包整機服務器外,VPS無疑是最佳選擇了。

 

機器配置

CentOS Linux 6.2  
Linux 2.6.18-274.7.1.el5.028stab095.1 on i686  
Intel(R) Xeon(R) CPU E5645 @ 2.40GHz, 1 cores 

內存2G 

硬盤100G 

 

網站架構見我之前的帖子:http://www.cnblogs.com/inteliot/archive/2012/04/17/2454518.html 

選用nginx主要做靜態、動態內容的分離和負載均衡。jboss完成 jsp和后台的java代碼的環境支持。

為什么不選tomcat而是JBoss,上網google了一圈,似乎Jboss要好於tomcat,所以就想試試效果

JBoss AS7 支持 集群管理,有standalone模式和domainserver模式,domainserver模式支持多級分層架構,可以支持大的企業級應用。

我們的生產環境采用standalone。 

mysql

 

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-5.5.24-1.linux2.6.x86_64.tar/from/http://ftp.jaist.ac.jp/pub/mysql/

 

查看已安裝的包:

rpm -qa | grep mysql 

強制性卸載老版本:

rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64 

安裝新版本: 

rpm -ivh MySQL-client-5.5.24-1.linux2.6.x86_64.rpm MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm MySQL-server-5.5.24-1.linux2.6.x86_64.rpm

說明:rpm安裝方式默認是沒有my.cnf的  

1.錯誤:

 

error: Failed dependencies:
libaio.so.1()(64bit) is needed by MySQL-server-5.5.24-1.linux2.6.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.5.24-1.linux2.6.x86_64
libaio.so.1(LIBAIO_0.4)(64bit) is needed by MySQL-server-5.5.24-1.linux2.6.x86_64 

解決:

下載 libaio-0.3.107-10.el6.x86_64.rpm 

安裝:rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm

或者:

# yum install libaio

JDK 

下載頁面http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html 

解壓

修改系統環境變量

vi /etc/profile

在末尾加入 

JAVA_HOME=/usr/local/jdk1.7.0_03/
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib:$CLASSPATH   

立即生效 

source  /etc/profile

檢測是否安裝成功 

java -version  
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 
1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

Jboss AS7

wget http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.tar.gz

解壓完 運行

./bin/standalone.sh 

錯誤一:安裝完jdk后,沒有配置java環境變量,導致java調用失敗,可以運行 java --version,檢測是否ok 

錯誤二:jboss7.1 standalone 模式正常,domainserver模式跑步起來,出現錯誤:
[Host Controller] Error occurred during initialization of VM
[Host Controller] Could not reserve enough space for object heap
[Host Controller] Error: Could not create the Java Virtual Machine.
[Host Controller] Error: A fatal exception has occurred. Program will exit.

原因:Xmx 和 MaxPermSize 過大,預留失敗

修改:/usr/local/jboss/bin/domain.conf
JAVA_OPTS="-Xms32m -Xmx64m -XX:MaxPermSize=64m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

同時需要在 /etc/profile 下添加

export _JAVA_OPTIONS="-Xms32m -Xmx64m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:NewSize=10m -XX:MaxNewSize=10m -XX:SurvivorRatio=6 -XX:TargetSurvivorRatio=80 -XX:+CMSClassUnloadingEnabled"

添加完后 需要 source /etc/profile

修改完后,jboss 初步運行起來了:

 最后,開機自啟動

在 /etc/rc.d/rc.local 加上啟動命令就可以了

NginX 安裝

 一、准備工作

下載OpenSSL :

wget http://openssl.org/source/openssl-1.0.1.tar.gz

下載pcre

wget http://downloads.sourceforge.net/project/pcre/pcre/8.30/pcre-8.30.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpcre%2Ffiles%2Fpcre%2F8.30%2F&ts=1336739904&use_mirror=cdnetworks-kr-2 

wget http://downloads.sourceforge.net/project/libpng/zlib/1.2.6/zlib-1.2.6.tar.gz?r=&ts=1336743664&use_mirror=cdnetworks-kr-1  

分別解壓到

/usr/openssl-1.0.1/   

/usr/zlib-1.2.6/  

/usr/pcre-8.30/ 

二、安裝nginx 包

wget http://nginx.org/download/nginx-1.0.14.tar.gz 

1. 配置 和編譯 

./configure --user=www --group=www --prefix=/data/web/nginx --add-module=../ngx_cache_purge-2.0 --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=../pcre-8.30/ --with-openssl=../openssl-1.0.1/ --with-zlib=../zlib-1.2.6/

make && make install 

錯誤:

 

cd /usr/openssl-1.0.1/ \
    && make clean \
    && ./config --prefix=/usr/openssl-1.0.1//.openssl no-shared  no-threads \
    && make \
    && make install LIBDIR=lib
make[2]: Entering directory `/usr/openssl-1.0.1'
Makefile is older than Makefile.org, Configure or config.
Reconfigure the source tree (via './config' or 'perl Configure'), please.
make[2]: *** [Makefile] Error 1
make[2]: Leaving directory `/usr/openssl-1.0.1'
make[1]: *** [/usr/openssl-1.0.1//.openssl/include/openssl/ssl.h] Error 2
make[1]: Leaving directory `/home/zcj/nginx/nginx-1.0.14'
make: *** [build] Error 2

 

解決:

錯誤提示,進入openssl 目錄,執行

./config 

回到nginx目錄,重新 make

錯誤

 

make[2]: Entering directory `/usr/pcre-8.30'
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /usr/pcre-8.30/missing --run aclocal-1.11 -I m4
aclocal-1.11: couldn't open directory `m4': No such file or directory
make[2]: *** [aclocal.m4] Error 1
make[2]: Leaving directory `/usr/pcre-8.30'
make[1]: *** [/usr/pcre-8.30//.libs/libpcre.a] Error 2
make[1]: Leaving directory `/home/zcj/nginx/nginx-1.0.14'
make: *** [build] Error 2

解決 :在pcre 目錄下創建空目錄 m4 

錯誤

libtool: You should recreate aclocal.m4 with macros from libtool 2.4
libtool: and run autoconf again.
make[2]: *** [pcre_byte_order.lo] Error 63
make[2]: Leaving directory `/usr/pcre-8.30'
make[1]: *** [/usr/pcre-8.30//.libs/libpcre.a] Error 2
make[1]: Leaving directory `/home/zcj/nginx/nginx-1.0.14'

make: *** [build] Error 2 

解決: 用系統安裝的libtool 執行文件替換pcre 下的libtool  

cp -f /usr/bin/libtool /usr/pcre-8.30/

 

OK。成功

2. 添加開機自啟動

vi /etc/rc.d/rc.local

添加開機運行命令: /usr/local/webserver/nginx/sbin/nginx

三、運行nginx

運行前,先卸載httpd :rpm -e httpd --nodeps

運行nginx :/usr/local/webserver/nginx/sbin/nginx

1. 錯誤: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解決

添加鏈接 ln -s /usr/local/lib/libpcre.so.1 /lib/libpcre.so.1

x64環境下是 ln -s /usr/local/lib/libpcre.so.1 /lib64/libpcre.so.1

2. 錯誤:[emerg]: getpwnam(“www”) failed

原因 :配置時用的用戶和組不存在

解決

/usr/sbin/groupadd -f www

/usr/sbin/useradd -g www www

四、 配置nginx

1. 配置nginx日志目錄及網站根目錄

mkdir -p /var/log/nginx
chmod +w /var/log/nginx
mkdir -p /var/www/server1
chmod +w /var/www/server1

2. 修改 conf文件 

 vi /usr/local/webserver/nginx/conf/nginx.conf  

 

user  www www;
worker_processes 8;

error_log  /var/log/nginx/nginx_error.log  crit;

pid        /usr/local/webserver/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
{
  include       mime.types;
  default_type  application/octet-stream; 
  #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; 

  upstream jboss_svr{

    server 127.0.0.1:8080;
  } 

  server
  {

    listen       0.0.0.0:8088;
    index index.html index.htm index.php;
    root  /var/www/server1; 

    #limit_conn   crawler  20; 

    location ~ .*\.(jsp|jspx|do)?$
    {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_pass http://jboss_svr;
    } 

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
      expires      30d;
    } 

    location ~ .*\.(js|css)?$
    {
      expires      1h;
    }

    location ~* .*\.sh$ {
        return 403;
    } 
    log_format  server1_log  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" $http_x_forwarded_for';

    access_log  /var/log/nginx/server1.log  server1_log;
  }
}

五. 在不停止Nginx服務的情況下平滑變更Nginx配置

1. 修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,請執行以下命令檢查配置文件是否正確:

/usr/local/webserver/nginx/sbin/nginx -t

如果屏幕顯示以下兩行信息,說明配置文件正確:

the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok

the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully

2. 平滑重啟:

對於Nginx 0.8.x版本,現在平滑重啟Nginx配置非常簡單,執行以下命令即可:

/usr/local/webserver/nginx/sbin/nginx -s reload

六、編寫每天定時切割Nginx日志的腳本

1、創建腳本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh

vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

輸入以下內容:

 

#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path="/usr/local/webserver/nginx/logs/"
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

2、設置crontab,每天凌晨00:00切割nginx訪問日志

crontab -e 

輸入以下內容:

00 00 * * * /bin/bash  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM