nginx+tomcat+mysql模板配置javascript
說明:css
nginx+tomcat+mysql所有安裝在一臺雲服務器上,而後對其作一個鏡像html
服務器配置:java
ucloud雲服務器node
centos6.5 64位mysql
cpu:4核linux
內存:8Gnginx
軟件版本:c++
nginx-1.8.0.tar.gzweb
apache-tomcat-7.0.64.tar.gz
jdk-7u80-linux-x64.rpm
mysql-5.6.27.tar.gz
安裝jdk:
軟件:jdk-7u80-linux-x64.rpm
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
rpm -qa | grep java #查看是否已安裝java環境 mkdir /usr/java #java程序將安裝在此目錄 cd /usr/local/src/ rpm -ivh jdk-7u80-linux-x64.rpm
vi /etc/profile #設置環境變量 ##在最後添加: export JAVA_HOME=/usr/java/jdk1.7.0_80 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile #當即生效
java -version #查看安裝是否成功 java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b02, mixed mode)
安裝tomcat:
軟件:apache-tomcat-7.0.64.tar.gz
下載地址:http://tomcat.apache.org/download-70.cgi
cd /usr/local/src/ tar -zxf apache-tomcat-7.0.64.tar.gz cp -a apache-tomcat-7.0.64 /usr/local/tomcat7/
配置和優化:
vi /usr/local/tomcat7/conf/server.xml ##修改成: <Connector port="8080" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" enableLookups="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/> 注意: tomcat7裏面沒有maxSpareThreads="1000",minProcessors="100",maxProcessors="1000" 這三個參數 參考:http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
vi /usr/local/tomcat7/bin/catalina.sh ##添加: JAVA_OPTS='-server -Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
修改日誌目錄:/data/tomcat7/logs
vi /usr/local/tomcat7/conf/server.xml <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/tomcat7/logs"
vi /usr/local/tomcat7/conf/logging.properties 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = /data/tomcat7/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = /data/tomcat7/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost. 3manager.org.apache.juli.FileHandler.level = FINE 3manager.org.apache.juli.FileHandler.directory = /data/tomcat7/logs 3manager.org.apache.juli.FileHandler.prefix = manager. 4host-manager.org.apache.juli.FileHandler.level = FINE 4host-manager.org.apache.juli.FileHandler.directory = /data/tomcat7/logs 4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
vi /usr/local/tomcat7/bin/catalina.sh if [ -z "$CATALINA_OUT" ] ; then CATALINA_OUT=/data/tomcat7/logs/catalina.out fi
修改日誌輸出格式:
vi /usr/local/tomcat7/conf/server.xml pattern="%{X-Real-IP}i %a %l %u %t "%r" %s %b" /> #nginx作反向代理,%{X-Real-IP}i 獲取用戶的真實ip
修改根目錄:
vi /usr/local/tomcat7/conf/server.xml <Host name="localhost" appBase="/data/tomcat7/www/"
cronolog日誌切割:
1.安裝cronolog cd /usr/local/src/ tar xf cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure && make && make install which cronolog:查看是否安裝成功 2.修改catalina.sh vi /opt/tomcat7/bin/catalina.sh #大概390行,刪除原來的2行(有兩處地方要改) #改成: org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \ | /usr/local/sbin/cronolog /data/tomcat7/logs/catalina.%Y-%m-%d.out >> /dev/null & 3.重啓tomcat
安裝APR插件,提升tomcat處理靜態請求的性能:
tomcat 使用apr運行模式,提高IO性能 apr configure報錯 rm: cannot remove `libtoolT': No such file or directory 解決: 編輯 configure文件,找到29605行 查找/$RM 按n鍵查找 加上$RM -f tar -zxvf apr-1.5.2.tar.gz cd apr-1.5.2 ./configure --prefix=/opt/apr make make install tar -zxvf apr-iconv-1.2.1.tar.gz cd apr-iconv-1.2.1 ./configure --prefix=/opt/apr-iconv --with-apr=/opt/apr make make install tar -zxvf apr-util-1.5.4.tar.gz cd apr-util-1.5.4 ./configure --prefix=/opt/apr-util --with-apr=/opt/apr --with-apr-iconv=/opt/apr-iconv/bin/apriconv make make install cd /opt/tomcat7/bin tar -zxvf tomcat-native.tar.gz cd /opt/tomcat7/bin/tomcat-native-1.1.33-src/jni/native/ ./configure --prefix=/opt/apr --with-apr=/opt/apr --with-java-home=/usr/java/jdk1.7.0_80 make make install 編輯/etc/profile,添加環境變量 vim /etc/profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/apr/lib source /etc/profile cd /opt/tomcat7/conf vi server.xml 將 <Connector port="80" protocol="HTTP/1.1" 改成 <Connector port="80" protocol="org.apache.coyote.http11.Http11AprProtocol" 重啓tomcat 查看打印的日誌信息 九月 14, 2015 3:24:00 下午 org.apache.catalina.core.AprLifecycleListener init INFO: Loaded APR based Apache Tomcat Native library 1.1.31 using APR version 1.5.2. 說明apr啓用成功
建立日誌目錄和根目錄:
mkdir -p /data/tomcat7/logs mkdir -p /data/tomcat7/www/ROOT
啓動tomcat:
/usr/local/tomcat7/bin/startup.sh /usr/local/tomcat7/bin/shutdown.sh #關閉tomcat
設置開機自動啓動:
vi /etc/rc.local ##添加: /usr/local/tomcat7/bin/startup.sh
安裝nginx:
軟件:nginx-1.8.0.tar.gz
下載地址:http://nginx.org/en/download.html
安裝nginx的依賴包:
yum -y install make gcc gcc-c++ autoconf automake yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
安裝pcre,使nginx支持rewrite重寫:
軟件:pcre-8.37.tar.gz
載地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
cd /usr/local/src/ tar -zxf pcre-8.37.tar.gz cd pcre-8.37 ./configure make make install
安裝ngx_cache_purge:
軟件:ngx_cache_purge-2.3.tar.gz
下載地址:http://labs.frickle.com/nginx_ngx_cache_purge/
cd /usr/local/src/ tar -zxf ngx_cache_purge-2.3.tar.gz
安裝nginx:
cd /usr/local/src/ tar -zxf nginx-1.8.0.tar.gz cd nginx-1.8.0 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_realip_module --add-module=../ngx_cache_purge-2.3 make make install
建立nginx用戶:
useradd -s /sbin/nologin nginx
修改文件打開數:(忽略)
ulimit -n 65535 #記得設置開機自動啓動
修改配置文件:
mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old vi /usr/local/nginx/conf/nginx.conf user nginx nginx; worker_processes 4; error_log /data/nginx/logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } 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 "$upstream_addr" "$upstream_status" "$upstream_response_time" "$request_time"'; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; sendfile on; server_tokens off; tcp_nopush on; tcp_nodelay on; client_header_timeout 30; client_body_timeout 30; send_timeout 30; client_max_body_size 100M; keepalive_timeout 60; proxy_connect_timeout 100; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml text/javascript; gzip_vary on; upstream web1{ #ip_hash; server 139.196.xx.xxx:8080 max_fails=3 fail_timeout=10s; #server 192.168.247.131:8080 max_fails=3 fail_timeout=30s; } server { listen 80; server_name www.jinzhuanch.com; root /data/nginx/www/www.scj.com; index index.html index.htm index.jsp; #rewrite /login$ https://$server_name$request_uri; #rewrite /register.html$ https://$server_name$request_uri; #rewrite /account/.*$ https://$server_name$request_uri; access_log /data/nginx/logs/www.scj.com/access.log main; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location = /p2p/rest/login { rewrite ^(.*) https://$server_name$1 permanent; } location = /p2p/static/html/register.html { rewrite ^(.*) https://$server_name$1 permanent; } location ~ /p2p/static/html/account/.* { rewrite ^(.*) https://$server_name$1 permanent; } location /p2p { proxy_pass http://web1; proxy_pass_header Server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_next_upstream http_502 http_504 error timeout invalid_header; } #location ~ .*\.(gif|jpg|png|swf|bmp|jpeg)$ { # expires 10d; #} #location ~ .*\.(js|css)?$ { # expires 1h; #} } server { listen 443; server_name www.jinzhuanch.com; root /data/nginx/www/www.scj.com; index index.html index.htm index.jsp; ssl on; ssl_certificate /usr/local/nginx/ca/server.crt; ssl_certificate_key /usr/local/nginx/ca/server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; access_log /data/nginx/logs/www.scj.com/access.log main; error_page 500 502 503 504 /50x.html; rewrite ^/p2p/?$ http://www.jinzhuanch.com/p2p; set $flag 0; if ($uri !~ /login$) { set $flag "${flag}1"; } if ($uri !~ /register.html$) { set $flag "${flag}1"; } if ($uri !~ /account/.*$) { set $flag "${flag}1"; } if ($flag = "0111") { #rewrite ^/?.*$ http://$server_name$request_uri; rewrite ^(.*) http://$server_name$1 permanent; } location = /50x.html { root html; } location /p2p { proxy_pass http://web1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_next_upstream http_502 http_504 error timeout invalid_header; } #location ~ .*\.(gif|jpg|png|swf|bmp|jpeg)$ { # expires 10d; #} #location ~ .*\.(js|css)?$ { # expires 1h; #} } #server { #listen 80 default; #server_name _; #return 500; #} } ##配置中採用了rewrite重寫 ##匹配login跳轉到https ##匹配register跳轉到https ##匹配/account/目錄跳轉到https ##其它全部請求所有用http
建立根目錄和日誌目錄:
mkdir -p /data/nginx/{www,logs}/www.scj.com
建立ssl目錄:
mkdir -p /usr/local/nginx/ca
啓動nginx:
/usr/local/nginx/sbin/nginx ##設置開機自動啓動: vi /etc/rc.local /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx -s stop #關閉nginx
安裝mysql:
軟件:mysql-5.6.27.tar.gz
下載地址:http://mirrors.sohu.com/mysql/MySQL-5.6/
安裝依賴包:
yum -y install cmake bison-devel ncurses-devel kernel-devel readline-devel perl perl-devel #yum -y install make gcc gcc-c++ cmake bison-devel ncurses-devel kernel-devel readline-devel pcre-devel openssl-devel openssl zlib zlib-devel perl perl-devel
cd /usr/local/src/ tar -zxf mysql-5.6.27.tar.gz cd mysql-5.6.27 mkdir -p /data/mysql/{data,logs} #建立數據目錄和日誌目錄 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/usr/local/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS:STRING=utf8,gbk -DWITH_DEBUG=0 make -j4 #啓用4個cpu同時編譯(默認啓用一個cpu編譯) make install
建立數據庫用戶:
groupadd mysql useradd -s /sbin/nologin -g mysql mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --defaults-file=/usr/local/mysql/my.cnf --user=mysql #初始化 chown -R mysql.mysql /data/mysql #受權
修改配置文件:8核16G
mv /usr/local/mysql/my.cnf /usr/local/mysql/my.cnf.old vi /usr/local/mysql/my.cnf [mysqld] port = 3306 basedir = /home/mysql datadir = /home/mysql/data socket = /home/mysql/mysql.sock pid-file = /home/mysql/mysql.pid open_files_limit = 65535 character_set_server=utf8 #log-bin = #binlog_format = mixed ##log_slave_updates = 1 ##relay-log = /data/mysql/binlog/relay-log-bin ##relay-log-index = /data/mysql/binlog/slave-relay-bin.index expire_logs_days = 7 max_binlog_size = 1G binlog_cache_size = 32M max_binlog_cache_size = 64M long_query_time = 2 slow_query_log slow_query_log_file = /home/mysql/logs/slowquery.log default_storage_engine = InnoDB innodb = FORCE innodb_buffer_pool_size = 8G innodb_log_file_size = 512M innodb_additional_mem_pool_size = 16M innodb_file_io_threads = 4 innodb_thread_concurrency = 8 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M innodb_log_files_in_group = 3 innodb_lock_wait_timeout = 120 innodb_file_per_table = 0 table_definition_cache = 512 table_open_cache = 512 back_log = 600 max_connections = 5000 max_connect_errors = 60000 external-locking = FALSE max_allowed_packet = 64M sort_buffer_size = 2M join_buffer_size = 2M thread_cache_size = 300 thread_concurrency = 16 query_cache_size = 64M query_cache_limit = 4M query_cache_min_res_unit = 2k tmp_table_size = 256M max_heap_table_size = 256M key_buffer_size = 2048M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M skip-host-cache skip-name-resolve lower_case_table_names=1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES explicit_defaults_for_timestamp=true [mysqld_safe] log-error = /home/mysql/logs/error.log [client] socket = /home/mysql/mysql.sock port = 3306 要修改參數: basedir = /home/mysql datadir = /home/mysql/data socket = /home/mysql/mysql.sock pid-file = /home/mysql/mysql.pid slow_query_log_file = /home/mysql/logs/slowquery.log log-error = /home/mysql/logs/error.log max_connections = 5000 thread_cache_size = 300 #設置規則以下:1GB 內存配置爲8,2GB配置爲16,3GB配置爲32,4GB或更高內存,可配置更大 thread_concurrency = 16 #cpu核數的2倍 key_buffer_size = 2048M #對於內存在4GB左右的服務器來講,該參數可設置爲256MB或384MB innodb_buffer_pool_size = 8G #若是隻須要用Innodb的話則能夠設置它高達 70-80% 的可用內存 innodb_thread_concurrency = 8 #cpu的核數
啓動mysql:
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on /etc/init.d/mysqld start #/etc/init.d/mysqld 執行這個腳本時,會嘗試去讀取/etc/my.cnf文件或者mysql安裝目錄$basedir下的my.cnf文件
修改path路徑:
vi /etc/profile ##在最後添加: export PATH=$PATH:/usr/local/mysql/bin source /etc/profile