Centos7.x 从零安装部署服务器环境 包括 java mysql redis nginx home 编辑时间 2019/04/29 ![](/api/file/getImage?fileId=5d527c6716199b2a52000b0d) ## 前言 需求: 从零开始部署一台centos服务器,以centos7.4为例。 (先说下,后面的内容需要有一定的linux入门基础,例如如何上传文件到服务器和如何编辑配置文件的部分,不一一赘述,可自由发挥。 另外本文尽可能会采用rpm命令安装二进制安装包方法实现,来降低安装难度) **主要版本** - linux centos 7.4 - java jdk 1.8.0_211 - mysql 5.7.26 - nginx 1.16.0 - redis 4.0.14 ## Java JDk 1.8 这里还是建议用oracleJDK,而不是openJDK。 例子的版本是1.8 其他版本方法也是一模一样的,只是下载的安装包不一样。 1.到oracle下载一个rpm版本的安装包 官网地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 找到需要的版本,点`download`,勾选`Accept License Agreement`,最后找对应版本的安装包,例如centos7.4_64位对应的是`jdk-8u211-linux-x64.rpm` 2.下载完成后上传安装包到服务器,安装包我习惯放在了根目录的setup文件夹 (如果你不是root权限,需要先自行解决权限问题) ```shell # 用rpm安装jdk安装包 rpm -ivh setup/jdk-8u211-linux-x64.rpm # 安装完成以后查看版本 测试是否安装成功 java -version # 看到以下内容说明成功 java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) ``` ## Mysql 5.7 **基本安装步骤如下** ```shell # 下载源 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm # 安装源 yum localinstall mysql57-community-release-el7-8.noarch.rpm # 验证源 yum repolist enabled | grep "mysql.*-community.*" # 若包含以下内容,说明源安装成功 mysql57-community/x86_64 MySQL 5.7 Community Server 347 # 开始安装 yum install mysql-community-server # (中间的提示y/n 都选y即可) # 如果全部安装成功 会看到最后一行是 Complete! ``` **基本命令如下** ```shell # 启动 systemctl start mysqld # 停止 systemctl stop mysqld # 重启 systemctl restart mysqld # 查看状态 systemctl status mysqld ``` **配置mysql** ```shell # 先启动一下 systemctl start mysqld # 设置开机启动 systemctl enable mysqld systemctl daemon-reload # 首次启动,会自动生成一个原始密码 # 查看原始密码命令 grep 'temporary password' /var/log/mysqld.log # 会打印出以下结果 2019-04-29T04:28:25.193368Z 1 [Note] A temporary password is generated for root@localhost: sX;qQZ.L;6Ml # 得到原始密码:sX;qQZ.L;6Ml # 继续之前建议先重启一次,防止掉坑 systemctl restart mysqld # 必须修改自定义密码,否则任何操作都会收到如下报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. # (必选) 修改密码 # 1.连接mysql (会提示输入密码,输入原始密码即可) mysql -u root -p # 2.修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; # 安全起见,一般不开放root远程登录3306端口操作mysql权限,但如有此需求,参考以下操作添加远程登录权限 # (可选) 如果需要远程登录3306端口来配置mysql,需要增加远程登录权限 # 1.连接mysql mysql -u root -p # 2.使用mysql库 use mysql # 3.添加远程权限(大致意思就是允许任何ip地址通过root账户远程访问mysql) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION; flush privileges; # 搞定以后再重启一次,防止掉坑 systemctl restart mysqld ``` **mysql配置文件修改** 配置文件默认位置`/etc/my.cnf` ```shell [client] port=3306 default-character-set=utf8mb4 user=root password=你的密码 [mysqld] port=3306 character_set_server=utf8mb4 collation-server=utf8mb4_general_ci init_connect='SET NAMES utf8mb4' datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid #优化参数 #设置最大连接数 默认500 max_connections=1024 #临时表分配的内存 默认16M tmp_table_size=64M #定义了用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变 ,默认16M max_heap_table_size=128M #一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K binlog_cache_size = 1M #事务隔离级别 默认 REPEATABLE-READ 总共4种 READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE transaction-isolation=REPEATABLE-READ #数据库字段名名是否区分大小写 0不区分 1 区分 lower_case_table_names = 1 #默认mysql对很多联合查询会报警,可以修改sql_mode sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' [mysql] default-character-set=utf8mb4 ``` 承接上文,简单说明 建议先用#开头注释掉原有的所有配置 然后粘贴上文配置来一步到位 重点说下 `password=`这里写上你的密码 [client]中包含一套username和password 是会存在**安全隐患**的! 但后期写一些脚本又会很方便 这也是可选项,自行考虑是否需要 utf8mb4是4位的utf-8 可以理解为满血utf-8 开启以后可以支持emoji表情 防止用户微信昵称含有emoji导致报错 除了这里配置以外,新建数据库也要选择编码为utf8mb4 其他配置可以参考注释 **mysql所有配置结束 建议再重启一下生效配置** ```shell # 重启 systemctl restart mysqld ``` ## Nginx 1.16.0 **基本安装** ```shell # 先安装源 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm # 查看源是否安装成功 yum list nginx # 安装nginx sudo yum install -y nginx # 启动nginx systemctl start nginx.service # 设置开机启动nginx systemctl enable nginx.service ``` **基本配置** 默认配置文件位置 `/etc/nginx/nginx.conf` 配置方法根据需求不同完全不同 在此处不多做介绍了 需要了解可以参考我的博客 [https://zzzmh.cn](https://zzzmh.cn) 在搜索框内搜`nginx`即可查看我之前写的入门方法若干 ## Redis 4.0.14 唯独这个不太推荐yum安装 虽然也支持yum install redis 但目前yum方法对应redis版本是3.2 如果你是正式环境,要长期使用的话 还是建议源码安装4.x或5.x,相对较新的版本 **源码安装Redis方法如下** 没装过依赖的话先装一下依赖 ```shell yum install -y wget yum install -y gcc automake autoconf libtool make ``` 下载和解压 ```shell # 下载 wget http://download.redis.io/releases/redis-4.0.14.tar.gz # 解压 tar -xzvf redis-4.0.14.tar.gz # 赋权 chmod -R 777 redis-4.0.14 ``` 编译 ```shell # 进入文件夹 cd redis-4.0.14 # 编译 make # 最后看到这两句说明成功 Hint: It's a good idea to run 'make test' ;) make[1]: Leaving directory `/root/setup/redis-4.0.14/src' ``` **路径** ```shell # 这一步是把原地下载解压编译出来的文件复制到合适的位置 # 新建文件夹 mkdir -p /usr/local/redis # 复制关键文件和文件夹 cp src/redis-server /usr/local/redis/ cp src/redis-cli /usr/local/redis/ cp redis.conf /usr/local/redis/ # 赋权 chmod -R 777 /usr/local/redis ``` **配置** 默认配置文件位置是 `/usr/local/redis/redis.conf` 配置详解参考:[https://www.cnblogs.com/kreo/p/4423362.html](https://www.cnblogs.com/kreo/p/4423362.html) 我只修改一小部分,其余默认 ```shell # 守护进程 开启 daemonize yes ``` 开机启动 新建一个开机启动的配置文件(vim举例) ```shell vim /etc/init.d/redis ``` 粘贴以下内容 ```shell #!/bin/sh # chkconfig: 2345 80 90 # description: Start and Stop redis #PATH=/usr/local/bin:/sbin:/usr/bin:/bin #端口 REDISPORT=6379 #server路径 EXEC=/usr/local/redis/redis-server #cli路径 REDIS_CLI=/usr/local/redis/redis-cli #进程pid PIDFILE=/var/run/redis_6379.pid #配置文件路径 CONF="/usr/local/redis/redis.conf" #密码 #AUTH="123456" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $REDIS_CLI -p $REDISPORT SHUTDOWN while [ -x ${PIDFILE} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac ``` 配置权限 ```shell chmod -R 777 /etc/init.d/redis ``` 配置开机启动文件(vim举例) ```shell vim /etc/rc.local # 最后一行加上 service redis start ``` 配置控制台呼出redis命令 ```shell ln -s /usr/local/redis/redis-cli /usr/bin/redis ``` **redis配置结束** 顺便说下常用命令 ```shell # 启动 service redis start # 停止 service redis stop # 查看进程 ps -ef|grep redis # 进入redis redis ``` ## END **没有包含tomcat,因为现在都做动静分离,以jar包形式直接运行,再由nginx统一实现管理** 博客: https://zzzmh.cn 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay Linux 启动/停止/重启 JAR程序 shell脚本 用于 Springboot api jar java 实现 AES/CBC/PKCS7Padding 加密 解密