概述
本文介绍了 mysql、redis、jdk、zookeeper、nginx软件在普通用户权限下的安装。
在linux中软件有两种,系统软件和普通软件;
- 系统软件通常应该是root用户去安装,重要性如同操作系统一样,几乎可以作为操作系统的一部分。软件的各部分通常在根目录下的各个目录中,如可执行文件通常在根目录的/bin,配置文件通常在/etc;这类软件最好是加入到启动服务中,不需要用户去启动,因为只有root用户才能启动;通常用yum和rpm直接安装
- 普通软件:不需要随着系统启动,应该由普通用户去安装启动;如同windows中的应用程序一样;这类软件通常是普通用户下载源码安装或者使用yum指定安装路径;
- 用户权限:普通用户通常不能使用包管理工具直接安装软件,因为普通用户没有权限在根目录下的默认目录中创建修改文件,那些目录属于系统目录,普通用户也不应该访问修改那些目录。包管理工具在安装软件时会尝试在系统目录中创建安装软件的文件,此时会提示permission deny的提示,造成安装错误。普通用户只能在自己的家目录中安装软件,或者让root用户创建一个普通用户可以访问的目录,在该目录下安装软件;通过这样的方式,不同用户可以安装自己需要的软件,也可以避免其他用户对自己目录的错误修改,如服务器应用应该只有dba才可以访问,服务器应用程序应该只有
- 软件的系统属性:软件是否需要通过root安装,通常是由服务器的性质决定,如数据库服务器应该将数据库应用加到系统软件中,并且也不能安装其他不相关的软件;而应用服务器,用来运行服务器应用,系统软件通常是支持服务器应用运行的库依赖,jdk、jar包通常作为普通应用,因为这部分应用只需要普通用户权限去运行就够了。普通应用一旦使用root用户去启动就有了root用户在系统的权限,可以对系统做修改,这通常是很危险的,最好遵从权限最小原则安装启动应用软件;
mysql8.0
源码安装(普通用户安装)
- 在根路径创建app文件夹:mkdir /app。
- 下载 mysql8.0 源码包:wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.16-el7-x86_64.tar.gz; 或者从mysql官网中下载相应的tar包;
- 解压,重命名文件夹:tar -zxvf mysql-8.0.16-el7-x86_64.tar.gz, mv mysql-8.0.16-el7-x86_64 mysql
- 在mysql的bin目录下执行命令初始化,在mysql的根目录下自动创建了data文件夹以及相关的文件:./mysqld --initialize-insecure
- 创建编辑mysql配置文件,启动脚本会启动my.cnf中的内容:vi /app/mysql/my.cnf
文件内容
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/app/mysql
# 设置mysql数据库的数据的存放目录
datadir=/app/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
- 在bin目录下执行,安装mysql,在输出信息中会有mysql的初始密码:./mysqld --defaults-file=/app/mysql/my.cnf --initialize --console
- 启动mysql,在bin目录下执行:/app/mysql/support-files/
mysql.server start - 登录mysql,在bin目录下执行登陆命令,输入在第6步记下的密码:./mysql -u -p,输入密码
- 修改root密码:alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- 允许远程登录:use mysql, update user set user.Host='%'where user.User='root';
- 生效配置:flush privileges;
java连接mysql8.0
不同于之前的版本,java代码连接mysql8.0,需要注意以下几步:
- 连接驱动版本:MySQL 8.0 以上版本需要8.0以上的驱动包版本 mysql-connector-java-8.X.jar
- 加载的驱动类:com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。
- 关闭SSL,设置时区:MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显式关闭,
Class.forName("com.mysql.cj.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");
redis
- 下载:wget http://download.redis.io/releases/redis-2.8.17.tar.gz;或者从http://download.redis.io/releases/中选择最新的发行版本下载
- 解压,修改目录名称:tar xzf redis-2.8.17.tar.gz,mv redis-2.8.17 redis;
- 进入安装目录,编译:cd redis,make
- 修改配置文件,设置密码:vi redis/redis.conf;在阅读模式下输入/requirepass搜索requirepass字符串,后新增行:requirepass 123456
- 启动redis:/app/redis/src/redis-server /app/redis/redis.conf
- 登录:/app/redis/src/redis-cli -p 6379
- 内部验证密码:auth 123456
java
源码安装(普通用户)
- 下载源码,在oracle官网下载相应版本
- 解压
- 配置本地环境变量,普通用户的环境变量记录在家目录下的.bash_profile文件中
- vi ~/.bash_profile,文件内容添加如下内容
export JAVA_HOME=/app/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 生效配置文件:source ~/.bash_profile
- 测试:java -version
zookeeper
zookeeper启动应用文件是一个jar包,因此需要安装jdk后才能安装zookeeper
- 下载:wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz, 或者从https://archive.apache.org/dist/zookeeper上选择下载最新版本
- 解压,修改文件夹名称,复制配置文件 cp /app/zookeeper/conf/zoo_sample.cfg /app/zookeeper/conf/zoo.cfg
- 修改zoo.cfg文件,在其中添加配置日志文件夹位置和数据文件夹位置
dataLogDir=/app/zookeeper/logs
dataDir=/app/zookeeper/data
- 使用脚本控制zookeeper的启动、关闭、状态;/app/zookeeper/bin/zkServer.sh start/stop/staus/restart
jar配置启动
服务器应用jar包也放在/app目录下的应用目录下,如/app/project-name/module/目录下,添加启动脚本内容如下
BASE_HOME="/app/project/module"
OUTFILE="$BASE_HOME/log/backoffice.log"
JAVA_OPT="-Xms4096m -Xmx4096m -XX:MaxNewSize=1024m -verbose:gc -Xloggc:$BASE_HOME/log/gc.log -XX:+PrintGCTimeStamps
-XX:+PrintGCDetails"
CP="$BASE_HOME/*.jar"
rm -f tpid
nohup java -jar $JAVA_OPT -Dtag='backoffice' $CP >> $OUTFILE 2>&1 &
echo $! > tpid
echo Start Success!
nginx
- 安装前检查库文件是否完整:gcc编译器、pcre(包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式)、pcre-devel(用pcre开发的一个二次开发库)、zlib(nginx使用zlib对http包的内容进行gzip)、openssl
检查版本
gcc -v
安装
yum -y install gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
- 下载解压nginx,修改包名:wget http://nginx.org/download/nginx-1.9.9.tar.gz ,可在http://nginx.org/download/ 下查看下载最新版本;tar -zxvf nginx-1.9.9.tar.gz;mv nginx-1.9.9 /app/nginx-install(下载下来的这个包只是源码包,后面指定的安装路径和源码包是不同路径)
- 配置编译前的路径:
./configure \
--prefix=/app/nginx \
--sbin-path=/app/nginx/sbin/nginx \
--conf-path=/app/nginx/conf/nginx.conf \
--error-log-path=/app/nginx/log/error.log \
--http-log-path=/app/nginx/log/access.log \
--http-client-body-temp-path=/app/nginx/tmp/client_body \
--http-proxy-temp-path=/app/nginx/tmp/proxy \
--http-fastcgi-temp-path=/app/nginx/tmp/fastcgi \
--pid-path=/app/nginx/var/run/nginx.pid \
--lock-path=/app/nginx/var/lock/subsys/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module
备注:
configure 选项 【选项含义】
--user 指定启动程序所属用户
--group 指定启动程序所属组
--prefix 指定nginx安装路径
--sbin-path 设置nginx二进制文件的路径
--conf-path 指定配置文件的路径
--error-log-path 指定错误日志文件路径
--http-log-path 指定访问日志文件路径
--http-client-body-temp-path 设置存储HTTP客户端请求主体的临时文件路径
--http-proxy-temp-path 设置存储HTTP代理临时文件的路径
--pid-path 设置nginx.pid文件路径
--lock-path 设置nginx.lock 文件路径
--with-openssl 启用SSL
--with-pcre 启用正规表达式
--with-http_stub_status_module 安装可以监控nginx状态的模块
--with-http_ssl_module 启用SSL支持
--with-http_gzip_static_module 启用gzip压缩
- 编译、安装,创建相关目录:make, make install;mkdir /app/nginx/tmp/这个目录在第三步由配置的,可以配置为根目录的tmp,根目录的tmp是所有用户可读写的;
- 修改启动端口:vi /app/nginx/conf/nginx.conf,修改端口为1024以上,普通用户无法绑定应用到1024以下的端口
worker_processes:工作进程个数,可配置多个
worker_connections:单个进程最大连接数
upstream name{ }:服务器集群名称,可以配置负载均衡
server:每一个server相当于一个代理服务器
lister:代理服务器监听的端口,默认80,普通用户需要改到1024以上
server_name:当前服务的域名,可以有多个,用空格分隔(我们是本地所以是localhost)
root:代理服务器的静态网页的根目录位置,可以指定在根目录下/www
index:当没有指定主页时,默认会选择这个指定的文件,可多个,空格分隔
location:表示匹配的路径,匹配到的路径都被路由转发到如下的后台地址,这样nginx就可以只处理静态资源,后台对外开放接口就可以通过这里直接转发到后台服务器;
root 转发的根路径,localtion为默认位置时的路径;
proxy_pass:请求转向自定义的服务器列表
参考配置示例
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8082; #自定义你服务器的端口号
server_name localhost; #自定义你的IP或者域名,localhost:127.0.0.1 本地的IP
root /wwwroot; #前端打包后的代码部署到这里
index index.html index.htm; #打开默认文件为index.html
#官网介绍设置这条可以解决history路由的问题
location / {
try_files $uri $uri/ /index.html;
}
# 负载均衡,服务器集群名称为test
upstream test{
server 192.168.32.1:8081 weight=1;
server 192.168.32.2:8081 weight=1;
}
# 代理转发地址,后台接口代理转发,proxy_pass配置成和负载均衡名称一致
# 模块1
location /securityAuthentication/{
proxy_pass http:test;
add_header Content-Type "text/plain;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
# 模块2
location /admin/{
proxy_pass http:test;
add_header Content-Type "text/plain;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
# 模块3
location /permission/{
proxy_pass http:test;
add_header Content-Type "text/plain;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
# 模块4
location /configurationManagement/{
proxy_pass http:test;
add_header Content-Type "text/plain;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
# 模块5
location /device/{
proxy_pass http:test;
add_header Content-Type "text/plain;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
# 一些错误页面的配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
- 启动:/app/nginx/sbin/nginx,相关命令如下
重启:
$ /usr/local/nginx/sbin/nginx –s reload
停止:
$ /usr/local/nginx/sbin/nginx –s stop
网友评论