---
title: 基础环境搭建
date: 2018-01-04 23:36:26
tags:
---
基础软件的简单安装。
如果 CentOS 服务器是全新的,请先
```bash
yum install epel-release
yum update
yum upgrade
```
### [MySQL](https://www.mysql.com/)
#### install
由于我的服务器是 CentOS7.3,故采用[MySQL yum repo](https://dev.mysql.com/downloads/repo/yum/),找到对应的操作系统版本后,通过 wget 下载到服务器【请根据实际情况选择对应的版本】
```bash
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm // 主要是安装mysql源
yum install mysql-server // 下子过程中可能需要很长的时间
systemctl start mysqld.service // 启动服务器
```
#### config
现在不要尝试通过任何方式登录 MySQL,因为我当前使用的 MySQL 的版本里,root 用户的密码将会在 mysqld 服务器初次启动后随机生成一个
```bash
cat /var/log/mysqld.log | grep 'temporary password' // 查询出生成的随机密码
2018-01-04T16:15:32.319012Z 1 [Note] A temporary password is generated for root@localhost: cNC4Qy?)=,;B
mysql_secure_intallation // 安全配置,根据实际情况自行配置
```
> 这里请注意:如果没有在 my.cnf 中配置 `[mysqld] validate_password_policy=LOW` 的话,建议直接粘贴原密码,等后续登录进入 root 后再更改秘密。
```bash
vim /etc/my.cnf
```
配置 MySQL 服务器和客户端的字符集【原有的配置不能删】
```conf
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
```
重启服务器
```bash
systemctl restart mysqld.service
```
以 mysql 的 root 用户登录
```bash
mysql -u root -p
mysql> SET GLOBAL validate_password_policy=LOW; // 如果密码足够强可以不用设置这一步
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD('******') where User='root'; ******部分为自己的密码
mysql> flush privileges;
mysql> create schema [db_name] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; // 创建数据库
mysql> create user '[db_user]'@'%' identified by '******'; // 创建用户,******部分为自己的密码
mysql> grant all privileges on [db_name].* to '[db_user]'@'%';
mysql> flush privileges;
```
至此,MySQL 的所有配置到此结束。关于数据库的表的创建以及初始数据的插入可根据实际情况进行操作。
### [Redis](https://redis.io/)
#### Installation1
如果需要更高稳定版,可以前往 `https://redis.io/download`,找到 install 部分进行安装。
Download, extract and compile Redis with:
```bash
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar xzf redis-4.0.6.tar.gz
cd redis-4.0.6
make
```
The binaries that are now compiled are available in the src directory. Run Redis with:
```bash
src/redis-server
```
You can interact with Redis using the built-in client:
```bash
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
```
#### Installation2
通过 yum 源进行安装
```bash
yum install redis // 安装redis
```
#### config
根据需要打开`/etc/redis.conf`配置文件进行配置。这里我需要配置 redis 的密码,只需要添加`requirepass ******`即可。
```bash
systemctl start redis.service // 启动redis
redis-cli -a ****** // 提供认证密码登录redis,如果没有密码直接redis-cli即可
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
```
由于 redis 默认关闭了远程访问,只需要注释 bind 127.0.0.1 或者更改 IP。
```conf
# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
# internet, binding to all the interfaces is dangerous and will expose the
# instance to everybody on the internet. So by default we uncomment the
# following bind directive, that will force Redis to listen only into
# the IPv4 lookback interface address (this means Redis will be able to
# accept connections only from clients running into the same computer it
# is running).
#
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
```
重启 redis 服务后生效`systemctl restart redis.service`,至此 redis 配置完毕。
### [vsftp](https://security.appspot.com/vsftpd.html)
#### install
```bash
yum install vsftpd
```
#### config
接下来需要配置 FTP
```bash
vim /etc/vsftpd/vsftpd.conf
```
添加或更改以下内容:
```conf
anonymous_enable=NO
chroot_local_user=YES
chroot_list_enable=YES
# Customization
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd/allowed_users
```
创建一个用户
```bash
useradd -s /sbin/nologin [user_name]
cd /home/oj
mkdir -p ftp/files
chown -R oj:oj ftp
```
在`/etc/vsftpd/`添加文件`allowed_users`,并添加[user_name]。如果提示 cannot read /etc/vsftpd/chroot_list,请创建该文件并将[user_name]写入。至此,vsftpd 配置完毕。
### [RabbitMQ](https://www.rabbitmq.com/)
在安装 RabbitMQ 之前,需要先安装 erlang,参照官网进行安装。这里我将安装 Zero dependency Erlang RPM(仅仅是为了运行 RabbitMQ)。
记得一定得安装高版本的[erlang](https://github.com/rabbitmq/erlang-rpm)
```bash
vim /etc/yum.repos.d/rabbitmq-erlang.repo
```
添加以下内容【仅仅针对 CentOS7,其他的请参考[erlang](https://github.com/rabbitmq/erlang-rpm)的链接】:
```conf
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
gpgcheck=1
gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
```
安装 erlang
```bash
yum install erlang
```
安装 RabbitMQ
```bash
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.2/rabbitmq-server-3.7.2-1.el7.noarch.rpm // 下载RabbitMQ
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.7.2-1.el7.noarch.rpm // 安装RabbitMQ
systemctl start rabbitmq-server.service // 启动RabbitMQ
```
配置 RabbitMQ。配置方式有多种,可以用`management-plugin`,也可以使用`rabbitmqctl`进行配置。为便于配置,我将采用 command 方式进行配置
```bash
rabbitmqctl -q list_users // 查询出所有的用户
rabbitmqctl --help // 帮助
rabbitmqctl add_user [user_name] ****** // 创建一个用户
rabbitmqctl add_vhost onlinejudge // 创建虚拟节点
rabbitmqctl set_user_tags [user_name] [user_role] // 设置用户标签,请根据 --help中的提示进行修改
rabbitmqctl set_permissions -p [vhost_name] [user_name] '.*' '.*' '.*' // 设置某用户和某节点的权限
rabbitmqctl list_user_permissions [user_name] // 查看用户权限
```
#### Last
最后查看一下所有的软件是否都正常运行了。
```bash
systemctl status redis.service
systemctl status vsftpd.service
systemctl status rabbitmq-server.service
```
同时也可以将所有的软件都设置为开机自启
```bash
systemctl enable redis.service
systemctl enable vsftpd.service
systemctl enable rabbitmq-server.service
```
至此,相关的配置详情:
| # | port | user | pass |
| :------- | :--- | :--- | :------ |
| MySQL | 3306 | oj | open*@* |
| Redis | 6379 | - | open*@* |
| RabbitMQ | 5672 | oj | open*@* |
| vsftp | 21 | oj | open*@* |
基础环境搭建