版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y694721975/article/details/60984322
一、下载软件
jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
mysql:https://dev.mysql.com/downloads/mysql/ (centos下载Linux-Generic版本 )
nginx:http://nginx.org/en/download.html
httpd:http://httpd.apache.org/
二.使用WinSCP(没有去下载一个)
将下载好的软件通过WinSCP传送到/usr/local
三.安装jdk
3.1查看jdk压缩包:
# ls
3.2解压压缩包:(注意版本号,如果不同,修改即可)
# tar -xvf jdk1.8.0_121.tar.gz
然后改下名字(太长不好记):
# mv jdk1.8.0_121 jdk1.8
3.3配置环境变量:
# vi /etc/profile
在文件末尾插入:(注意版本号,如果不同,修改即可)
export JAVA_HOME=/usr/local/jdk1.8 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
3.4保存后让修改生效:
# source /etc/profile
3.5查看java是否安装成功:java -version
四.安装Tomcat
4.1 查看压缩文件 :
# ls
4.2解压文件 :(注意版本号,如果不同,修改即可)
# tar -xvf apache-tomcat-8.5.11.tar.gz
4.3然后改下名字(太长不好记):
# mv apache-tomcat-8.5.11 tomcat
4.4添加服务、开机启动服务
切换至/usr/lib/systemd/system/目录,建立tomcat.service文件并输入以下内容:
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk1.8
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_BASE=/usr/local/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/kill -15 $MAINPID
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
刷一下:
systemctl daemon-reload
启动:
systemctl start tomcat
开机启动
systemctl enable tomcat
测试:在浏览器输入 服务器ip:8080
例如你的服务器ip是:139.199.211.49
输入:139.199.211.49:8080
如果不想用8080这个端口号,可以在conf文件夹下的server.xml配置文件中修改
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
post修改为80即可
测试结果:
五、安装nginx
5.1首先需要安装PCRE
# tar zxvf pcre-8.40.tar.gz //解压
# cd pcre-8.40
# ./configure
# make && make install//编译并安装
5.2安装Nginx
# tar zxvf nginx-1.10.3.tar.gz //解压
# cd nginx-1.10.3
# ./configure --with-http_stub_status_module --with-http_ssl_module//启动server状态页和https模块
# make && make install //编译并安装
5.3
设置开机启动,方式跟tomcat类似
# vi /usr/lib/systemd/system/nginx.service
输入以下内容
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
刷一下:
systemctl daemon-reload
设置开机启动和开启服务
systemctl enable nginx.service
systemctl start nginx.service
5.3Nginx + Tomcat 实现动静态分离
动静态分离就是Nginx处理客户端的请求的静态页面(html页面)或者图片,Tomcat处理客户端请求的动态页面(jsp页面),因为Nginx处理的静态页面的效率高于Tomcat。
一下是个人对nginx的理解,我画的一个图
5.3.1
我们要配置
Nginx
文件+文件准备
目的:我现在3个域名 www.xxx.com:8080
game.xxx.com:8081
blog.xxx.com:8082
这三个域名分别占用8080 8081 8082 三个端口
nginx开启80端口监听,遇到动态请求时,分别通过不同的域名,转发到响应的tomcat服务器中
首先将tomcat下的webapps复制三份,分别改名web_index web_game web_blog
在三个文件夹中分别创建index.html 并随便写点东西 为了测试使用
然后配置nginx文件
#vi /usr/local/nginx/conf/nginx.conf
user root;
#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 {
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;
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;
server {
listen 80;
server_name xxx.cn;
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /usr/local/tomcat/web_index/ROOT;
expires 30d;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.(jsp|do|action)$ {
proxy_pass http://139.199.211.49:8080;
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 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间
proxy_read_timeout 90; #连接成功后,后端服务器响应时间
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 6 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
server {
listen 80;
server_name game.xxx.cn;
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /usr/local/tomcat/web_game/ROOT;
expires 30d;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.(jsp|do|action)$ {
proxy_pass http://139.199.211.49:8081;
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 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间
proxy_read_timeout 90; #连接成功后,后端服务器响应时间
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 6 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
server {
listen 80;
server_name blog.xxx.cn;
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /usr/local/tomcat/web_blog/ROOT;
expires 30d;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.(jsp|do|action)$ {
proxy_pass http://139.199.211.49:8082;
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 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间
proxy_read_timeout 90; #连接成功后,后端服务器响应时间
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 6 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
5.3.2修改
tomcat配置
文件
#vi /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina" defaultHost="www.xxx.cn">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="www.xxx.cn" appBase="web_index"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="web_index_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<Service name="Catalina">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
<Engine name="Catalina" defaultHost="game.xxx.cn">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="game.xxx.cn" appBase="web_game"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="web_game_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<Service name="Catalina">
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
<Engine name="Catalina" defaultHost="blog.xxx.cn">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="blog.xxx.cn" appBase="web_blog"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="web_blog_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
5.3.3启动服务
启动tomcat服务:
# cd /usr/local/tomcat/bin
# ./startup.sh
启动nginx服务:
# cd /usr/local/nginx/sbin
# ./nginx
5.3.4测试
访问静态资源
访问动态资源
没毛病!!!!
5.3.5 ab压力测试
使用ab压力测试,需要安装apache服务器,因为Apache中自带ab压力测试
安装apache服务器
1)将下载好的httpd-2.4.25.tar.gz压缩文件放入到/usr/local下
2)准备好apr-1.5.2.tar.gz和 apr-util-1.5.4.tar.gz
3)将httpd解压后有个srclib目录,将apr和apr-util的包解压到srclib,去掉版本号。安装httpd时自动安装apr与apr-util。
# tar zxvf httpd-2.4.9.tar.gz
# cd /software/httpd-2.4.9/srclib
# tar -zxvf apr-1.5.1.tar.gz
# tar -zxvf apr-util-1.5.3.tar.gz
# mv apr-1.5.1 apr
# mv apr-util-1.5.3 apr-util
# ./configure -prefix=/usr/local/httpd -with-pcre=/usr/local/pcre
# make
# make install
4)开始压力测试
# cd /usr/local/httpd/bin
# ./ab -c 100 -n 100 http://139.199.211.49/index.html
# ./ab -c 100 -n 100
http://139.199.211.49:8080/index.html
经过ab压力测试得出一下数据
./ab -c 100 -n 100 http://139.199.211.49/index.html
Server Software: nginx/1.10.3
Server Hostname: 139.199.211.49
Server Port: 80
Document Path: /index.html
Document Length: 29 bytes
Concurrency Level: 100
Time taken for tests: 0.014 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 33200 bytes
HTML transferred: 2900 bytes
Requests per second: 6993.50 [#/sec] (mean)
Time per request: 14.299 [ms] (mean)
Time per request: 0.143 [ms] (mean, across all concurrent requests)
Transfer rate: 2267.42 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 3 4 0.2 4 4
Processing: 9 10 0.1 10 10
Waiting: 9 9 0.0 9 9
Total: 13 13 0.3 13 14
Percentage of the requests served within a certain time (ms)
50% 13
66% 13
75% 14
80% 14
90% 14
95% 14
98% 14
99% 14
100% 14 (longest request)
./ab -c 100 -n 100 http://139.199.211.49:8080/index.html
Server Software: apache- tomcat
Server Hostname: 139.199.211.49
Server Port: 8080
Document Path: /index.html
Document Length: 29 bytes
Concurrency Level: 100
Time taken for tests: 0.178 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 24300 bytes
HTML transferred: 2900 bytes
Requests per second: 560.38 [#/sec] (mean)
Time per request: 178.451 [ms] (mean)
Time per request: 1.785 [ms] (mean, across all concurrent requests)
Transfer rate: 132.98 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 6 7 0.4 7 7
Processing: 22 118 41.5 128 170
Waiting: 22 118 41.5 128 169
Total: 29 125 41.4 136 177
Percentage of the requests served within a certain time (ms)
50% 136
66% 152
75% 154
80% 167
90% 169
95% 174
98% 175
99% 177
100% 177 (longest request)
可以得出结论:1使用nginx反向代理服务器确实能提高访问静态资源的访问速度
2而且从另一个角度也减小了对tomcat服务器的压力
六、安装MySQL数据库
1.将压缩文件拿过来
2. 解压到 /usr/local/mysql 目录
# mkdir /usr/local/mysql
# tar -xvf mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.7.10-linux-glibc2.5-x86_64/* /usr/local/mysql/
3. 创建 /usr/local/mysql/data 目录
# mkdir /usr/local/mysql/data
4. 创建mysql用户和修改软件的权限
# groupadd mysql
# useradd -r -g mysql mysql -s /sbin/nologin (创建mysql用户并设置不可登录)
# chown -R mysql.mysql /usr/local/mysql/
5. 初始化数据(切换当前目录到/usr/local/mysql)
# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2016-01-20 02:47:35 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2016-01-20 02:47:45 [WARNING] The bootstrap log isn't empty:
2016-01-20 02:47:45 [WARNING] 2016-01-19T18:47:36.732678Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2016-01-19T18:47:36.750527Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2016-01-19T18:47:36.750560Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
6. 复制配置文件到 /etc/my.cnf
# cp -a ./support-files/my-default.cnf /etc/my.cnf (如果问是否替换选择Y)
7. mysql的服务脚本放到系统服务中
# cp -a ./support-files/mysql.server /etc/init.d/mysqld
# service mysqld start
# cat /root/.mysql_secret
# Password set for user 'root@localhost' at 2016-01-20 03:22:59
:urhGegwacIa
# cd /usr/local/mysql/bin
# mysql -uroot -p(输入:urhGegwacIa)
修改密码
# ./mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
8、修改配置文件
cd /usr/local/mysql/support-
files
cp my-default.cnf /etc/ my.cnf
cp mysql.server /etc/init.d/ mysql
vim /etc/my.cnf
cp my-default.cnf /etc/ my.cnf
cp mysql.server /etc/init.d/ mysql
vim /etc/my.cnf
9、配置环境变量
# vi /etc/profile
# source /etc/profile
10、
配置MYSQL开机启动
chmod
755 /etc/init.d/
mysqld
chkconfig -- add mysqld
chkconfig -- add mysqld
chkconfig --level
345 mysqld on
11、查看MySQL编码,登录mysql状态下
show variables like 'character_set%%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem |binary|
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
修改编码方法
# vi/etc/my.cnf
[mysqld]
character_server_set=utf8
**************
*
*
*
**************
[mysql]
default-character-set=utf8
[mysql.server]
default-character-set=utf8
[mysql_safe]
default-character-set=utf8
[client]
default-character-set=utf8
default-character-set=utf8
[mysql.server]
default-character-set=utf8
[mysql_safe]
default-character-set=utf8
[client]
default-character-set=utf8
12、修改远程连接数据库的权限
成功登录数据库后
use mysql;
select host,user from user;
update user set host = '%' where user = 'root';
grant all privileges on *.* to root@'%' identified by "root";
ps:说明一种情况:我安装MySQL之后,重启机器,然后就无法登陆mysql
我网上找到以下办法,亲测可用,好使!!!
#1.停止mysql数据库
/etc/init
.d
/mysqld
stop
#2.执行如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
#3.使用root登录mysql数据库
mysql -u root mysql
#4.更新root密码
mysql> UPDATE user SET Password=PASSWORD(
'newpassword'
) where USER=
'root'
;
#最新版MySQL请采用如下SQL:因为不同版本mysql这张表的字段不一样
mysql> UPDATE user SET authentication_string=PASSWORD(
'newpassword'
) where USER=
'root'
;
#5.刷新权限
mysql> FLUSH PRIVILEGES;
#6.退出mysql
mysql> quit
#7.重启mysql
/etc/init
.d
/mysqld
restart
#8.使用root用户重新登录mysql
mysql -uroot -p
Enter password: <输入新设的密码newpassword>