VPS搭建Web服务器(JDK,Tomcat,Nginx,MySQL,SSL)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

二.使用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 &quot;%r&quot; %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 &quot;%r&quot; %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 &quot;%r&quot; %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

9、配置环境变量
# vi /etc/profile

# source /etc/profile
10、 配置MYSQL开机启动
chmod  755 /etc/init.d/ 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

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>

猜你喜欢

转载自blog.csdn.net/y694721975/article/details/60984322