centos 6 64bit + tomcat 7 + nginx 1.0 + php-5.3.8
-------------------------------- 安装JAVA容器 ---------------------------------------
yum -y install gcc gcc-c++ gcc-g77 flex bison autoconf automake libxml2 libxml2-devel curl curl-devel libtool make bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel openssh-clients freetype-devel pam-devel wget vim mysql-devel cmake openldap openldap-devel ntpdate
yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake libxml2 libxml2-devel curl curl-devel libtool make bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel openssh-clients freetype-devel pam-devel wget vim mysql-devel cmake openldap openldap-devel ntpdate
[root@localhost installation]# rpm -ivh jdk-7-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
[root@localhost installation]# java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
安装tomcat,下载并解压放到/usr/local
yum install apr-devel
同时,bin目录下面有个tomcat-native.tar.gz,用来加速tomcat,解压该文件
tar zxvf tomcat-native.tar.gz
cd bin/tomcat-native-1.1.22-src/jni/native
./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/java/jdk1.7.0/
make && make install
export LD_LIBRARY_PATH="/usr/local/apr/lib"
启动tomcat,访问 http:IP:8080
-------------------------------- 配置 tomcat ---------------------------------------
1、管理管理员用户,增加角色并将角色给予tomcat用户,否则在进入管理web页面的时候会提示403没有权限(它会提示该怎样做),vim conf/tomcat-users.xml
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="goto5184" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>
2、vi /conf/catalina.properties 最后增加
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
org.apache.el.parser.SKIP_IDENTIFIER_CHECK=true
3、修改 conf/server.xml,和配置好日志信息级别 conf/logging.properties(http://wubolu.iteye.com/admin/blogs/1169128 ),修改通讯端口和虚拟目录。这里我修改成81端口,虚拟目录和NGINX同一目录。
修改以上内容后重启tomcat生效
4、JVM优化
在tomcat 的bin 下catalina.sh 里,位置cygwin=false前添加:
JAVA_OPTS="-server -Xms1024m -Xmx2048m -Xmn512m -Xss1m -XX:PermSize=128m -XX:MaxPermSize=256m"
说明: (参考http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm)
参考:JAVA内存的那些事 http://wubolu.iteye.com/admin/blogs/1770810
-server:一定要作为第一个参数,会使JVM启动速度变慢,但会显著提升JVM性能 -Xms:初始Heap大小,使用的最小内存 -Xmx:java heap最大值,使用的最大内存 -Xss:每个线程的Stack大小 -XX:MaxPermSize:设置最大永久区大小,永久保存区用于存放Class信息和元信息 -verbose:gc 现实垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日志文件 -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 -XX:+UseParNewGC :缩短minor收集的时间 -XX:+UseConcMarkSweepGC :缩短major收集的时间 提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适 |
-------------------------------- 安装 mysql ---------------------------------------
(这里安装mysql但不启用,为了日后能顺利找到依赖mysql的文件)
创建mysql用户
groupadd mysql
useradd -g mysql mysql
安装mysql
tar zxvf mysql-5.5.9.tar.gz
MY_dir="/usr/local/mysql"
cmake -DCMAKE_INSTALL_PREFIX="$MY_dir" -DDEFAULT_CHARSET=utf8 -DMYSQL_DATADIR="$MY_dir/"data/ -DCMAKE_INSTALL_PREFIX="$MY_dir" -DSYSCONFDIR="$MY_dir" -DDEFAULT_COLLATION=utf8_general_ci -DENABLE_DEBUG_SYNC=0 -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=1 -DWITH_READLINE=1 .
make
make install
./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
使用my-large.cnf模板
cp mysql/support-files/my-large.cnf ../my.cnf
添加慢查询日志及其他一些设置
[mysqld]
slow-query-log = 1
slow-query-log-file = /usr/local/mysql/data/slow.log
default-storage-engine = MyISAM
character-set-server = utf8 #如果不指定这个,程序连接可能导致乱码。查看mysql> show variables like '%character%'
wait_timeout = 300 #对当前连接有效。
interactive_timeout = 300 #对后续连接
-------------------------------- 安装 NGINX ---------------------------------------
groupadd www
useradd -g www www
mkdir -p /usr/local/www/
chown -R www:www /usr/local/www/
下载安装 PCRE
tar zxvf pcre-8.13.tar.gz
cd pcre-8.13
./configure
make && make install
make clean
安装 nginx 1.0.5
tar zxvf nginx-1.0.5.tar.gz
./configure --user=www --group=www --prefix=/usr/local/nginx/
make && make install
-------------------------------- 配置 NGINX ---------------------------------------
#修改好配置文件,启动就可以访问到Welcome to nginx!
--NGINX:
user www www;
worker_processes 8;
error_log logs/error.log;
pid nginx.pid;
events {
use epoll;
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
#charset utf-8;
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 8 128k;
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;
fastcgi_intercept_errors on;
error_page 404 /404.html;
proxy_temp_path /usr/local/nginx/proxy_temp_path;
proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=20g;
# 设置反向代理缓存区名称为 cache_one,内存大小500M,自动清除超过一天未被访问的缓存数据,硬盘缓存空间大小20G。
server {
listen 80;
server_name g.wubolu.com;
root /usr/local/www/;
index index.php index.html index.htm;
#access_log off;
error_page 404 /no.html;
error_page 500 502 503 504 /50x.html;
location ~* ^.+.(jpg|jpeg|gif|css|png|js|html|htm)$ {
expires 1d;
break;
}
location ~* ^/(images|javascript|js|css|flash|media|static)/ {
expires 1d;
}
location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/$fastcgi_script_name;
include fastcgi_params;
}
location ~ .*\.(jsp|cgi|shtml|xml)?$ {
proxy_pass http://localhost:81;
include /usr/local/nginx/conf/proxy.conf;
}
}
# 反向代理TOMCAT配置范例
server {
listen 80;
server_name test.xxx.com;
root /usr/local/www/test/;
index index.jsp index.html index.htm;
#access_log off;
error_page 404 /no.html;
error_page 500 502 503 504 /50x.html;
location ~ .*\.(jsp|cgi|shtml|xml)?$ {
proxy_pass http://127.0.0.1:81;
include /usr/local/nginx/conf/proxy.conf;
}
location ~ .*\.(jpg|jpeg|gif|png|bmp|swf|js|css)?$ {
proxy_cache cache_one;
proxy_cache_valid 200 304 1h;
proxy_cache_valid 301 302 1m;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:81;
}
}
}
--------------------- HTTP Proxy 模块,此模块能代理请求到其它服务器 -----------------
# vim /usr/local/nginx/conf/proxy.conf
proxy_redirect ofize 8k;
proxy_buffering on;
proxy_buffers 8 128k;
proxy_buffer_size 128k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 512m;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_connect_timeout 60;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_max_temp_file_size 128m;
proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间,官方说最大不得超过75秒
proxy_read_timeout:连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout :后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
了解更多参考:
http://wiki.nginx.org/NginxChsHttpProxyModule
http://www.cnblogs.com/hsapphire/archive/2010/04/04/1704052.html
配置php-fpm配置文件,如fastcgi.conf或fcgi.conf
配置好 nginx.conf
# 创建反向代理目录,必须在同一分区上。
mkdir -p /usr/local/nginx/proxy_temp_path
mkdir -p /usr/local/nginx/proxy_cache_path
# 提示:清空反向代理的缓存则删除 proxy_cache_path 下内容即可。或者安装第三方插件ngx_cache_purge则可以用URL方式删除指定缓存。
[root@localhost conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok
-------------------------------- 安装 PHP ---------------------------------------
程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展 mcrypt, mcrypt软件依赖libmcrypt和mhash两个库。
1.安装Libmcrypt
tar jxvf libmcrypt-2.5.8.tar.bz2
cd libmcrypt-2.5.8
./configure
make &&make install
1.1
cd libmcrypt-2.5.8/libltdl/
./configure --enable-ltdl-install
make && make install
2.安装mhash
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure
make && make install
3.安装mcrypt
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
LD_LIBRARY_PATH=/usr/local/lib ./configure #如果不加环境变量LD_LIBRARY_PATH=/usr/local/lib的话,会提示找不到libmcrypt链接库
make && make install
4.安装libiconv
tar zxvf libiconv-1.13.1.tar.gz
/configure --prefix=/usr/local/
make
make install
ln -s /usr/local/mysql/lib/ /usr/lib64/ #32位系统在/usr/lib/
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
cp -frp /usr/lib64/libldap* /usr/lib/
注:这里到 mysql 是从其他机器CP过来已经安装好的文件包,编译PHP的时候为了不安装MYSQL也能找到MYSQL的支持库和所需文件。
5.3.3 开始源码中开始包含 php-fpm,不用专门再打补丁了,只需要解开源码直接configure,关于php-fpm的编译参数有--enable-fpm --with-fpm-user=www --with-fpm-group=www
tar zxvf php-5.3.10.tar.gz
cd php-5.3.10
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-pdo --with-pdo-mysql=/usr/local/mysql --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-safe-mode --enable-ftp --enable-zip --with-bz2 --with-png-dir --with-zlib --with-libxml-dir=/usr --with-jpeg-dir --with-png-dir=/usr/local/png --with-freetype-dir --with-iconv --enable-sysvsem --enable-inline-optimization --enable-xml --with-mcrypt --with-mhash -with-libxml-dir --enable-bcmath --enable-shmop --with-XMLrpc --with-zlib-dir --with-gd --enable-gd-native-ttf --with-curl --with-curlwrappers --with-pear --enable-mbregex --enable-calendar --enable-mbstring --enable-sockets --enable-exif --enable-magic-quotes --disable-rpath --disable-debug --enable-fpm --enable-sqlite-utf8 --enable-soap --with-ldap --with-ldap-sasl --enable-pcntl --with-openssl
make ZEND_EXTRA_LIBS='-liconv'
make install
配置两个配置文件,php.ini 是PHP全局配置文件,php-fpm.com 用于配置管理FastCGI引擎(FastCGI实质是PHP动态语言的一个解析引擎)
-- 建立php.ini配置文件,其中 php.ini-production 是用于生产环境稳定配置,php.ini-development 为开发环境专用。
cp php.ini-production /usr/local/php/etc/php.ini
-- 修改 php.ini 部分内容
修改为output_buffering = On
修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞。
-- 去掉注释
--配置 FPM,cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
修改 php-fpm.conf 全部内容替换为:
[global]
pid = run/php-fpm.pid # 默认是none的,影响service php-fpm脚本
[www]
listen = 127.0.0.1:9000
user = www #用户组和用户名跟NGINX的配置一致
group = www
pm = dynamic # static (设置为静态进程数)或者dynamic (设置为动态进程数)
pm.max_children = 50 # 静态方式下开启的php-fpm进程数量
pm.start_servers = 20 # 动态方式下的起始php-fpm进程数量
pm.min_spare_servers = 5 # 动态方式下的最小php-fpm进程数量
pm.max_spare_servers = 35 # 动态方式下的最大php-fpm进程数量
rlimit_files = 10240 #设置PHP-FPM对打开文件描述符的限制,最终受LINUX内核打开最大文件数限制
php_flag[display_errors] = on #打开报错,否则遇到错误只报500
php_admin_value[session.save_path] = /tmp
php_admin_value[date.timezone] = 'Asia/Chongqing'
启动脚本设置:
cp SOUR_DIR/php-5.3.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
启动:service php-fpm start
否则只能killall php-fpm后再启动/usr/local/php/sbin/php-fpm
配置eAccelerator加速PHP:
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1/
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make
make install
mkdir -p /usr/local/eaccelerator_cache
find /usr/local/ -name eaccelerator.so
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so
配置文件的最末尾,加上以下配置信息:
vi /usr/local/php/etc/php.ini
[eaccelerator]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
-------------- ----------- ------------------ 优化 CENTOS 内核 ----------------- ----------- -------
nice 调整SSHD启动优先级别,避免SSH因为MYSQL、APACHE服务过载或DOC攻击导致SSHD服务无法响应。
查看启动脚本
vim /etc/init.d/sshd
修改里面的
$SSHD $OPTIONS && success || failure
为
nice -n -2 $SSHD $OPTIONS && success || failure
/etc/init.d/sshd restart
查看优先级
ps -aeo cmd,pid,nice |grep sshd
在CentOS下运行Java程序时经常会由于一些原因导致出现Too many open files的异常,ulimit -a默认open files为1024
vim /etc/security/limits.conf 加入
#<domain> <type> <item> <value>
* soft nofile 65535
* hard nofile 65535
定时校正服务器时间
yum install ntp
crontab -e
1 4 * * * ntpdate ntp.api.bz
vim /etc/sysctl.conf
fs.file-max = 65536
vm.swappiness = 0
相关推荐
"Tomcat+Nginx+PHP整合笔记" Tomcat+Nginx+PHP整合笔记是指将Tomcat、Nginx和PHP三个软件集成在一起,实现一个高效的Web服务器解决方案。在这个笔记中,我们将详细介绍如何安装和配置Tomcat、Nginx和PHP,并将其...
在构建高性能、高可用性的Web服务时,"redis+tomcat+nginx负载均衡配置"是一个常见且有效的架构模式。这个组合充分利用了各个组件的优势,确保系统稳定、响应快速,并能够处理大量的并发请求。以下是关于这个配置的...
- **整合Nginx与Tomcat**:按照Nginx+Tomcat整合文档,配置Nginx以反向代理到多个Tomcat实例,并实现session共享。 - **测试验证**:创建多台Tomcat实例,配置好MSM,然后通过Nginx访问应用,检查session是否能在...
有小白看着都可以照做的文档及说明。已经有session的包,所使用的Tomcat版本为 7.0.62 ,比网上其它的说明详细很多。
这个压缩包包含了"keepalived+nginx+tomcat+redis+mysql"所需的基础组件,特别是Java Development Kit(JDK)。下面我们将详细探讨这些组件及其在IT领域的应用。 首先,JDK是Java编程语言的基石,它提供了编译、...
Linux 下 Tomcat+nginx+redis 负载均衡配置是指在 Linux 操作系统下,使用 Tomcat、nginx 和 Redis 实现负载均衡和资源共享的配置方法。该配置主要通过 nginx 实现负载均衡,Tomcat 提供 Web 服务,Redis 提供 ...
tomcat+nginx+memcache高可用
在构建高性能、高可用性的Web服务时,"tomcat+nginx集群"是一个常见的架构模式。这个模式结合了Tomcat作为应用服务器处理Java EE应用程序,而Nginx则作为反向代理和负载均衡器,确保流量的高效分配和系统的稳定运行...
Tomcat 安装及配置教程 Linux 下 Tomcat+Nginx 服务器环境安装配置简明教程 基于 Linux 平台的 Tomcat+Nginx 服务器环境安装配置是当今很流行的一种解决方案。本教程旨在指导用户从头搭建 Linux 下的 Tomcat+Nginx ...
在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构充分利用了每个组件的优势,以实现高效的数据处理、动态内容渲染和负载均衡。以下是对这套技术栈的详细解释: 1. **...
标题 "tomcat+nginx+session" 暗示了我们讨论的主题是关于使用Tomcat作为应用服务器,Nginx作为反向代理服务器,并且涉及到如何在这样的架构中处理和共享用户会话(session)。在分布式系统中,正确处理session是...
国产中标麒麟操作系统nginx+tomcat+redis+mysql安装部署手册(CSDN).zip
### 分布式部署方案:Redis + Tomcat + Nginx 在现代Web应用开发中,随着用户数量的增长和业务需求的变化,单体架构往往难以满足高性能、高可用性的要求,因此分布式部署成为一种常见的解决方案。本文将围绕“Redis...
tomcat+nginx+redis 实现sessionId共享!里面有文档自己看就可以了很详细了很详细了很详细了
Redis + Tomcat + Nginx 集群实现 Session 共享
《国产中标麒麟操作系统Nginx+Tomcat+Redis集群安装部署手册》是针对在中标麒麟操作系统上搭建Web服务环境的详细指南。这份手册由东软集团股份有限公司于2019年12月编撰,旨在解决在实际部署过程中可能出现的各种...
配置tomcat+nginx所需要的全部文件以及配置示例,可以直接使用 tomcat+nginx反向代理集群配置.zip -------------------------------------- memcached memcached-1.6.5的jar nginx.conf nginx-1.4.7.zip tomcat1-...
【标题】"Tomcat+Nginx+Redis集成Demo"是一个综合性的技术实践,它将三个重要的组件结合在一起,以优化Web应用的性能和可扩展性。Tomcat是Apache软件基金会的一个开源Java应用服务器,主要处理Java Servlet和JSP应用...
手册为部署Tomcat+Nginx+Redis+PostgreSQL架构系统在Windows服务器上提供了全面的步骤指导。从系统运行环境的硬件和软件配置到各组件的安装和配置,以及数据库的连接和导入,每一步都有详细说明。这对于初学者或有...
centos7安装+tomcat+mysql+jdk+nginx配置步骤,按着步骤走傻子都能做出来,非常详细