Apache2 虚拟主机错误
Apache2 VirtualHost Error
我有这个带有节点应用程序的服务器,它工作得很好。从晚上到白天它都停止工作,现在我正在尝试解决这个问题。
我使用 apache2 VirtualHost 运行 这个服务器
虚拟主机代码:
<VirtualHost *:80 *:443>
ServerName website.com
ServerAlias www.website.com
DocumentRoot /var/www/project
<Directory /var/www/project>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location />
ProxyPass http://127.0.0.1:3000/
ProxyPassReverse http://1127.0.0.1:3000/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.website.com [OR]
RewriteCond %{SERVER_NAME} =website.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我的 app.js 文件:
var express = require("express");
var app = express();
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
var bodyparser = require("body-parser"),
mongoose = require("mongoose"),
passport = require("passport"),
LocalStrategy = require("passport-local"),
FacebookStrategy = require('passport-facebook').Strategy,
TwitterStrategy = require('passport-twitter').Strategy,
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
expressSanitizer = require('express-sanitizer'),
methodOverride = require("method-override"),
flash = require('connect-flash'),
authData = require('./auth.js'),
sm = require('sitemap'),
fs = require('fs');
var User = require("./models/user");
mongoose.connect("databaselink");
app.use(bodyparser.json());
app.use(bodyparser.urlencoded({extended: true}));
app.use(expressSanitizer());
app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));
app.use(methodOverride("_method"));
app.use(flash());
// PASSPORT CONFIGURATION
app.use(session({
cookie : {
maxAge : 7 * 24 * 60 * 60 * 1000
},
secret: "Bloom blaaaaa bliiiuuuummmmmmm",
saveUninitialized: false, // don't create session until something stored
resave: false, //don't save session if unmodified
store: new MongoStore({
mongooseConnection: mongoose.connection,
autoRemove: 'native', // Default
touchAfter: 24 * 3600 // time period in seconds
})
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
// used to serialize the user
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
// LISTEN
app.listen("3000", function(){
console.log("SERVER STARTED");
});
会发生什么:
我收到错误 "EADDRINUSE"。
我正在使用端口“8080”。
所以我搜索了错误 "EADDRINUSE" 并尝试将端口更改为 3000.
我使用 FileZilla 来更新服务器中的文件。
我用 app.listen(3000) 添加了新的 app.js 文件并更新了 VirtualHost 代码。
然后我重新启动了 apache 服务器和 pm2(我使用 pm2 来保持我的节点服务器在线)。
但是当我尝试访问我的网站时出现以下错误:
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.4.7 (Ubuntu) Server at www.website.com Port 80
我试图将 运行 节点 app.js 从 pm2 中分离出来并得到这个错误:
error listen EADDRINUSE :::3000
我用了 killall node 但是它说没有 node 进程。
所以我重启了VPN:
重新启动 VPN 后,我再次使用了节点 app.js,并且运行良好。
然后我用了 pm2 start app.js 也很好用。但是没有VirtualHost
我仍然无法访问该网站
所以我启动 apache/VirtualHost 问题又开始了。
VirtualHost 代码有问题?我该如何解决这个问题?
主要问题是 pm2 出现故障。库的依赖项之一 (pidusage) 破坏了 pm2。 (参考:https://github.com/Unitech/pm2/issues/3827)
这已在下一版本的 pm2 (3.0.2) 中修复。
这在很多项目中造成了很多问题,因为 pm2 被广泛使用。
我有这个带有节点应用程序的服务器,它工作得很好。从晚上到白天它都停止工作,现在我正在尝试解决这个问题。
我使用 apache2 VirtualHost 运行 这个服务器
虚拟主机代码:
<VirtualHost *:80 *:443>
ServerName website.com
ServerAlias www.website.com
DocumentRoot /var/www/project
<Directory /var/www/project>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location />
ProxyPass http://127.0.0.1:3000/
ProxyPassReverse http://1127.0.0.1:3000/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.website.com [OR]
RewriteCond %{SERVER_NAME} =website.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我的 app.js 文件:
var express = require("express");
var app = express();
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
var bodyparser = require("body-parser"),
mongoose = require("mongoose"),
passport = require("passport"),
LocalStrategy = require("passport-local"),
FacebookStrategy = require('passport-facebook').Strategy,
TwitterStrategy = require('passport-twitter').Strategy,
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
expressSanitizer = require('express-sanitizer'),
methodOverride = require("method-override"),
flash = require('connect-flash'),
authData = require('./auth.js'),
sm = require('sitemap'),
fs = require('fs');
var User = require("./models/user");
mongoose.connect("databaselink");
app.use(bodyparser.json());
app.use(bodyparser.urlencoded({extended: true}));
app.use(expressSanitizer());
app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));
app.use(methodOverride("_method"));
app.use(flash());
// PASSPORT CONFIGURATION
app.use(session({
cookie : {
maxAge : 7 * 24 * 60 * 60 * 1000
},
secret: "Bloom blaaaaa bliiiuuuummmmmmm",
saveUninitialized: false, // don't create session until something stored
resave: false, //don't save session if unmodified
store: new MongoStore({
mongooseConnection: mongoose.connection,
autoRemove: 'native', // Default
touchAfter: 24 * 3600 // time period in seconds
})
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
// used to serialize the user
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
// LISTEN
app.listen("3000", function(){
console.log("SERVER STARTED");
});
会发生什么:
我收到错误 "EADDRINUSE"。
我正在使用端口“8080”。 所以我搜索了错误 "EADDRINUSE" 并尝试将端口更改为 3000.
我使用 FileZilla 来更新服务器中的文件。 我用 app.listen(3000) 添加了新的 app.js 文件并更新了 VirtualHost 代码。
然后我重新启动了 apache 服务器和 pm2(我使用 pm2 来保持我的节点服务器在线)。
但是当我尝试访问我的网站时出现以下错误:
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.4.7 (Ubuntu) Server at www.website.com Port 80
我试图将 运行 节点 app.js 从 pm2 中分离出来并得到这个错误:
error listen EADDRINUSE :::3000
我用了 killall node 但是它说没有 node 进程。
所以我重启了VPN:
重新启动 VPN 后,我再次使用了节点 app.js,并且运行良好。 然后我用了 pm2 start app.js 也很好用。但是没有VirtualHost
我仍然无法访问该网站所以我启动 apache/VirtualHost 问题又开始了。
VirtualHost 代码有问题?我该如何解决这个问题?
主要问题是 pm2 出现故障。库的依赖项之一 (pidusage) 破坏了 pm2。 (参考:https://github.com/Unitech/pm2/issues/3827) 这已在下一版本的 pm2 (3.0.2) 中修复。
这在很多项目中造成了很多问题,因为 pm2 被广泛使用。