记录一下在服务器部署项目的过程,长期更新
涉及:Java、tomcat、nginx、mysql、ssl、域名、服务器
docker方式搭建服务器环境参考:使用docker快速搭建服务器环境
环境
- 阿里云ECS服务器、阿里云购买的域名、阿里云购买的ssl
- CentOS 6.9 64位
购买服务器
配置安全组
配置常用端口访问,比如22、8080、3306等购买域名
- 购买域名为 xxxxx.com
- 购买后,在阿里云里可以购买免费的ssl证书(百度有教)。
- 解析xxx.xxxxx.com到服务器ip
- 备案。国内服务器需要备案,否则无法通过域名访问到你的网站。你也可以选择使用https方式暂时免去备案
服务器环境配置
远程登录服务器
Windows下远程管理服务器软件:WinSCP
Windows下SSH登录服务器软件:Xshell
Mac下远程管理服务器软件:ForkLift
Mac下SSH登录服务器软件:autossh工具下载Java
安装包下载
注意,需要手动下载,因为oracle下载Java的时候有个同意协议的操作,如果用命令行方式安装Java,会出问题。所以直接手动下载,然后上传到服务器内即可。我安装的是server-jre-8u181-linux-x64.tar.gz安装Java
我的解压路径
/usr/java/
命令行操作
tar -zxvf jdk-8u161-linux-x64.tar.gz
vi /etc/profile
source /etc/profile
vi编辑profile文件时,输入下面的文字(注意Java解压路径)
#set java environment
JAVA_HOME=/usr/java/jdk1.8.0_161
JRE_HOME=/usr/java/jdk1.8.0_161/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
下载Tomcat
下载地址
和Java一样,手动下载,然后上传到服务器安装Tomcat
把下载下来的压缩包解压到目录,我的解压路径
/usr/tomcat/
命令行操作
tar zxvf apache-tomcat-9.0.6.tar.gz
- 设置Tomcat Host Manager 网页访问(可选)
进入 tomcat根目录/conf/tomcat-users.xml,进入以下代码添加用户
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="admin123" roles="admin-gui,manager-gui"/>
这样admin这个用户就可以用网页登录Host Manager、Server Status和Manager App。如果不做此操作,日后要发布应用必须使用命令行。
- 设置tomcat开机自启动(推荐)
进入 /etc/rc.d/rc.local 加入以下配置,注意路径
export JAVA_HOME=/usr/java/jdk1.8.0_161
/usr/tomcat/apache-tomcat-9.0.6/bin/startup.sh start
然后设置rc.local为可执行文件,并重启服务器
chmod +x /etc/rc.d/rc.local
shutdown -r now
重启完成后重新登录服务器,检查tomcat是否启动。如果什么都不返回,则tomcat服务未开启
lsof -i:8080
如果报错找不到命令,则yum方式安装
yum install lsof
使用Nginx
如果需要在服务器里多域名访问多个项目,如公司产品和公司官网。则可以使用nginx进行代理。注意前提是购买的域名已经解析到了服务器(将ip解析到xxx.xxxxx.com)
- 安装Nginx
建议使用编译方式安装,教程:
CentOS6.9编译安装Nginx1.12
更新: 以下内容留作备忘,不需要看
需要注意的是,安装pcre的时候,在解压了pcre包后,进行make等操作成功以后,要将pcre文件夹放/usr/src下,而后在编译nginx时,需要这样:
./configure --with-pcre=/usr/src/pcre目录
make
make install
否则可能会报错找不到pcre
- 配置nginx
nginx服务器安装及配置文件详解
Nginx配置端口转发 映射 以及连接超时问题
Linux(CentOS)下设置nginx开机自动启动和chkconfig管理
配置举例(配置了https 访问 Tomcat访问页):
有几点要注意
- 如果你要所有项目都使用https,则需要将他们配置在443端口的ssl配置节点。
- nginx访问静态资源可能会报错Permission Denied,此时应该讲nginx用户改为root,如代码里第一行
- 关于域名ssl证书的设置,阿里云里有教
- 阿里云可以配置免费ssl,但是只能配置单域名ssl
- 购买的域名一般为 xxx.com ,如果你希望别人通过 top.xxx.com 来访问你的项目,则除了需要配置nginx转发以外,还需要去阿里云控制台,解析 top.xxx.com 这个域名到服务器ip。只配置nginx是不行的,这里经常忽视!
user root; # 用户为root
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 2048;
}
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 ;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# HTTPS server 证书
server {
listen 443;
server_name xxx.xxxxx.com; # 阿里云里配置的域名,此域名已经申请了ssl证书
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/212312312321367.pem; #阿里云里下载的证书文件
ssl_certificate_key cert/2149412231235300167.key;#阿里云里下载的证书文件
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 访问 https://xxx.xxxxx.com/tomcat 可直接访问tomcat管理页面
location /tomcat {
proxy_pass http://127.0.0.1:8080/manager/html;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 配置tomcat管理页的静态资源,不配置的话,访问tomcat管理页时图片等资源无法加载
# 这里我将webapp/ROOT下的管理页静态资源复制到了 /usr/local/nginx/html/下
location ~* \.(gif|jpg|jpeg|css|js|png)$ {
root /usr/local/nginx/html/;
}
}
}
此时访问 https://xxx.xxxxx.com/manager就可以访问Tomcat管理页
安装Mysql
- 检查系统是否安装其他版本的MYSQL数据
yum list installed | grep mysql
yum -y remove mysql-libs.x86_64
- 安装MYSQL数据库
更新:简便安装方法:centos6.9安装mysql
准备工作
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
yum repolist all | grep mysql
yum install mysql-community-server -y
- 设置为开机启动
chkconfig --list | grep mysqld
chkconfig mysqld on
- 设置密码
/usr/bin/mysqladmin -u root password 123456
- 设置远程访问(可选)
root登录数据库,输入
# 注意填写root的密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
# 重载授权表
FLUSH PRIVILEGES;
如果设置后依旧无法访问,则检查服务器是否开启3306端口,或检查/etc/my.cnf里是否有bind-address=127.0.0.1,有则注释掉