Jerry's Blog

Recording what I learned everyday

View on GitHub


11 April 2020

在CentOS 8下安装Nginx, MySQL, Redis

by Jerry Zhang

在CentOS 8安装Nginx

参考资料:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-8

第一步:安装

dnf 包管理系统是CentOS 8中的新默认包管理系统。

用dnf安装nginx:

sudo dnf install nginx
点y确认

开启服务,开机自动启动:

sudo systemctl enable nginx
sudo systemctl start nginx

第二步:防火墙

调整防火墙规则:

永久允许端口80的http连接:

sudo firewall-cmd --permanent --add-service=http

验证一下服务是否正确被添加:

sudo firewall-cmd --permanent --list-all

应该看到以下信息:

public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client http ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

为了使变更生效,需要重新加载防火墙:

sudo firewall-cmd --reload

第三步:测试服务器

用浏览器输入服务器的ip地址,即可访问服务器。我目前用的本地虚拟机,所以我在windows用浏览器登陆了192.168.0.136,就看到了Nginx的欢迎页面。

第四步:进程管理

sudo systemctl stop nginx # 停止服务
sudo systemctl start nginx # 开启服务
sudo systemctl restart nginx # 重启服务
sudo systemctl reload nginx # 重新加载配置
sudo systemctl disable nginx # 禁止开机自动启动
sudo systemctl enable nginx # 允许开机自动启动

第五步:重要文件和目录的位置

在CentOS 8安装MySQL8.0

参考资料:

https://www.tecmint.com/install-mysql-on-centos-8/

https://www.csdn.net/gather_25/MtTaIg1sMTM3Mi1ibG9n.html

https://computingforgeeks.com/how-to-install-mysql-8-on-fedora/

安装:

yum -y install @mysql

启动服务并开机自动启动:

systemctl start mysqld
systemctl enable --now mysqld
systemctl status mysqld

安全配置:

mysql_secure_installation
y
2
输入密码,长度至少为8,大小写都有,字母数字组合,还要有特殊字符
y
y
y
y
y

然后用刚刚设置的密码登陆root:

mysql -u root -p
输入密码:

授权用户

创建新用户:

在root查看所有用户:
select user, host from mysql.user;

创建一个新用户:
create user 'username'@'localhost' identified by 'password';
或者:
create user 'username'@'110.110.110.110' identified by 'password';
或者:
create user 'username'@'%' identified by 'password';

localhost:只有本机可以访问 110.110.110.110:用户只能从这个IP登录 %:任何电脑都可以访问

这里我保留了引号和百分号,替换了我自己设置的username,password。将来真正部署时,把百分号要换成我自己服务器的IP地址,不能让任何人都能登陆数据库。

授权:

GRANT ALL ON database.* TO 'username'@'localhost';
GRANT ALL ON database.* TO 'username'@'%';

刷新权限代码如下:

flush privileges;

撤销权限:

REVOKE ALL ON database.* FROM 'username'@'%';
REVOKE SELECT ON database.* FROM 'username'@'%';
REVOKE INSERT ON database.* FROM 'username'@'%';
REVOKE UPDATE ON database.* FROM 'username'@'%';
REVOKE DELETE ON database.* FROM 'username'@'%';

查看用户权限:

SHOW GRANTS FOR 'username'@'%';
SHOW GRANTS FOR 'username'@'localhost';

删除用户:

drop user 'username'@'localhost';
drop user 'username'@'%';

防火墙

我尝试用Navicat连接数据库,结果失败了。

确认了一下端口号:

mysql> show global variables like 'port';

确实是3306。所以不是端口号问题。

上网搜索,有的说要更改配置文件。我搜索了一下配置文件,没找到。可能是新版的CentOS的dnf安装mysql,把配置文件放到了其他位置。

然后我找到一篇英文的博客,最后一步他开放了防火墙。试了一下,成功了。

https://computingforgeeks.com/how-to-install-mysql-8-on-fedora/

sudo firewall-cmd --add-service=mysql --permanent
sudo firewall-cmd --reload

还可以设置信任的网络,所以以后正式上线时,还应该把防火墙设置为只允许我自己的服务器访问这个数据库。

sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" \
service name="mysql" source address="10.1.1.0/24" accept'
# 第一行最后的反斜杠我觉得应该是一行写不下了,换行。这应该是一行命令。

在CentOS 8安装Redis

参考资料: https://linuxize.com/post/how-to-install-and-configure-redis-on-centos-8/

安装

Redis 5.0 已经被纳入了CentOS 8的默认软件库中。

sudo dnf install redis
# 参考资料中写的是redis-server,但我安装时没找到那个包,所以我改成了redis

启动服务:

sudo systemctl enable --now redis

测试:

sudo systemctl status redis

测试结果:

● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Sat 2020-04-11 17:12:56 EDT; 2min 44s ago
 Main PID: 4792 (redis-server)
    Tasks: 4 (limit: 23832)
   Memory: 6.6M
   CGroup: /system.slice/redis.service
           └─4792 /usr/bin/redis-server 127.0.0.1:6379

Apr 11 17:12:56 localhost.localdomain systemd[1]: Starting Redis persistent key-value database...
Apr 11 17:12:56 localhost.localdomain systemd[1]: Started Redis persistent key-value database.

远程访问配置

Redis 默认只允许本地访问。

教程说在配置文件/etc/redis.conf中,有一行是bind 127.0.0.1, 在后面添加上需要连接的IP即可。然后重启redis。

sudo systemctl restart redis

然后测试是否是监听这两个IP的6379端口:

ss -an | grep 6379

输出应该看到:

tcp    LISTEN    0    128    192.168.121.233:6379    0.0.0.0:*
tcp    LISTEN    0    128    127.0.0.1:6379          0.0.0.0:*

这一步我失败了。依然只有127.0.0.1。但是我目前还不需要远程登陆redis,所以将来需要用到时再解决吧。

tags: Wechat - Ordering