整个ISPConfig的安装,配置以及所涉及的一切都是一条艰难的道路.随着颠簸和瘀伤我终于得到了完整的包装运行我想要的方式.
那些颠簸和瘀伤可能是因为我对Linux(Debian Wheezy)缺乏经验.
但是,现在一切都已设置好,我已经到了安装Symfony2的地步.与ISPConfig的所有其他方面一样,这并不像它应该去的那样.
我的问题:
日志告诉我该app目录无法访问存在问题open_basedir().
我实际上正在寻找的是如何配置这整个事情的一点指导.
随意询问其他信息.我很乐意更新我的问题.
提前致谢.
server {
listen ...:80;
listen ...:443 ssl;
ssl_protocols ...
ssl_certificate ...
ssl_certificate_key ...;
server_name mydomain.tld;
root /var/www/mydomain.tld/web;
index index.html index.htm index.php index.cgi index.pl index.xhtml;
location ~ \.shtml$ {
ssi on;
}
error_page 400 /error/400.html;
error_page 401 /error/401.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 500 /error/500.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
recursive_error_pages on;
location = /error/400.html {
internal; …Run Code Online (Sandbox Code Playgroud) 要解释我的问题,我必须添加一些上下文信息:
我们有一个网站,它与会话一起工作,已经工作了7年没有任何问题,除了我们的服务器管理员,他无法登录,我们从来不知道为什么......直到现在......
我们的服务器管理员正在度假,所以我不得不做他的一些工作,它包括登录ISP Config,它位于同一服务器和域使用不同的端口(8080),我在那里登录,检查一些值,然后当我回到我们的网站时,我无法登录,就像我们的服务器管理员一样.
做一些调试我发现在每次刷新session_id()更改时会话都有问题.
使用ini_get我得到session.cookie_domain并且session.cookie_secure是空的.
如果我做了一个print_r($_COOKIE)没有PHPSESSID,如果我把它设置为任何值,它消失,即使我写了一个很长的到期它没有保存,如果我设置2个像这样的cookie:
setcookie("PHPSESSID", "MYSESSION", time()+365*24*60*60, '/');
setcookie("a", "b", time()+365*24*60*60, '/');
Run Code Online (Sandbox Code Playgroud)
然后print_r($_COOKIE);我明白了:
Array ( [a] => b )
Run Code Online (Sandbox Code Playgroud)
我没有任何.htaccess,所以我身边没有规则,似乎ISP配置中的某些内容改变了我存储cookie的方式.
我可以在webmasters.stackexchange.com上询问,但是当有人登录ISP配置后登录我的网站时,我需要一个PHP答案来设置新值.
这是我目前要测试的代码:
<?php
session_set_cookie_params(3600,"/");
session_start();
//$_SESSION[b_id]=1;
setcookie("PHPSESSID", "GTS", time()+365*24*60*60, '/');
setcookie("a", "b", time()+365*24*60*60, '/');
echo "<div>b_id: $_SESSION[b_id]</div>";
echo "<div>session_id: ".session_id()."</div>";
echo "<div>cookie_domain: ".ini_get('session.cookie_domain')."</div>";
echo "<div>save_path: ".ini_get('session.save_path')."</div>";
echo "<div>cookie_secure: ".ini_get('session.cookie_secure')."</div>";
print_r($_COOKIE);
/*echo "<pre>";
print_r(ini_get_all());
echo "</pre>";*/
?>
Run Code Online (Sandbox Code Playgroud)
这是输出,(session_id值每次都改变):
b_id:
session_id: du95eljbkct54qktvcd18a7ej0
cookie_domain:
save_path: /var/lib/php/sessions …Run Code Online (Sandbox Code Playgroud) 我在/var/www/domain.example/web/MY_SYMLINK上有一个指向/var/www/domain.example/web/SOME_FOLDER的符号链接.这被定义为我的网站文档根目录.
然后我运行ln -sfn将符号链接更改为/var/www/domain.example/web/NEW_FOLDER.到现在为止还挺好.如果我运行ls -a,则可以看到更改已应用.
如果我在http://domain.example上点击服务器,网站仍然指向旧文件夹.我知道apache需要重新启动,所以我运行service apache2 restart但是没有执行更改.我已经尝试过apache2停止/启动,重新加载或优雅.它们都不起作用.
仅当我转到ISPConfig的控制面板并单击" 重新同步"时,才会应用符号链接更新.
我希望能够从命令行执行此操作.谁知道怎么做?
我正在使用Ubuntu 14.04和apache2以及ispconfig 3.就在几个小时前我不小心删了/ var/log/apache2文件夹包含文件,现在我的服务器无法重启apache2,我该如何恢复它们?或者,当重启服务器时,系统会自动创建该日志文件夹和文件吗?
当我重新启动apache2时
* Restarting web server apache2 [fail]
* The apache2 configtest failed.
Output of config test was:
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-ispconfig.conf:61
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for main error log
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for error log of vhost defined at /etc/apache2/sites-enabled/000-default.conf:1
AH00014: Configuration check failed
Action 'configtest' failed.
The Apache error log may have …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用名为Mosquitto PHP(https://github.com/mgdm/Mosquitto-PHP/)的PHP插件。我已经正确安装了所有程序,并且在“ php -m”下似乎可以正确显示。
我正在使用一个小的测试代码来查看它是否以其基本形式起作用:
<?php
$c = new Mosquitto\Client;
$c->onConnect(function() use ($c) {
$c->publish('mgdm/test', 'Hello', 2);
});
$c->connect('test.mosquitto.org');
for ($i = 0; $i < 100; $i++) {
// Loop around to permit the library to do its work
$c->loop(1);
}
echo "Finished\n";
?>
Run Code Online (Sandbox Code Playgroud)
而且似乎在我的浏览器中返回“完成”。因此,我决定升级游戏,并向其添加TLS连接(如所记录):
<?php
$c = new Mosquitto\Client;
$c->onConnect(function() use ($c) {
$c->publish('mgdm/test', 'Hello', 2);
});
$c->setTlsCertificates('mosquitto.org.crt');
$c->connect('test.mosquitto.org', '8883');
for ($i = 0; $i < 100; $i++) {
$c->loop(1);
}
echo "Finished\n";
?>
Run Code Online (Sandbox Code Playgroud)
我获得了证书,并确保apache2可以读取它,并随后将所有权设置为apache2。原来,这给了我浏览器500内部服务器错误。
-rwsrwsrwt 1 …Run Code Online (Sandbox Code Playgroud) 我正在使用 apache 运行 ISPConfig 3 服务器。为了获得 HTTPS,我使用了让我们加密的 certbot。ISPConfig 支持适用于各种引用的证书生成。
一个站点在不同的端口本地运行(因为它是一个复杂的系统)。为了访问它,我在 ISPConfig 中添加了一个新站点,并将 apache 配置为反向代理,如下所示。该站点正在运行,但无法通过 certbot 更新证书(不仅适用于此站点)。
ProxyRequests Off
ProxyVia Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://my.domain.com:8080
ProxyPassReverse / http://my.domain.com:8080
Run Code Online (Sandbox Code Playgroud)
我猜问题是挑战文件夹(/acme/.well-known/acme-challenge)无法访问
如何将 apache 配置为能够更新其证书的反向代理?
如何更改Document RootISPConfig 3中的特定域/子域.
我需要将我的子域指向与标准client3 web6根不同的目录.
在"ISPConfig 3"中,此字段在创建期间或之后都不可编辑.