- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试在端口 80 和 443 上运行 Express 服务器,但收到错误消息,表明它们已被使用。
EADDRINUSE 错误
但是,我的 Ubuntu 服务器说实际上端口 80 和 443 并不繁忙:
ubuntu@ip-182-47-78-432:~$ sudo netstat -nlp
我得到:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4549/node
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1102/sshd
tcp 0 0 0.0.0.0:27000 0.0.0.0:* LISTEN 14651/mongod
tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 4549/node
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 12374/mongod
tcp6 0 0 :::22 :::* LISTEN 1102/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 580/dhclient
udp 0 0 0.0.0.0:23728 0.0.0.0:* 580/dhclient
udp6 0 0 :::1742 :::* 580/dhclient
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 8966 1104/acpid /var/run/acpid.socket
unix 2 [ ACC ] SEQPACKET LISTENING 7449 412/systemd-udevd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 8521 869/dbus-daemon /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 7430879 14651/mongod /tmp/mongodb-27000.sock
unix 2 [ ACC ] STREAM LISTENING 1636971 1/init @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 19618017 20335/node /home/ubuntu/.forever/sock/worker.1429234248700JdV.sock
unix 2 [ ACC ] STREAM LISTENING 8616395 12374/mongod /tmp/mongodb-27017.sock
unix 2 [ ACC ] STREAM LISTENING 19620699 21172/node /home/ubuntu/.forever/sock/worker.1429234407027ZZT.sock
会发生什么?或者我还可以运行什么其他命令来查找有用的东西?
<小时/>编辑1:
我的代码:
var fs = require('fs');
var http = require('http');
var https = require('https');
var app = require('./app');
var credentials = {
key: fs.readFileSync('private_key.pem', 'utf8'),
cert: fs.readFileSync('com_certificate.pem', 'utf8'),
ca: [
fs.readFileSync('com_certificate_chain_1.pem', 'utf8'),
fs.readFileSync('com_certificate_chain_2.pem', 'utf8')
]
};
http.createServer(app).listen(80, function() {
console.log('HTTP server started on port ' + 80 + '...');
});
https.createServer(credentials, app).listen(443, function() {
console.log('HTTPS server started on port ' + 443 + '...');
});
<小时/>
编辑2:
我在 Amazon 云服务器上,它没有运行 Skype。
编辑3:
var express = require('express');
var app = module.exports = express();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var methodOverride = require('method-override');
var cors = require('cors');
var corsOptions = require('./config/cors');
var config = require('./config/db');
var spreadsheet = require('./services/spreadsheet');
// models
var User = require('./app/models/user.js');
var Goal = require('./app/models/goal.js');
var Portfolio = require('./app/models/portfolio.js');
var Security = require('./app/models/security.js');
// environment variables
app.set('views', __dirname + '/app/views');
app.set('view engine', 'ejs');
// configure db
app.set('/api/v1', config.db[app.settings.env]);
mongoose.connect(app.get('/api/v1'), function(err) {
if(err) { return console.error(err); }
});
// mongoose.connection.on('error', console.error.bind(console, 'Connection error: '));
mongoose.connection.once('open', function cb() {
console.log('Connected.');
console.log(app.settings.env);
});
// get data from a POST request
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// get data from cookies
app.use(cookieParser());
// make PUT and DELETE requests from views
app.use(methodOverride(function(req, res) {
if (req.body && typeof req.body === 'object' && '_method' in req.body) {
var method = req.body._method;
delete req.body._method;
return method;
}
}));
// enable pre-flight and cors for every route
app.options('*', cors());
app.use(cors(corsOptions));
// force HTTPS redirect
app.use(function(req, res, next) {
if (!req.secure) {
return res.redirect('https://' + req.get('host') + req.url);
}
next();
});
// api routes
var user_routes = require('./routes/user_routes');
var security_routes = require('./routes/security_routes');
var portfolio_routes = require('./routes/portfolio_routes');
var goal_routes = require('./routes/goal_routes');
app.use('/api/v1/users', user_routes);
app.use('/api/v1/securities', security_routes);
app.use('/api/v1/portfolios', portfolio_routes);
app.use('/api/v1/goals', goal_routes);
// MVC routes
var user_controller = require('./app/controllers/user_controller');
var security_controller = require('./app/controllers/security_controller');
var portfolio_controller = require('./app/controllers/portfolio_controller');
var goal_controller = require('./app/controllers/goal_controller');
app.use('/users', user_controller);
app.use('/securities', security_controller);
app.use('/portfolios', portfolio_controller);
app.use('/goals', goal_controller);
编辑4:
尝试运行服务器时收到的错误消息:
ubuntu@ip-172-31-15-213:~/services/api$ nodemon server.js
17 Apr 21:12:17 - [nodemon] v1.3.7
17 Apr 21:12:17 - [nodemon] to restart at any time, enter `rs`
17 Apr 21:12:17 - [nodemon] watching: *.*
17 Apr 21:12:17 - [nodemon] starting `node server.js`
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at Server.listen (net.js:1138:5)
at Object.<anonymous> (/home/ubuntu/services/api/server.js:17:24)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
17 Apr 21:12:17 - [nodemon] app crashed - waiting for file changes before starting...
看来这次我遇到了不同的错误......
编辑5:
如果我运行telnet localhost 80
,我会得到:
ubuntu@ip-172-31-15-213:~/services/api$ telnet localhost 80
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
最佳答案
您的错误显示错误:监听EACCES
,而不是EADDRINUSE
。
EACCES
的原因是绑定(bind)到 1024 以下的端口(例如 80 和 443)需要 root 权限,而您似乎并未以 root 身份启动应用程序(在此之前,请确保您了解以 root 用户身份运行应用程序的影响)。
关于linux - 我的 Express 服务器说端口 80 和 443 正在使用,但 `netstat -nlp` 却说相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690953/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
Linux 管道可以缓冲多少数据?这是可配置的吗? 如果管道的两端在同一个进程中,但线程不同,这会有什么不同吗? 请注意:这个“同一个进程,两个线程”的问题是理论上的边栏,真正的问题是关于缓冲的。 最
我找到了here [最后一页] 一种有趣的通过 Linux 启动 Linux 的方法。不幸的是,它只是被提及,我在网上找不到任何有用的链接。那么有人听说过一种避免引导加载程序而使用 Linux 的方法
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图了解 ld-linux.so 如何在 Linux 上解析对版本化符号的引用。我有以下文件: 测试.c: void f(); int main() { f(); } a.c 和 b.c:
与 RetroPie 的工作原理类似,我可以使用 Linux 应用程序作为我的桌面环境吗?我实际上并不需要像实际桌面和安装应用程序这样的东西。我只需要一种干净简单的方法来在 RaspberryPi 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
有什么方法可以覆盖现有的源代码,我应该用 PyQt、PyGTK、Java 等从头开始构建吗? 最佳答案 如果您指的是软件本身而不是它所连接的存储库,那么自定义应用程序的方法就是 fork 项目。据我所
我的情况是:我在一个磁盘上安装了两个 linux。我将第一个安装在/dev/sda1 中,然后在/dev/sda2 中安装第二个然后我运行第一个系统,我写了一个脚本来在第一个系统运行时更新它。
我在 i2c-0 总线上使用地址为 0x3f 的系统监视器设备。该设备在设备树中配置有 pmbus 驱动程序。 问题是,加载 linux 内核时,这个“Sysmon”设备没有供电。因此,当我在总线 0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正试图在 linux 模块中分配一大块内存,而 kalloc 做不到。 我知道唯一的方法是使用 alloc_bootmem(unsigned long size) 但我只能从 linux 内核而不是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有 .sh 文件来运行应用程序。在该文件中,我想动态设置服务器名称,而不是每次都配置。 我尝试了以下方法,它在 CentOS 中运行良好。 nohup /voip/java/jdk1.8.0_71/
我是在 Linux 上开发嵌入式 C++ 程序的新手。我有我的 Debian 操作系统,我在其中开发和编译了我的 C++ 项目(一个简单的控制台进程)。 我想将我的应用程序放到另一个 Debian 操
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我使用4.19.78版本的稳定内核,我想找到带有企鹅二进制数据的C数组。系统启动时显示。我需要在哪里搜索该内容? 我在 include/linux/linux_logo.h 文件中只找到了一些 Log
我知道可以使用 gdb 的服务器模式远程调试代码,我知道可以调试针对另一种架构交叉编译的代码,但是是否可以更进一步,从远程调试 Linux 应用程序OS X 使用 gdbserver? 最佳答案 当然
是否有任何可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的是在另一台机器上重建它,但假设我们唯一能得到的是一个二进制文件,那么这可能与否? (我知道这可能并不容易,但我只是
我是一名优秀的程序员,十分优秀!