阿里云 ECS 服务器在申请以后, 已经有了 SSH 环境 因此不必在自己动手搭建, 以下将基于阿里云 ECS 服务器的 CentOS 7系统进行一个 Java Web 的服务器环境搭建
1. JDK
- 官网上选择自己适用的 JDK 版本进行下载
- ssh 连接到 server
# ssh 连接 Server
ssh root@host
- 创建临时目录, 上传 JDK 包 然后解压
# 创建临时目录 server 端操作
mkdir /home/temp
cd /home/temp
# 上传 JDK 包, 本地操作
scp jdk-xxx.tar.gz /home/temp
# 解压 JDK 包 Server 端操作
tar -zxvf jdk-xxx.tar.gz
- 创建工作目录, 并将解压后的 JDK 移动到工作目录中
# 也可以使用其他路径
mkdir /usr/local/java
# 移动 JDK
mv /home/temp/jdkxxx.xxx/ /usr/local/java
- 配置 JDK 环境变量
# 使用 vim 修改环境变量
vim /etc/profile
#在环境变量添加以下代码
export JAVA_HOME=/usr/local/java #按照自己实际的路径去配置 JAVA_HOME
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
# 修改保存好profile以后, 使配置生效
source /etc/profile
- 检查是否安装配置成功
javac # 不会出现 command not found
java -version # java 版本
echo $PATH # 打印环境变量路径
2. MySQL
- 安装
对于 MySQL 的安装有多种方式, 基本上常用的是 yum 和 wget, 一般来说推荐使用 yum, 因为坑最少
yum install mysql
yum install mysql-server
yum install mysql-devel
一般来说安装 mysql 和 mysql-devel 都能成功,但有时候安装 mysql-server 会失败
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.sina.cn
* extras: mirrors.sina.cn
* updates: mirrors.sina.cn
No package mysql-server available.
Error: Nothing to do
其原因是因为 CentOS 7 版本将 MySQL 数据库软件从默认的程序列表中移除 用mariadb 代替了, 我们可以安装 mariadb 来解决这个问题, 但我更倾向于下面的方式
# 官网下载 mysql-server
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
# 安装成功以后 没有初始密码 可以用 root 账户直接登录
mysql -u root
# 设置密码
set password for 'root'@'localhost' =password('password');
- 配置
# 默认配置文件路径:
# 配置文件:/etc/my.cnf
# 日志文件:/var/log/var/log/mysqld.log
# 服务启动脚本:/usr/lib/systemd/system/mysqld.service
# socket文件:/var/run/mysqld/mysqld.pid
# 打开配置文件
vi /etc/my.cnf
# 配置文件中 设置编码方式
default-character-set =utf8
# 配置远程连接
# 把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户
mysql> grant all privileges on *.* to root@'%'identified by 'password';
# 如果是新用户而不是root,则要先新建用户
mysql>create user 'username'@'%' identified by 'password';
3. Nginx
- 安装
# 如果系统没有带 make, 先安装 make
yum -y install gcc automake autoconf libtool make
# 安装g++
yum install gcc gcc-c++
# 安装pcre和pcre-devel
yum install -y pcre pcre-devel
# 安装zlib nginx 需要 zlib 对 http 进行 gzip
yum install -y zlib zlib-devel
# 安装 openssl 支撑 nginx 支持 https
yum install -y openssl openssl-devel
# 下载 nginx 并 scp 上传到 之前安装 jdk 时候的临时目录里并解压
scp nginx-1.14.2.tar.gz /home/temp
tar -zxvf nginx-1.14.2.tar.gz
# 创建工作目录, 并将解压以后的包移动到工作目录中
mkdir /usr/local/nginx
mv /home/temp/nginx -1.14.2/ /usr/local/nginx
# 编译
./configure
# 安装
make && make install
- 配置
# 创建开机启动命令脚本
vi /etc/init.d/nginx
# 在脚本文件中 加入下列代码
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx" # 对应编译安装时的sbin-path
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
# 保存退出脚本以后 设置所有用户对脚本的执行权限
chmod a+x /etc/init.d/nginx
# 加入系统服务中
chkconfig --add nginx
# 如果出现 mkdir() 错误
sudo mkdir -p /var/tem/nginx/client
# 查看 nginx 安装情况
nginx -t
# 进入 sbin 目录 启动 nginx
cd /usr/sbin
./nginx
# 重启命令
nginx -s reload
# 如果出现[emerg] 65814#0: getpwnam(“nginx”) failed 是因为没有创建 nginx 用户
/usr/sbin/groupadd -f nginx
/usr/sbin/useradd -g nginx nginx
# 打开 nginx.conf
vi /usr/local/nginx/conf/nginx.conf
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
#设定负载均衡的服务器列表
upstream webapp {
#weigth参数表示权值,权值越高被分配到的几率越大
server server0_ip:port weight=4;
server server1_ip:port weight=3;
server server2_ip:port weight=3;
...
ip_hash; #粘性session
}
#第一个虚拟服务器
server {
#侦听80端口
listen 80;
server_name webapp;
location / {
proxy_pass http://webapp; #请求转向mysvr 定义的服务器列表
proxy_next_upstream http_502 http_504 error timeout invalid_header; #错误界面
proxy_set_header Host $host; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
# 对于nginx静态资源扫描
# 创建资源目录
mkdir /usr/webserver/static/ROOT/
# 在 nginx.conf 中添加
location /images {
alias /usr/webserver/static/ROOT/WEB-INF/images/;
autoindex on;
}
location /css {
alias /usr/webserver/static/ROOT/WEB-INF/css/;
autoindex on;
}
location /js {
alias /usr/webserver/static/ROOT/WEB-INF/js/;
autoindex on;
}
# 最后在需要发布 web 的时候 将 war 包上传至资源文件目录解压即可
4. TomCat
# 官网上下载好需要的版本 然后上传到 Server的临时目录里
scp apache-tomcatxxx.tar.gz /home/temp
# 解压安装包
cd /home/temp
tar -zxvf apache-tomcatxxx.tar.gz
# 创建工作目录 并移动
mkdir /usr/local/apache-tomcat
mv /home/temp/apache-tomcat-xxx /usr/local/apache-tomcat
# 进入工作目录启动 tomcat
cd /usr/local/apache-tomcat/bin
./startup.sh
由于是使用了阿里云 ECS 服务器 因此在管理控制台的安全策略组中需要自己手动配置安全策略 开放需要用到的比如80, 8080等这些端口
网友评论