个人网站搭建时linux中的相关配置记录(mysql,jdk,nginx,redis)
一、开发计划(包括准备工作,网站大致需求等)
二、服务器(linux/centos)购买、相应环境配置(jdk),软件安装(mysql, nginx, redis)、域名解析
三、原型图、代码开发(vue.js, springboot)
二:
1. 安装mysql(压缩包形式)记录(linux) 另一种快捷安装,参考:https://www.cnblogs.com/wishwzp/p/7113403.html
a. 下载mysql安装包(链接: https://pan.baidu.com/s/1RZzGfEd_AdSMR8UHrFSUjg 密码: yrw3)
b. 将压缩包拷贝至/usr/local中(我用的xftp)
c. 安装依赖: [root@mufeng local]# yum -y install perl perl-devel autoconf libaio
d. 解压: [root@mufeng local]# tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
重命名解压后的mysql目录: [root@mufeng local]# mv mysql-5.6.33-linux-glibc2.5-x86_64 mysql
e. 添加用户组和用户:
检查mysql组和用户是否存在,如无创建
[root@mufeng local]# cat /etc/group|grep mysql
mysql:x:1000:
[root@mufeng local]# cat /etc/passwd|grep mysql
mysql:x:997:1000::/home/mysql:/bin/bash
若无则:添加用户组: [root@mufeng local]# groupadd mysql
添加用户mysql 到用户组mysql:[root@mufeng local]# useradd -r -g mysql mysql [root@mufeng local]# chown -R mysql mysql/
[root@mufeng local]# chgrp -R mysql mysql/
g. 安装和初始化数据库:[root@mufeng local]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
h. 设置启动文件:[root@mufeng local]# cp -a ./support-files/my-default.cnf /etc/my.cnf
[root@mufeng local]# cp -a ./support-files/mysql.server /etc/init.d/mysqld
i. 启动mysql: [root@mufeng mysql]# service mysqld start
Starting MySQL. [ OK ]
j. 设置开机启动:[root@mufeng mysql]# chkconfig --level 35 mysqld on
k. 建立软连接(可在任何目录下访问):[root@mufeng bin]# ln -s /usr/local/mysql/bin/mysql /usr/bin
l. 登录mysql并设置密码(首次无需密码):[root@mufeng bin]# mysql -uroot -p
Enter password:
mysql> set password = password("root");
mysql> flush privileges; //刷新权限
m. 添加远程连接的账号、并设置权限:mysql> grant all privileges on *.* to 'zhanghao'@'%' identified by "password";
mysql> flush privileges;
mysql> select user, password, host from mysql.user; //查看是否添加成功
n. 本地连接测试:
[root@mufeng bin]# mysql -u zhanghao -p
Enter password:
ERROR 1045 (28000): Access denied for user 'mufeng'@'localhost' (using password: YES)
发现连接不上,但账号密码是正确的,原因:数据库安装初始化时,会创建匿名账户,在本地登录时,会默认去匹配匿名账户,所以此时输入密码,连接时,报密码错误,不输入密码,反而可以直接连接
解决方法:登录root账号,删除匿名账号:mysql> delete from mysql.user where user='';
更新新账号的密码: mysql> update mysql.user set password =PASSWORD('password') where user = 'zhanghao';
刷新权限: mysql> flush privileges;
再次连接(输入密码):成功
o. 远程客户端连接,显示无法连接:

检查端口是否开放:tcping ip 3306 结果:ping不通,解决方法:登录服务器后台,添加安全组入网规则,打开3306端口,再次连接,连接成功。
p. 当更改了配置文件后,需要重启mysql时,有时会遇到这个问题:

解决方法:查看错误文件:[root@mufeng /]# vi /usr/local/mysql/data/mufeng.err
找到相应的错误记录:我的是,2018-08-06 09:56:16 2573 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'default-character-set=utf8'
然后,编辑配置文件:[root@mufeng /]# vi /etc/my.cnf
注释掉,或改正,再次重启即可:

数据表区分大小写操作:在配置文件/etc/my.cnf中添加如下(也可参考:https://www.cnblogs.com/kevingrace/p/6150748.html)
#表名大小写:0为大小写敏感,1为不区分大小写
lower_case_table_names=1
修改数据库账号名密码:https://blog.csdn.net/u013510614/article/details/50506676 5.7版本:https://blog.csdn.net/qq_33472557/article/details/77726094
root账号连接数据库: mysql -u root -p
Enter password:***
更新密码: UPDATE mysql.user SET password=PASSWORD("新密码") WHERE user='你的用户名';
版本高时,会报错:ERROR 1054 (42S22): Unknown column 'password' in 'field list'
原因:版本不同,字段已经更改,使用:
update mysql.user set authentication_string=password('新密码') where user='你的用户名'
刷新权限,否则不会生效: FLUSH PRIVILEGES;
退出: quit
查看当前用户名密码等信息: select user, host, authentication_string from mysql.user;
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
pcre 解析正则表达式,所以安装 perl 兼容的正则表达式库:nginx 使用 zlib 对 http 包的内容进行 gzip: [root@mufeng /]# yum install -y zlib zlib-develnginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),如果使用了 https ,需要安装 OpenSSL 库:nginx 被安装到 /usr/local/nginx 下export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
重新编译 /etc/profile 文件,使其生效:source /etc/profile
g.启动nginx:nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx进程:[root@mufeng /]# ps -ef|grep nginx
成功
h.设置nginx开机启动:[root@mufeng /]# vi /etc/rc.local
在文件最后位置添加:/usr/local/nginx/sbin/nginx
i.nginx其他命令:
重启:nginx-s reload
关闭:nginx-s stop
查看nginx配置文件的位置:nginx-t
[root@mufeng redis]#cp -r bin ../redis_cluster/6379
[root@mufeng redis]#cp -r bin ../redis_cluster/6380
......
[root@mufeng redis]#cp -r bin ../redis_cluster/6384
编辑各个实例下面的配置文件,修改两处,第一修改端口号(port:6379,6380,...,6384),
第二打开cluster-enable前面的注释 (# 开启集群,把注释#去掉)
复制脚本到redis-cluster目录下:[root@mufeng redis]# cp /usr/local/redis_cluster/redis-3.2.4/src/*.rb /usr/local/redis_cluster/
创建redis集群启动的脚本,来便捷的启动6个实例:[root@mufeng redis_cluster]# vim startall.sh
内容如下:
cd 6379
./redis-server redis.conf
cd ..
cd 6380
./redis-server redis.conf
cd ..
cd 6381
./redis-server redis.conf
cd ..
cd 6382
./redis-server redis.conf
cd ..
cd 6383
./redis-server redis.conf
cd ..
cd 6384
./redis-server redis.conf
cd ..
保存并退出 wq!;编辑脚本权限:[root@mufeng redis_cluster]# chmod +x startall.sh
利用脚本启动redis集群:[root@mufeng redis_cluster]# ./startall.sh
查看各个实例的运行状态:ps aux|grep redis
e. 集群正式搭建:
安装redis:[root@mufeng redis_cluster]# gem install redis
可能:-bash: gem: command not found 则:安装redis集群工具和环境
则 [root@iZbp15h7x6vujtklreqtreZ redis_cluster]# yum install ruby && yum install -y rubygems
可能:ERROR: Could not find a valid gem 'redis' (>= 0) in any repository 可参考:https://blog.csdn.net/snowhite91/article/details/78962436
则 [root@iZbp15h7x6vujtklreqtreZ redis_cluster]# wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
有一次安装时,还出现了:While executing gem ... (Zlib::BufError) buffer error 错误
没有找到原因,但最后 把redis_cluster目录下的 所有rm -rf redis-3.2.1.gem文件删除后,此错误消失了
此时可能会报错(我遇到了):Redisredis requires Ruby version >= 2.2.2
解决方法参考:https://blog.csdn.net/FengYe_YuLu/article/details/77628094 https://blog.csdn.net/zhaoyahui_666/article/details/78716511
开放端口:6379-6384,集群总线端口16379-16384
创建集群(下边的ip地址改为自己的公网ip,不要写127.0.0.1,否则外部无法访问):
[root@mufeng redis_cluster]# ./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
运行上面命令后会出现,询问:输入 yes,即可
--replicas 1表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。
f. 集群设置密码,实现外部安全访问
首先上一步的IP必须是公网的ip
更改各个实例的配置文件redis.conf,分别添加:requirepass yourpassword
输入密码,再次测试,成功;

其他问题:有时需要重新搭建时,遇到此问题:[ERR] Node 39.108.145.103:6381 is not empty. Either the node already knows other nodes (check with C
解决方法:删除掉节点下 aof、rdb结尾的文件,重新执行e中的创建集群命令即可
g. 连接测试 [root@mufeng 6379]# ./redis-cli -c -h 127.0.0.1 -p 6379 -a Passw0rd
只有加入 “-c” 才会启动集群模式,不然会报错:(error) MOVED 5798 39.108.145.103:6380

安装也可参考:https://www.cnblogs.com/007sx/p/7158977.html
5. 由于服务器配置太低,现将redis集群改为reids单机版,以减少内存
具体参考:https://blog.csdn.net/makang456/article/details/54947193
个人网站搭建时linux中的相关配置记录(mysql,jdk,nginx,redis)的更多相关文章
- linux中 systemd相关配置
systemd相关配置 推荐使用systemd管理进程,相比使用supervisord systemd提供系统级别的支援. 一.系统管理 Systemd 并不是一个命令,而是一组命令,涉及到系统管理的 ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- Linux中VSFTP的配置
配置VSFTP服务器: 1.安装VSFTP,可以参考Linux 中yum的配置来安装: yum installvsftpd.x86_64 -y 2.修改SELinux: setenforce 0 查看 ...
- 在Linux中安装和配置OpenVPN Server的最简便方法!
本文介绍了如何在基于RPM和DEB的系统中安装和配置OpenVPN服务器.我们在本文中将使用一个名为openvpn-install的脚本,它使整个OpenVPN服务器的安装和配置过程实现了自动化.该脚 ...
- 关于linux中的目录配置标准以及文件基本信息
关于Linux中的目录配置标准 在查看docker.k8的运行日志,修改相关的运行记录的时候,学长总是能很快地找到目录,这个多多少少和Linux的FHS(File Hierarchy Standard ...
- electron-builder中NSIS相关配置
electron-builder中NSIS相关配置 相比较于electron-packager打包,使用electron-builder打包使得包体积更小.在electron-builder中,对于N ...
- 在linux中使用Sqlplus命令登录MySQL,查看表并设置行数和宽度,使其正常显示
在linux中使用sqlplus命令进入MySQL,设置行数和行宽 1) 查看目前的pagesize,默认是14: 1. show pagesize; 2. set pa ...
- centos7中安装、配置、验证、卸载redis
本文介绍在centos7中安装.配置.验证.卸载redis等操作,以及在使用redis中的一些注意事项. 一 安装redis 1 创建redis的安装目录 利用以下命令,切换到/usr/local路径 ...
- Vue-cli 多页相关配置记录
Vue-cli 多页相关配置记录 搭建一个顺手的MPA项目脚手架,其实根据项目的不同目录结构和打包配置都可以进行灵活的调整.这次的项目可能是包含各种客户端和管理后台在一起的综合项目所以需要将样式和脚本 ...
随机推荐
- 【转】Linux 如何通过命令仅获取IP地址
一同事的朋友正在参加笔试,遇到这么一个问题让他帮忙解决,结果同事又找到我帮他搞定.真是感慨:通讯发达在某些方面来说,真不知是不是好事啊!题目大致如下所示,一般我们使用ifconfig查看网卡信息,请问 ...
- 2018.06.26「TJOI2018」数学计算(线段树)
描述 小豆现在有一个数 xxx ,初始值为 111 . 小豆有 QQQ 次操作,操作有两种类型: 111 $ m$ : x=x×mx=x×mx=x×m ,输出 xxx modmodmod MMM : ...
- JS将时间戳转化为时间
//将时间戳转化为时间 function timestampToTime(timestamp) { var date = new Date(timestamp * 1000);//时间戳为10位需*1 ...
- 关于页面传值页面的跳转,以及spring mvc 框架的流程问题
list页面 1.点击页面后,进入后台的list方法中,通过findPage()查询数据的,findPage中含有findList(): 2.如果页面没有输入查询条件,那么则显示所有数据集合,如果页面 ...
- java正则表达式笔记
import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntax ...
- javascript总结集合
前言:下面的总结都是自己测试过的,绝大多数都是没问题的,但是不敢保证一定全面,还需要诸君自己独立思考: 1)基础:在nodejs里全局对象是global,而网页里js的全局对象是window:对于所有 ...
- OOP中的六种关系以及和JDK或框架中源码进行匹配对应
前言:这六种关系里:泛化=实现>组合>聚合>关联>依赖:其中组合-聚合-关联这三个如果只是给出一段代码是无法判断具体是什么关系的,需要配合语义或说业务场景来能进行区分(和设计模 ...
- 12-简单认识下margin
margin margin:外边距的意思.表示边框到最近盒子的距离. /*表示四个方向的外边距离为20px*/ margin: 20px; /*表示盒子向下移动了30px*/ margin-top: ...
- Properties类、序列化流与反序列化流、打印流、commons-IO
Properties类 特点: 1.Hashtable的子类,map集合中的方法都可以用: 2.该集合没有泛型,键值都是字符串: 3.是一个可以持久化的属性集,键值可以存到集合中,也可存到持久化的设备 ...
- Codeforces Round #535 (Div. 3) 1108C - Nice Garland
#include <bits/stdc++.h> using namespace std; int main() { #ifdef _DEBUG freopen("input.t ...