开发过程中常见的组件的部署与配置
Node安装
Node.js是一个基于Chrome V8引擎的JavaScript运行环境; 是运行在服务端的 JavaScript.
Hexo安装
Hexo是一个简单地、轻量地、基于Node的一个静态博客框架,可以方便的生成静态网页托管(Hexo依赖NodeJs)
Hexo安装实例
Hexo插件安装
Hexo创建项目
在工程目录下(手动创建)执行 即可完成工程初始化
Hexo启动项目
Hexo启动使用命令 , 也可以使用 启动并直接打开应用页面
Hexo静态化项目
Hexo静态化使用命令 , 静态化后的文件在工程的public目录下
Hexo主题扩展
推荐主题
https://github.com/iissnan/hexo-theme-next
https://github.com/tufu9441/maupassant-hexo
https://github.com/Haojen/hexo-theme-Anisina
主题扩展
在 下执行 或者下载到工程目录下的themes下
修改工程目录下的_config.yml文件, 配置节点 为要扩展的主题
Hexo推送Git
Git推送配置(修改工程目录下的_config.yml文件,配置节点 )
GIT推送命令部署
Hexo安装问题
安装过程遇到的问题解决,问题列表.
JDK 安装
JDK(Java Development Kit)是Java语言的软件开发工具包.它包含了JAVA的运行环境(JVM + Java系统类库)和JAVA工具.
移除自带的OpenJDK
CentOs默认可能安装了openjdk,这里我们采用oracle官网的jdk,所以需要移除openjdk.
安装Oracle官方JDK
下载最新版本的JDK,解压到特定目录,笔者解压到 , 然后配置环境变量(修改/etc/profile文件,在文件末尾追加java环境变量设置信息)
配置文件末尾追加内容如下(追加完 使配置生效)
Nginx安装
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器; 官网地址:http://nginx.org/
Nginx安装示例
Nginx安装验证
Nginx启停脚本
Nginx配置说明
相关文档: https://blog.52itstyle.com/archives/557/
Nginx平滑升级
相关文档: https://www.centos.bz/2017/07/nginx-upgrade-latest-version/
Mysql安装
MySQL是最流行的关系型数据库管理系统.
Yum安装MysSQL
使用官方仓库安装
MySQL开机启动
通过 配置MySQL开机启动.
MySQL授权访问
示例: 授权 以 从任意远程端连接到mysql,特定ip限制讲%设置为限制的ip地址即可.
授权后,远程端访问
Redis安装
Redis是一个高性能的key-value数据库.
Redis安装
Redis配置
修改 配置文件:
Redis启停脚本
Redis开机启动
Redis授权访问
Mongo安装
Mongo是一个基于分布式文件存储的数据库.
Mongo安装
Mongo配置
说明: dbpath和logpath自己创建
Mongo验证
命令行教程: http://www.runoob.com/mongodb/mongodb-tutorial.html
Mongo权限
开启权限认证
mongo启动配置中设置auth=true
添加管理员账号
说明
这里所说的管理员账号不是像linux里面无所不能的root,而是一个能分配账号的账号。
这样就创建了一个账号,user为admin,密码为123456,他能在admin库中管理任何库的用户。
添加数据操作账号
一旦开启的权限管理,接下来所有的操作都必须用合适的账号去做,我们创建的admin账号只能管理用户,而我们真正需要的账号是要能用来读写数据的,那就需要创建一个可读写数据的账号。
示例给stream库添加了一个账号为"test",密码为"testpwd", 权限为"readWrite"的用户.
DaemonTools安装
DaemonTools安装示例
说明: 安装完会在根目录/下创建两个目录:/service和/command目录.
/service目录: 存放被daemontools管理的进程,注意在/service目录下存放的只能是连接。
/command目录: 存放的是daemontools的一些常用命令。
DaemonTools开机启动
在 下增添加 文件, 文件内容如下:
注释掉安装,在 中自动配置的一行(不使用该方法开机启动,会存在不同系统失效的问题)
添加完启动配置后, 执行以下指令是配置重新加载
DaemonTools状态检测
DaemonTools目录规范
在需要被supervise监控的目录下建立可执行的 run 脚本文件将这个目录软链到/service下,svscan检测到这是个新目录,会自动执行 svc -u
关于run脚本:切记,要用 exec 执行最终执行服务的程序,否则运行 run 脚本的shell收到 svc -d 的 TERM 信号退出之后,实际执行服务的那个程序不会跟着退出。
因为supervise是通过监控run退出时产生的SIGCHLD信号来识别服务已经终止,并重启服务的。如果这里没exec,则会导致fork+exec效果,在svc -d终止服务时,只给run脚本发送TERM命令,而run脚本fork出来的子进程不会收到信号,从而变成孤儿进程继续运行,占据文件锁、TCP端口等资源对于不便exec的程序,可以在后面加&符号后台运行,并在调用命令之后用 waitpid %1 命令等待,从而阻止run脚本退出;run脚本开头处应该用trap命令捕获TERM信号,信号处理过程中给%1发送TERM信号,即可实现整体退出的效果
一个受监控的配置示例结构应当如下图:
DaemonTools监控示例
创建监控测试进程
说明: 要监控的监控必须对应一个run脚本(名字必须是run而且权限是755)
尝试kill掉测试进程
DaemonTools常用指令
启动被管理的进程
查看被管理的进程状态
重启被管理的服务
关闭被管理的进程
问题处理
问题1: could not read symbols: Bad value
错误:
解决: 编辑src/conf-cc, 在gcc开头的一行最后加上
问题2: 应用程序的错误输出需要重定向到STDOUT去
应用程序的错误输出需要 重定向 到 STDOUT 去,不然 daemontools 会认为你的程序出错导致一起重启。通常很多 java 程序是直接把错误输出在 标准错误输出的,需要注意。
CentOs7防火墙
firewall命令说明
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口(--zone #作用域, --permanent #永久生效,没有此参数重启后失效)
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助
参考文章
https://blog.52itstyle.com/archives/1158/
https://blog.csdn.net/achang21/article/details/52538049 (防火墙)
领取专属 10元无门槛券
私享最新 技术干货