Rocky Linux 9安装Asterisk 20和freepbx 17脚本——筑梦之路
脚本搜集来自Rocky Linux 9安装Asterisk 20和freepbx 17脚本
#!/bin/bash#Preparacion de ambiente de RockyLinuxecho "Deshabilitar SELINUX /etc/selinux/config "sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/configecho "Establecer nombre de maquina"
hostnamectl set-hostname asterisk.localecho "Instalar repositorio de paquetes adicionales"
/usr/bin/dnf -y install epel-release/usr/bin/dnf -y update ca-certificates/usr/bin/dnf makecacheecho "Habilitar repositorio de herramientas adicionales de desarrollo Code Ready Builder"
/usr/bin/dnf config-manager --set-enabled crb
/usr/bin/dnf group -y install "Development Tools"
/usr/bin/dnf -y install git wget htop initscripts svn chkconfig mlocate nano#Instalar PHP 8.3
/usr/bin/dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
/usr/bin/dnf module reset php
/usr/bin/dnf module install php:remi-8.3 -y/usr/bin/dnf install httpd @php wget ncurses-devel sendmail sendmail-cf newt-devel libxml2-devel libtiff-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget vim php-xml sqlite-devel net-tools gnutls-devel unixODBC php php-cli php-gd php-curl php-zip php-mbstring php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysqlnd php-gettext php-bcmath php-zip php-xml php-json php-process php-snmp nodejs sox -yecho "Instalacion de BD"
dnf install mariadb-server unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel mariadb-connector-odbc -yecho "Actualizar sistema operativo"
/usr/bin/dnf -y updatesystemctl start mariadb
systemctl enable mariadb#/usr/bin/mysql_secure_installationecho "Realizando hardenizacion de MYSQL"mysql -sfu root <<EOS
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOS#Instalacion de Asteriskecho "Instalando Asterisk"echo "Configurando BD"mysql -u root -ppassword -e "CREATE DATABASE asterisk;"
mysql -u root -ppassword -e "CREATE USER 'asterisk'@'%' IDENTIFIED BY 'password';"
mysql -u root -ppassword -e "CREATE DATABASE asterisk;"
mysql -u root -ppassword -e "GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'%';"#exitodbcinst -q -d#/etc/odbc.iniecho "[asterisk-connector]
Description = MySQL connection to 'asterisk' database
Driver = MariaDB
Database = asterisk
Server = localhost
Port = 3306
Socket = /var/lib/mysql/mysql.sock" > /etc/odbc.ini#isql -v asterisk-connector asterisk password
#quitecho "Bajando archivos fuente"mkdir /opt/asterisk/
cd /opt/asterisk/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
tar -xvf asterisk-20-current.tar.gz
cd /opt/asterisk/asterisk-20.*echo "Configurando instalacion"/opt/asterisk/asterisk-20.*/contrib/scripts/get_mp3_source.sh
/opt/asterisk/asterisk-20.*/contrib/scripts/install_prereq install
/opt/asterisk/asterisk-20.*/configure --libdir=/usr/lib64 --with-jansson-bundled=yes#make menuselect
#Habilitar app_macro
make menuselect.makeopts
menuselect/menuselect --enable app_macro menuselect.makeoptsecho "Compilando binarios"make
make install
make basic-pbx
make configecho "Configurando usuarios y permisos"groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
chown -R asterisk:asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk
restorecon -vr {/etc/asterisk,/var/lib/asterisk,/var/log/asterisk,/var/spool/asterisk}sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/sysconfig/asterisk
sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/sysconfig/asterisksed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf
sed -i 's/;rungroup = asterisk/rungroup = asterisk/g' /etc/asterisk/asterisk.confecho '[directories](!)' >> /etc/asterisk/asterisk.conf
echo "astetcdir => /etc/asterisk" >> /etc/asterisk/asterisk.conf
echo "astmoddir => /usr/lib/asterisk/modules" >> /etc/asterisk/asterisk.conf
echo "astvarlibdir => /var/lib/asterisk" >> /etc/asterisk/asterisk.conf
echo "astdbdir => /var/lib/asterisk" >> /etc/asterisk/asterisk.conf
echo "astkeydir => /var/lib/asterisk" >> /etc/asterisk/asterisk.conf
echo "astdatadir => /var/lib/asterisk" >> /etc/asterisk/asterisk.conf
echo "astagidir => /var/lib/asterisk/agi-bin" >> /etc/asterisk/asterisk.conf
echo "astspooldir => /var/spool/asterisk" >> /etc/asterisk/asterisk.conf
echo "astrundir => /var/run/asterisk" >> /etc/asterisk/asterisk.conf
echo "astlogdir => /var/log/asterisk" >> /etc/asterisk/asterisk.conf
echo "astsbindir => /usr/sbin" >> /etc/asterisk/asterisk.confsetenforce 0echo "Configurando firewall"firewall-cmd --zone=public --add-service sip --permanent
firewall-cmd --zone=public --add-port=10000-20000/udp --permanentsystemctl enable asterisksystemctl start asterisk#Instalacion de FREEPBXecho "Instalacion de FREEPBX"echo "Bajando archivos fuente"mkdir -p /opt/freepbx
cd /opt/freepbx/
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-17.0-latest-EDGE.tgz
tar -xvf freepbx-*.tgz
cd freepbxecho "Instalando dependencias"echo "Configurando usuarios y permisos"chown -R asterisk:asterisk /var/www/*sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
sed -i 's/\(^memory_limit = \).*/\1256M/' /etc/php.ini
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
sed -i 's/\(^user = \).*/\1asterisk/' /etc/php-fpm.d/www.conf
sed -i 's/\(^group = \).*/\1asterisk/' /etc/php-fpm.d/www.confsed -i 's/\(^listen.acl_users = apache,nginx\).*/\1,asterisk/' /etc/php-fpm.d/www.confecho "Habilitando servicios"systemctl enable httpd
systemctl start httpd
firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reloadecho "Instalando FreePBX desde el instalador"/opt/freepbx/freepbx/install -n --dbuser root --dbpass passwordecho "FreePBX Instalado"IPADRESS=$(ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | head -n 1 | awk '/inet/ {print $2}' | cut -d'/' -f1)echo "Reiniciando, favor de ir a la interfaz web en tu navegador para usar FreePBX. http://$IPADRESS "
echo "Rebooting, please go to web interface in your browser to start using FreePBX. http://$IPADRESS "reboot
脚本项目地址:
https://gist.github.com/mafairnet/87c9afddda60518f26e83b28fd8bb6ca
电子书参考资料:
www.freepbx.cn
www.asterisk.org.cn
https://www.wilivm.com/blog/almalinux-vs-rocky-linux-key-differences/
相关文章:
Rocky Linux 9安装Asterisk 20和freepbx 17脚本——筑梦之路
脚本搜集来自Rocky Linux 9安装Asterisk 20和freepbx 17脚本 #!/bin/bash#Preparacion de ambiente de RockyLinuxecho "Deshabilitar SELINUX /etc/selinux/config "sed -i s/^SELINUX.*$/SELINUXdisabled/ /etc/selinux/configecho "Establecer nombre de maq…...
PSPICE FOR TI笔记记录1
快捷放置器件 R旋转 连线 w,单击器件引脚方块部分 电压探测笔 创建仿真文件 Analysis Type 分析模式:比如时域分析,频域分析 Run To Time 仿真时长 Skip intial transient bias point calculation (跳过初始瞬态偏置点计算(SKIPBP))一定要勾选 编辑…...
Java集合剖析4】LinkedList
目录 一、LinkedList的特有方法 二、LinkedList的底层数据结构 三、插入方法的具体实现 一、LinkedList的特有方法 LinkedList的底层是双向链表,它提供了操作首尾结点的方法 二、LinkedList的底层数据结构 LinkedList的底层是一个双向链表,有一个结点内部…...
基于MATLAB/octave的容积卡尔曼滤波(CKF)【带逐行注释】
介绍 CKF的三维滤波程序例程 产品概述 我们的 MATLAB 数据处理工具是专为科研人员、工程师和数据分析师设计的高效解决方案。该工具提供了一系列强大的功能,能够快速处理和分析大规模数据集,适用于各种科学和工程应用,包括信号处理、图像分…...
Python编程探索:从基础语法到循环结构实践(下)
文章目录 前言🍷四、 字符串拼接:连接多个字符串🍸4.1 使用 操作符进行字符串拼接🍸4.2 使用 join() 方法进行字符串拼接🍸4.3 使用 format() 方法进行格式化拼接🍸4.4 使用 f-string(格式化字…...
简介openwrt系统下/etc/config/network文件生成过程
openwrt的network文件,或者说在/etc/config下的文件,都是动态生成的。 脚本的函数定义在package/base-files/files/lib/functions中,有以下几个文件: libraSVN:~/Wang_SP4/openwrt-d03dc49/package/base-files/files/lib/functi…...
javaWeb项目-Springboot+vue-XX图书馆管理系统功能介绍
本项目源码(点击下方链接下载):java-springbootvue阿博图书馆管理系统源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端&…...
华为ENSP用户权限深度解析:构建安全高效的网络管理
在华为ENSP(Enterprise Network Simulation Platform)用户界面中,用户权限级别是一个重要的概念,它用于限制不同用户访问设备的权限,从而增加设备管理的安全性。以下是对华为ENSP用户界面用户权限级别的详细解释&#…...
NFC之NDEF
NDEF的通用格式 MB标志是一个1位字段,当其被设置时,表示NDEF消息的开始。 ME标志是一个1位字段,当其被设置时,表示NDEF消息的结束。 CF标志是一个1位字段,指示这是分块有效载荷的第一个记录块或中间记录块。 SR标志是…...
学习第三十六行
QValidator::State里面state为0,完全不匹配,1,部分匹配,2,完全匹配,对于label或者textedit里面的字符均为QString类型,特别是遇到数字,需要QString::number转化,对于正则表达式&…...
停车场问题
实验内容 1.问题描述: 设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆达到时间的先后顺序,依次由北向南排列(大门在最南端,最先达到的第一辆车停放在车场的最北端),若车场…...
海康相 机
海康机器人-机器视觉-下载中心 海康威视MVS客户端及虚拟相机c开发案例-CSDN博客 相机驱动下载: 下载中心 VisionMaster 视频教程_哔哩哔哩_bilibili 【VisionMaster】试用版安装说明_visionmaster试用版-CSDN博客 海康视觉算法平台VisionMaster 4.3.0 C# 二次…...
用map实现el-table全选
<el-button size"small" type"primary" click"searchProxy">查询</el-button><el-checkbox v-model"selectAll" change"changeSelectAll" >全选</el-checkbox><el-table:data"taskList&…...
【开源免费】基于SpringBoot+Vue.JS社区团购系统(JAVA毕业设计)
本文项目编号 T 024 ,文末自助获取源码 \color{red}{T024,文末自助获取源码} T024,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…...
Java进阶之路:构造方法
🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝 🥇博主昵称:小菜元 🍟博客主页…...
2025秋招八股文--网络原理篇
前言 1.本系列面试八股文的题目及答案均来自于网络平台的内容整理,对其进行了归类整理,在格式和内容上或许会存在一定错误,大家自行理解。内容涵盖部分若有侵权部分,请后台联系,及时删除。 2.本系列发布内容分为12篇…...
C#基础-面向对象的七大设计原则
目录 1.开放封闭原则(OCP) 2.单一职责原则(SRP) 3.依赖倒置原则(DIP) 4.里氏替换原则(LSP) 5.接口隔离原则(ISP) 6.合成复用原则(CRP&#…...
CSS 容器查询一探究竟
引言 在 《请列举四种「等比例自适应矩形」实现方案?》 一文中我曾使用到容器查询单位 cqw, 当时在使用 cqw 过程中只是简单过了一下容器查询相关的内容!! 所以这次专门出一篇文章, 对容器查询做一个梳理… 一、是什么 在实际开发中您是否遇到过需要根据父容器的…...
AI论文写作:如何轻松实现高原创度大揭秘
随着人工智能技术的迅猛进步,AI论文写作工具在学术界开始崭露头角,作为一种辅助手段。这些工具不仅能高效地生成论文的初步版本或部分章节,而且其产出的内容往往展现出高度的创新性。本文将探讨AI论文写作工具为何能产出如此高原创度的内容&a…...
AtCoder Beginner Contest 375 A-E 题解
我的老师让我先做最后再交,看正确率(即以OI赛制打abc) 所以我用的小号(… …) C 卡了老半天才出来,我把题读错了 难度: A. Seats 题意 给你一个字符串 S S S,仅包含 . 和 #&…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
