个人网站搭建时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-devel
nginx
不仅支持 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项目脚手架,其实根据项目的不同目录结构和打包配置都可以进行灵活的调整.这次的项目可能是包含各种客户端和管理后台在一起的综合项目所以需要将样式和脚本 ...
随机推荐
- 2018.10.24 NOIP模拟 小 C 的宿舍(分治)
传送门 分治妙题. 没有这道题的暴力分今天又垫底了啊233 由于用了分治的方法,我们只用考虑左区间对右区间的贡献以及右区间对左区间的贡献. 可以发现如果从中点开始向两边递推最小值并用这个区间最小值来推 ...
- 委托构造函数(c++11)
1.概念 1)委托构造函数也是构造函数,它也有形参列表,它将实参传递给其他的构造函数来初始化类对象,像是把自己的一些(或者全部)构造职责委托给其他构造函数一样
- VSCode的终端修改
快速打开VSCode的快捷键是:Ctrl + `(反引号) 转自:https://blog.csdn.net/u013517122/article/details/82776607 因本人实在忍受不了 ...
- Codeforces Round#413 Div.2
A. Carrot Cakes 题面 In some game by Playrix it takes t minutes for an oven to bake k carrot cakes, al ...
- 20155205 2016-2017-2 《Java程序设计》第1周学习总结
20155205 2016-2017-2 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 下载了娄老师推介的xmind,试着自己总结了一下. 为了要运行Java程序,必须安装 ...
- ueditor+word粘贴上传
公司做的项目要用到文本上传功能. 网上找了很久,大部分都有一些不成熟的问题,终于让我找到了一个成熟的项目. 下面就来看看: 1.打开工程: 对于文档的上传我们需要知道这个项目是否符合我们的初衷. 运行 ...
- SSM_CRUD新手练习(3)创建数据库
在上一节我们已经完成了基本的SSM配置,现在需要创建我们数据库. 我们需要两张表分别为tbl_emp(员工表)和tbl_dedpt(部门表).同时d_id是部门表对应dept_id的外键. 需要注意的 ...
- Hdu1151 Air Raid(最小覆盖路径)
Air Raid Problem Description Consider a town where all the streets are one-way and each street leads ...
- HashMap原理、源码、实践
HashMap是一种十分常用的数据结构,作为一个应用开发人员,对其原理.实现的加深理解有助于更高效地进行数据存取.本文所用的jdk版本为1.5. 使用HashMap <Effective JAV ...
- JMS学习以及jms的实现activeMq
1.JMS规范介绍: http://www.cnblogs.com/hapjin/p/5431706.html http://elim.iteye.com/blog/1893038 http://bl ...