公司项目终于决定从托管机房搬到阿里云了,再也不用因为机房抽风加班了!

不太重要的软件就直接用yum安装了(例如 VsFtpd 之类的就不在本文介绍了),但是像 Nginx、MySQL 等最好还是下载最新稳定版本的源码编译安装。

JDK

在 Oracle 下载 jdk 的 rpm 安装包,这里下载的是 1.7 版本:

1
2
3
wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm?AuthParam=1444378409_f275580f53339110b974a239bd3f4379
mv jdk-7u79-linux-x64.rpm?AuthParam=1444378409_f275580f53339110b974a239bd3f4379 jdk-7u79-linux-x64.rpm
rpm -ivh *.rpm

jdk 会默认安装在/usr/java/目录下,接着配置环境变量:

1
2
3
4
5
6
vim /etc/profile

JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME

配置好以后测试一下:

1
java -version

出现以下信息说明配置好了:

1
2
3
java version "1.7.0_79"
Java (TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot (TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

Tomcat

首先下载并解压 tomcat(个人习惯会把 tomcat 放在/usr/local/下):

1
2
3
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gz
tar -zxvf apache-tomcat-7.0.64.tar.gz
mv apache-tomcat-7.0.64 tomcat

配置 Web 项目(个人习惯通过tomcat/conf/Catalina/localhost/下编写 xml 配置文件):

1
vim website.xml

记得指定 Tomcat 的编码,否则会出现接收参数乱码:

1
vim conf/server.xml

启动一下试试:

1
/usr/local/tomcat/bin/startup.sh

MySQL

下载:

1
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.27.tar.gz

准备好编译的库:

1
yum -y install make gcc-c++ cmake bison-devel ncurses-devel

5.6 版本开始通过cmake编译:

1
2
3
4
tar -zxvf mysql-5.6.27.tar.gz
cd mysql-5.6.27
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make && make install

mysql 不建议直接通过 root 用户开启数据库,所以最好创建一个用户和组:

1
2
3
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql

初始化:

1
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注册开机自启动:

1
2
cp support-files/mysql.server /etc/init.d/mysql
chkconfig MySQL on

初始化 root 用户的密码:

1
/usr/local/mysql/bin/mysqladmin -u root password '你的密码'

关于 MySQL 的配置在这里就不详细介绍了。

Redis

根据 Redis 官网的介绍,安装只需要三步:下载、解压、编译:

1
2
3
4
5
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
tar -zxvf redis-3.0.4.tar.gz
mv redis-3.0.4 redis
cd redis
make

启动方式:

1
redis-server redis.conf

redis 不需要配置用户,在配置文件中设置一下密码就可以了,关于配置同样不详细介绍了。

MongoDB

这个更省事,都不需要编译,下载完解压就可以用了:

1
2
3
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
mv mongodb-linux-x86_64-3.0.6 mongodb

启动方式:

1
mongod -f mongodb.conf

mongodb 默认是不需要验证权限的,如果需要验证权限的话,需要在添加一个用户,并且在配置文件中设置auth = true,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
use database;
db.createUser (
{
"user" : "username",
"pwd": "password",
"roles" : [
{
role: "dbOwner",
db: "database"
}
]
}
);

连接方式:

1
mongo -u username -p password --authenticationDatabase database

Nginx

使用 nginx 是为了代理一些静态文件,同时做一下多 tomcat 实例的负载均衡,不过静态文件我还没弄(好像阿里云 OSS 就能弄?),先说一下负载均衡吧。

nginx 的 yum 包也比较旧了,依旧选择源码编译,首先下载:

1
2
3
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0

指定一下安装路径,编译安装:

1
2
./configure --prefix=/usr/local/nginx
make && make install

负载均衡的配置事例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
vim nginx.conf

include proxy.conf;
upstream localhost {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main

location / {
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost;
}
}

vim proxy.conf

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 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

一个基础的 Java Web 项目的生产环境边搭建完成了。