/

Ubuntu JDK Nginx WildFly MySQL 环境配置

新项目部署上线,主要参考 世雷博客 的内容,自己也总结了下。从 JDK 安装、Web 容器、数据库,都有涉及比较全面。

JDK8

安装 JDK8

1、添加软件源

sudo add-apt-repository ppa:webupd8team/java

2、更新软件源

sudo apt-get update

3、安装 jdk1.8

sudo apt-get install oracle-java8-installer

查看 Java 安装路径

sudo update-alternatives --config java
sudo update-alternatives --config javac

查看 Java 安装后的版本

java -version

(扩展)增加多版本 JDK 和切换方法

1、安装 JDK 6 和 JDK 7

sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java7-installer

2、查看所有 JDK 安装版本

sudo update-java-alternatives -l
java-6-oracle 3 /usr/lib/jvm/java-6-oracle
java-7-oracle 4 /usr/lib/jvm/java-7-oracle
java-8-oracle 2 /usr/lib/jvm/java-8-oracle

3、通过 -s 参数可以方便的切换到其它的 JDK 版本

sudo update-java-alternatives -s java-6-oracle
sudo update-java-alternatives -s java-7-oracle
sudo update-java-alternatives -s java-8-oracle

4、再次查看 JDK 版本

java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

Nginx

Nginx 安装

1、更新软件源

sudo apt-get update

2、安装 Nginx

sudo apt-get install nginx

3、查看 Nginx 位置

whereis nginx

Nginx 禁止外网访问

防止 Google 收录

sudo vi /etc/nginx/sites-enabled/default

server 中添加

# server add
# 公司代理IP
allow *.*.*.*;
deny all;

Nginx 域名调整

域名 www 跳转 non wwwserver 中添加配置

server_name www.aaa.org aaa.org;
if ($host != 'aaa.org'){
rewrite ^/(.*)$ http://aaa.org/$1 permanent;
}

Nginx GZip

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

gzip_vary on;
gzip_min_length 1k;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-icon

Nginx 静态文件缓存

location ~*\.(gif|jpg|jpeg|png|bmp|swf|woff|icon)$ {
proxy_cache my_zone;
proxy_cache_bypass $http_cache_control;
proxy_cache_valid 200 1d;
add_header X-Proxy-Cache $upstream_cache_status;
expires 15d;
}

location ~ .*\.(js|css|ttf)$ {
proxy_cache my_zone;
proxy_cache_bypass $http_cache_control;
proxy_cache_valid 200 1d;
add_header X-Proxy-Cache $upstream_cache_status;
expires 15d;
}

静态文件放在配置的 root

root /opt/***;

还有个技巧,项目中大量资源文件,例如 PDF,在设计访问 url 时可以 **/pdf/**,这样在 Nginx 进行配置就可以将文件分离出项目;这些文件也放在 root 路径下。

location ^~ /html/ {
}
location ^~ /pdf/ {
}

Nginx Commands

sudo service nginx stop
sudo service nginx start
sudo service nginx restart

Nginx Show Log

sudo tail -f /var/log/nginx/error.log

WildFly 10.0.0.Final

WildFly 安装

1、下载 WildFly,并提取到 /opt 目录 WildFly 10.0.0.Final 下载地址

cd /opt
sudo wget -c http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
sudo tar -xzvf wildfly-10.0.0.Final.tar.gz

2、创建 WildFly 用户和组

sudo addgroup wildfly
sudo useradd -g wildfly wildfly

改变 wildfly 文件夹的所有权:

sudo chown -R wildfly:wildfly /opt/wildfly-10.0.0.Final

创建一个链接映射(好处:如果你改变 WildFly 版本,不需要更新其他配置)

sudo ln -s wildfly-10.0.0.Final /opt/wildfly

3、安装 init.d 脚本
设置并使用 init.d 脚本来启动和停止 WildFly。复制/opt/wildfly/bin/init.d/wildfly-init-debian.sh脚本到 /etc/init.d/wildfly,更改权限,并使其可执行

sudo cp /opt/wildfly/docs/contrib/scripts/init.d/wildfly-init-debian.sh /etc/init.d/wildfly
sudo chown root:root /etc/init.d/wildfly
sudo chmod ug+x /etc/init.d/wildfly

启动/停止 WildFly 命令

sudo /etc/init.d/wildfly start
sudo /etc/init.d/wildfly stop

4、WildFly 做为系统服务,开机启动

sudo update-rc.d wildfly defaults

配置 WildFly 允许所有 ip 访问

1、打开配置文件 standalone.xml

sudo vi /opt/wildfly/standalone/configuration/standalone.xml

2、替换此处

<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>

改为

<interface name="management">
<any-address/>
</interface>
<interface name="public">
<any-address/>
</interface>

3、保存后,重新启动 WildFily

sudo service wildfly restart

删除默认欢迎内容(可选)

如果你部署了应用程序在上下文根目录里,欢迎你 将需要从 WildFly 配置删除默认内容。在 standalone.xml 文件里删除粗体突出显示的行

<server name="default-server">
<http-listener name="default" socket-binding="http"/>
<host name="default-host" alias="localhost">
**<!-- <location name="/" handler="welcome-content"/> -->**
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<handlers>
**<!-- <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> -->**
</handlers>

其它设置

改为可以修改 JSP 页面不用重启

<servlet-container name="default">
<jsp-config development="true"/>
</servlet-container>

注意事项

1、项目以站点根目录访问
你现在可以将应用程序部署到 WildFly 视图在 your_ip:8080
在你的项目目录 WEB-INF 下添加 jboss-web.xml,确保你的配置 context-root 设置为 /

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/</context-root>
</jboss-web>

2、Linux 里设置端口 80 到 8080
注意:在之后的配置会使用 Nginx 反向代理,所用 WildFly 端口不用映射为 80,这里只是个方法的笔记

注意,在 linux 里,由于内核的限制,普通用户不能使用 1024 一下的端口。所以在配置文件(standalone.xml)里改成 80,用普通用户是启动不了的。

此时,我们需要在 linux 下使用 root 用户运行一个命令,使访问 80 端口的应用转到 8080 上:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

以上端口转发为临时操作,重启 linux 服务器后失效。如果要重启服务器不丢失 FORWARD 转发”操作,可写入配置。

在 Linux 的下面部署了 tomcat,为了安全我们使用非 root 用户进行启动,但是在域名绑定时无法直接访问 80 端口号。众所周知,在 unix 下,非 root 用户不能监听 1024 以上的端口号,这个 tomcat 服务器就没办法绑定在 80 端口下。所以这里需要使用 linux 的端口转发机制,把到 80 端口的服务请求都转到 8080 端口上。

2.1、安装 iptables-persistent

sudo apt-get update
sudo apt-get install iptables-persistent

2.2、添加 80 端口跳转到 8080 规则

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

2.3、保存跳转规则

sudo service iptables-persistent save

3、wildfly 不支持 struts2 的配置文件(.xml)里用通配符
这是原博文的内容,我没有使用 struts2;在 spring 中有用通配符,但是好像没什么影响
jboss wildfly 不支持 struts2 配置文件里用通配符 *.xml,如下:

<!-- <include file="struts/*.xml"></include> -->
<include file="struts/struts_post.xml"></include>
<include file="struts/struts_user.xml"></include>

4、增加部署扫描仪的超时设置
位置:

<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" />
</subsystem>

<deployment-scanner> 内增加属性 deployment-timeout="1200" 如下:

<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" deployment-timeout="1200" />
</subsystem>

Nginx 反向代理 WildFly

1、在 http 中添加

upstream jboss {
server 127.0.0.1:8080;
}

2、在 server 中修改

location /{
proxy_pass http://jboss;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
index index.html index.htm index.jsp;
# 动态网站要小心这个 缓存 选项
add_header Cache-Control max-age=1728000;
}

MySQL

MySQL5.6 安装

sudo apt-get install mysql-server-5.6

MySQL 创建数据库

CREATE DATABASE IF NOT EXISTS scrapy DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

MySQL 数据库导出/导入

mysqldump -u root -p123456 db_name | gzip > /home/backup/db_name.sql.gz
mysqldump -u root -p123456 --all-databases | gzip > /home/backup/all.sql.gz

mysqldump -h192.168.1.100 -uroot -p db_name > db_name.sql
mysqldump -uroot -p db_name_1 db_name_2 > db_name_1_and_2.sql
gunzip < db_name.sql.gz | mysql -u root -p123456 db_name
gunzip < all.sql.gz | mysql -u root -p123456

mysql -uroot -p
show databases;
use db_name;
source ~/db_name.sql

MySQL 查看表结构

desc user

Project

robots.txt config 禁止所有爬虫爬取

User-agent: *
Disallow: /

Renferences