在这篇文章中,我们将为您详细介绍Ubuntu和Raspbian如何设置JavaHome的内容,并且讨论关于ubuntu配置java的相关问题。此外,我们还会涉及一些关于.NETCore开发的iNeuO
在这篇文章中,我们将为您详细介绍Ubuntu 和 Raspbian 如何设置 Java Home的内容,并且讨论关于ubuntu配置java的相关问题。此外,我们还会涉及一些关于.NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案、Apache 服务器错误:在此服务器上找不到请求的 URL /ena/home/home.php、args数量很大时,数据库/ sql无法选择查询 您正在使用哪个版本的Go$ go version go version go1.14 linux/amd64 ?此问题会在最新版本中重现吗?您正在使用什么操作系统和处理器体系结构$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/home/zabludovsky/go/bin" GOCACHE="/home/zabludovsk、Bash – echo`basename $HOME`和echo $(basename $HOME)之间的差异的知识,以帮助您更全面地了解这个主题。
本文目录一览:- Ubuntu 和 Raspbian 如何设置 Java Home(ubuntu配置java)
- .NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案
- Apache 服务器错误:在此服务器上找不到请求的 URL /ena/home/home.php
- args数量很大时,数据库/ sql无法选择查询 您正在使用哪个版本的Go$ go version go version go1.14 linux/amd64 ?此问题会在最新版本中重现吗?您正在使用什么操作系统和处理器体系结构$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/home/zabludovsky/go/bin" GOCACHE="/home/zabludovsk
- Bash – echo`basename $HOME`和echo $(basename $HOME)之间的差异
Ubuntu 和 Raspbian 如何设置 Java Home(ubuntu配置java)
如何在 Ubuntu 和 Raspbian 中设置 JAVA_HOME 环境变量。
因为 Raspbian 的配置和 Ubuntu 差不多,如何进行配置。
首先你可以尝试 echo $JAVA_HOME 查看系统中的环境变量有没有配置。
如果没有输出则说明没有配置。
使用下面的命令对环境变量进行编辑。
sudo nano /etc/environment
在配置文件的最后输入下面的内容:
JAVA_HOME="/usr/lib/jvm/default-java/"
如果 你不知道你安装的 JDK 版本是什么,路径是什么的话,请参考下面的文章:Ubuntu 如何查看安装的 JDK。
保存退出后,运行命令:
source /etc/environment
这个命令的目的是将修改的配置应用到当前的用户中。
然后再运行 echo $JAVA_HOME 命令,你就可以看到当前的 JAVA_HOME 环境变量已经配置成功了。
https://www.cwiki.us/questions/57938481
.NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案
目 录
1. 概述... 2
2. 树莓派硬件配置... 2
3. 软件信息... 3
4. Raspbian下载及安装... 3
5. 准备运行程序包... 4
6. 安装SSH.. 4
7. 安装.netcore. 4
8. 安装mariadb. 5
9. 安装nginx. 7
10. 配置iNeuOS数据库和文件... 8
11. 运行iNeuOS. 9
1. 概述
备注:为了文章的完整性,在《.NET Core开发的iNeuOS物联网平台部署在Ubuntu操作系统》中的内容适用于树莓派部署,也将在这篇文章中出现。
iNeuOS成功部署在树莓派上,意味着iNeuOS打通了从嵌入式到云端整体链路,为中小企业在物联网建设方面提供了整体解决方案,降低产品研发、项目执行方面的成本。iNeuOS部署在树莓派主要意义在于:
(1) 可以形成企业网关产品,应用到系统建设中。
(2) 设备容器可以远程设备数据采集进行远程运维,并且支持设备驱动在线更新。
(3) Web组态建模可以远程配置和开发监测页面,现场屏幕就地显示。
(4) 与云端系统无缝对接,快速进行私有云部署。
(5) 支持接口形式的二次开发,降低人员开发周期和成本。
(6) 降低企业开发和部署网关的成本,核心板+外壳+人工等费用,可以控制在几百元左右。
某企业对集团级的物联网平台进行升级,符合对远程部署的终端硬件网关可以进行远程配置和运维的总体要求。
但是,也会有质疑,认为C/C++更适合嵌入式或网关级的开发,占用资源少、运行效率高,当然这是最优的方案。iNeuOS在树莓派的部署,在考虑开发成本、项目执行周期成本、人力成本等诸多因素,从整体解决方案方面为企业提供了更多的选择路径。
在实际部署和使用过程,.NET Core在raspbian下的执行效率,没有想象中的差,另外执行效率只是我们选择方案考虑的因素之一。
2. 树莓派硬件配置
树莓派3代b+开发板Raspberry Pi 3b,详细配置参数,如下图:
3. 软件信息
操作系统:raspbian September 2019
Kernel版本: 4.19
.NET Core版本:2.2.402
数据库:MariaDB (与mysql基本兼容)
4. Raspbian下载及安装
下载地址: https://www.raspberrypi.org/downloads/raspbian/,如下图:
使用Win32DiskImager工具把镜像文件写到sd卡上,过程不再详细介绍。
5. 准备运行程序包
把iNeuOS后台接口服务和前端应用系统复制到Ubuntu操作系统下的work工作目录,程序包中主要目录,如下图:
把Api和UI复制到Ubuntu操作系统的work目录下,如下图:
6. 安装SSH
执行命令:
sudo vim /etc/ssh/sshd_config
增加如下配置信息:
PasswordAuthentication yes
PermitRootLogin yes
7. 安装.netcore
sudo apt-get install curl libunwind8 gettext
curl -sSL -o dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/e0050c1d-ddc6-4ac9-ba3b-07d85eec5890/614dae615fe229f6b6f43658262a8f08/dotnet-sdk-2.2.402-linux-arm.tar.gz (不是固定下载链接地址,可以先下载好,上传到raspbian系统,再执行下面的命令)
sudo mkdir -p /opt/dotnet
sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
8. 安装mariadb
(1)实例安装
ubuntu上安装mysql比较简单,只需要几条命令就可以完成,如下:
developer:~$ sudo apt-get install mariadb-server
安装过程中会提示设置密码,注意设置一样,安装完成之后可以使用如下命令来检查是否安装成功:
developer:~$ sudo netstat -tap | grep mysql
通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
登陆mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
(2)区分大小写配置
在unbuntu下找到/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]的下添加 lower_case_table_names=1 就行了。备注:为0时大小写敏感,为1时大小写不敏感,默认为0。如下图:
(3)外网访问权限配置
本地mysql5.7数据库,当使用127.0.0.1和localhost时可以连接,但当使用本地ip时192.168.*.则连接拒绝,当然外网通过192.168..*同样无法连接。
解决方法如下:
1)登陆mysql,授权外网访问权限
developer:~$ use mysql;
developer:~$ update user set host = ‘%’ where user = ‘root’;
developer:~$ flush privileges;
2)修改my.cnf配置
在unbuntu下找到/etc/mysql/mysql.conf.d/mysqld.cnf文件,把bind-address=127.0.0.1修改bind-address=0.0.0.0
3) 跳过权限表。(与在Ubuntu下部署不一样)
在unbuntu下找到/etc/mysql/mysql.conf.d/mysqld.cnf文件(如果是mariadb数据库,则是:/etc/mysql/mariadb.conf.d/50-server.cnf),加下配置: skip-grant-tables
(4)执行 sudo mysql_secure_installation 设置root密码及权限,如下图:
其他设置,请根据实际情况进行选择。
(5)服务命令
启动方式:
使用 service 启动:service mysql start
使用 mysqld 脚本启动:/etc/inint.d/mysql start
停止方式:
使用 service 启动:service mysql stop
使用 mysqld 脚本启动:/etc/inint.d/mysql stop
重启方式:
使用 service 启动:service mysql restart
使用 mysqld 脚本启动:/etc/inint.d/mysql restart
9. 安装nginx
安装反向代理nginx,启动,命令如下:
developer:~$ sudo apt-get install nginx
developer:~$ sudo service ngnix start
然后访问一下本机的IP地址(127.0.0.1),如果出现如下页面,说明已经安装成功。
10. 配置iNeuOS数据库和文件
(1) 创建数据库,我是在window下使用Navicat执行sql脚本。如下图:
(2) 修改后台接口服务(API)访问数据库的配置文件,考虑到安全性的问题,进行了加密,如下图:
(3) 修改前端应用系统(UI)访问后台接口服务(API)的配置文件UI\lib\buffos\js\目录下request.js和uiconfig.js,如下图:
11. 运行iNeuOS
(1) 运行后台接口服务(API),修改appsettings.json配置文件,可以侦听本地所有IP的端口,增加Kestrel配置节,如下图:
执行运行接口命令,如下图:
(2) 配置nginx服务,访问前端应用系统,如下:
安装好之后进入到以下目录,打开default文件,如下命令:
developer:~$ cd /etc/nginx/sites-available
developer:~$ sudo gedit default
修改为以下的内容,侦听81端口,并指访问的根目录(UI)和浏览的默认页(index.html),如下图:
(3) 访问URL(http://127.0.0.1:81或http://192.168.31.102:81)地址,效果如下图:
登陆页面,如下图:
WEB组态建模开发,如下图:
视图应用显示,如下图:
参见前三篇文章:
《iNeuOS云操作系统,.NET Core全系打造》
《iNeuOS 物联网云操作系统2.0发布,集成设备容器、视图建模、机器学习》
《.NET Core开发的iNeuOS物联网平台部署在Ubuntu操作系统,无缝跨平台》
物联网&集成技术 QQ群:54256083
物联网&集成合作 QQ群:727664080
网站:http://www.ineuos.net
本文分享 CSDN - 唯笑志在。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
Apache 服务器错误:在此服务器上找不到请求的 URL /ena/home/home.php
在查看错误日志时,注意到以下日志:
[Sun Jan 10 04:57:09 2021] [error] [client 185.104.184.116] File does not exist:
/var/www/html/ena/ena,referer: https://enetapplications.com/ena/home/home.php
有趣的是,该网站位于 /var/www/html/ena
而不是 /var/www/html/ena/ena
。
为了解决这个问题,我调整了目录以将根目录移动到 /var/www/html-ena
,将所有文件复制到新的根目录并相应地更改配置文件,例如 /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /var/www/html-ena
ServerName enetapplications.com
RewriteEngine on
RewriteCond %{SERVER_NAME} =enetapplications.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]
</VirtualHost>
这似乎有效,虽然在加载 Letsencrypt 时不知何故我弄乱了 php,但这是一个不同的问题,仍然需要修复,但现在 SSL 正在调整目录结构。
args数量很大时,数据库/ sql无法选择查询 您正在使用哪个版本的Go$ go version go version go1.14 linux/amd64 ?此问题会在最新版本中重现吗?您正在使用什么操作系统和处理器体系结构$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/home/zabludovsky/go/bin" GOCACHE="/home/zabludovsk
如何解决args数量很大时,数据库/ sql无法选择查询 您正在使用哪个版本的Go$ go version go version go1.14 linux/amd64 ?此问题会在最新版本中重现吗?您正在使用什么操作系统和处理器体系结构$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/home/zabludovsky/go/bin" GOCACHE="/home/zabludovsk
您正在使用哪个版本的Go($ go version go version go1.14 linux/amd64
)?
go env
此问题会在最新版本中重现吗?
是
您正在使用什么操作系统和处理器体系结构($ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/home/zabludovsky/go/bin" GOCACHE="/home/zabludovsky/.cache/go-build" GOENV="/home/zabludovsky/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOnopROXY="gl.rosst.ru/backend/*" GONOSUMDB="gl.rosst.ru/backend/*" GOOS="linux" GOPATH="/home/zabludovsky/go" GOPRIVATE="gl.rosst.ru/backend/*" goproxy="https://proxy.golang.org,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/home/zabludovsky/go/src/awesomeProject1/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONfig="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build174435943=/tmp/go-build -gno-record-gcc-switches"
?
package main
import (
"database/sql"
"fmt"
"strconv"
_ "github.com/lib/pq"
)
func main() {
err := selectFromDb(65536)
if err != nil{
panic(err)
}
println("where was no errors!")
}
func selectFromDb(argsNumber int) (err error){
//open connect to postgres database,put your database connection string below,instead of second argument
db,err := sql.Open("postgres","postgres://mayber:password@localhost:5432/test?sslmode=disable")
if err != nil {
return
}
//preparing query,you can call this func with argsNumber = 10(or some not huge number)
//to check that it is working correct
var args []interface{}
query := "SELECT id FROM test_tbl WHERE id IN ("
for i := 0; i < argsNumber; i++ {
args = append(args,strconv.Itoa(i))
query = fmt.Sprintf("%s $%d,",query,i+1)
fmt.Printf("preparing query,%d/%d \\n",i,argsNumber)
}
query = fmt.Sprintf("%s);",query[:len(query)-2])
fmt.Println("preparing finished:")
//uncomment string bellow to see result query and check it
//fmt.Println(query)
//preparing query
stmt,err := db.Prepare(query)
if err != nil {
return
}
//selecting
rows,err := stmt.Query(args...)
if err != nil{
return
}
//closing db connection
err = rows.Close()
if err != nil{
return
}
return
}
您做了什么?
preparing query,0/65536
preparing query,1/65536
...
preparing query,60535/65536
preparing finished:
where was no errors!
您期望看到什么?
preparing finished:
panic: sql: expected 0 arguments,got 65536
相反,您看到了什么?
[HttpGet]
[JWTAuthenticate]
[CustomAttribute]
[LogInfo]
[LogException]
[Route("Overview")]
public string GetAccount()
{
return "Hello this is a sample api";
}
[HttpGet]
[JWTAuthenticate]
[CustomAttribute]
[LogInfo]
[LogException]
[Route("GetMenu")]
public ResponseStatus GetMainMenuSubmenu()
{
ResponseStatus objResponseStatus = new ResponseStatus();
JObject obj = new JObject();
MenuResponseModel objMMSMModel = new MenuResponseModel();
string allowedMenus = "";
try
{
allowedMenus = CommonUtility.GetConfigValue("AllowedMenuIDs");
MainMenuviewmodel objMainMenuviewmodel = LoginBizModel.GetMainMenuSubmenu(Convert.ToString(System.Web.HttpContext.Current.Items["emailID"]));
if (objMainMenuviewmodel != null && objMainMenuviewmodel.MainMenuDetails != null && objMainMenuviewmodel.MainMenuDetails.Count > 0)
{
objMMSMModel.CustomerName = Convert.ToString(System.Web.HttpContext.Current.Items["CustomerName"]);
objMMSMModel.UserName = Convert.ToString(System.Web.HttpContext.Current.Items["userName"]);
objMMSMModel.emailID = Convert.ToString(System.Web.HttpContext.Current.Items["emailID"]);
objMMSMModel.roleName = Convert.ToString(System.Web.HttpContext.Current.Items["RoleName"]);
objMMSMModel.MenuDetails = new List<MenuSubMenuModel>();
//Expose menu(s) only that are given in webconfig
objMainMenuviewmodel.MainMenuDetails = objMainMenuviewmodel.MainMenuDetails.Where(x => allowedMenus.Contains(x.MainMenuName)).ToList();
foreach (MenuModel mm in objMainMenuviewmodel.MainMenuDetails)
{
MenuSubMenuModel menu = new MenuSubMenuModel();
menu.MainMenuName = mm.MainMenuName;
menu.SubMenuName = mm.SubMenuName;
menu.SubMenuId = mm.SubMenuId;
objMMSMModel.MenuDetails.Add(menu);
}
}
objResponseStatus = ResponseStatus.SetResponseStatus(objResponseStatus,1000,Constants.Success,objMMSMModel);
}
catch (Exception ex)
{
Common.LogError(System.Reflection.MethodBase.GetCurrentMethod().Name,ex,new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetFileLineNumber());
ResponseStatus.SetExceptionResponseStatus(objResponseStatus,ex);
}
return objResponseStatus;
}
了解更多详情,https://github.com/GlebZabl/golang_postgres_bug
Bash – echo`basename $HOME`和echo $(basename $HOME)之间的差异
标题说明了一切:使用之间的区别是什么:
echo `basename $HOME`
和
echo $(basename $HOME)
请注意,我知道basename命令的作用,两种语法都有效,并且两个命令都提供相同的输出.
我只是想知道两者之间是否存在任何差异,如果可能,为什么有两种语法.
干杯
拉斐尔
解决方法
echo $(echo $(basename $HOME))
我将以“作为读者的练习”来解决如何做到这一点,它应该证明具有启发性.
今天的关于Ubuntu 和 Raspbian 如何设置 Java Home和ubuntu配置java的分享已经结束,谢谢您的关注,如果想了解更多关于.NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案、Apache 服务器错误:在此服务器上找不到请求的 URL /ena/home/home.php、args数量很大时,数据库/ sql无法选择查询 您正在使用哪个版本的Go$ go version go version go1.14 linux/amd64 ?此问题会在最新版本中重现吗?您正在使用什么操作系统和处理器体系结构$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="/home/zabludovsky/go/bin" GOCACHE="/home/zabludovsk、Bash – echo`basename $HOME`和echo $(basename $HOME)之间的差异的相关知识,请在本站进行查询。
本文标签: