在Ubuntu 12.04上的Nginx中设置iRedMail管理站点

Bri*_*ian 2 ubuntu ssl nginx ubuntu-12.04

我有一段时间让这个工作,无法在任何地方找到一个可靠的答案所以我想我会把我的解决方案发布到SO所以其他人可能会觉得它很有用.

我想在我的MX服务器上的一个单独的虚拟机上运行我的所有SSL站点,而iRedMail的默认情况并非如此.使用nginx在新服务器上运行phpMyAdmin和roundcube非常简单,这里不会介绍,使用uwsgi让管理面板在nginx下运行并不容易.

最终结果是一台服务器只作为邮件服务器,一台服务器运行nginx进行Web管理.

Bri*_*ian 7

我开始使用新的Ubuntu 12.04.2 LTS安装,2个服务器设置默认选项,只在安装服务器远程访问时添加OpenSSL.一台服务器是邮件服务器,一台是SSL Web服务器.

在邮件服务器上,我下载了最新版本的iRedMail(截至本文时为0.8.4)并运行安装以设置邮件服务器组件.我使用mySQL作为我的后端,所以我检查了该选项,输入了我的其余域信息和密码,并在最后一页上只检查了DKIM,iRedAdmin和Fail2Ban.

在web nginx SSL服务器上...再次默认安装,只添加了OpenSSL.

以下是以root身份运行的命令,用于安装运行管理面板所需的组件:

apt-get update
apt-get install nginx uwsgi uwsgi-plugin-python python-pip python-mysqldb
pip install jinja2
pip install web.py
Run Code Online (Sandbox Code Playgroud)

然后我创建了我希望放置和设置iRedAdmin的位置

mkdir /var/www/iredadmin
mkdir /var/www/iredadmin/static
mkdir /var/www/iredadmin/python-home
Run Code Online (Sandbox Code Playgroud)

并复制直接从邮件服务器安装的iredadmin并将其放入新服务器的目录中.

scp -r user@mail-server:/usr/share/apache2/iredadmin/* /var/www/iredadmin/
Run Code Online (Sandbox Code Playgroud)

创建了位于以下位置的uwsgi application config ini文件:/etc/uwsgi/apps-available/iredadmin.ini

[uwsgi]
plugins=python
vhost=true
socket=/var/run/uwsgi/app/iredadmin/iredadmin.socket
Run Code Online (Sandbox Code Playgroud)

创建了软链接以启用应用程序:

ln -s /etc/uwsgi/apps-available/iredadmin.ini /etc/uwsgi/apps-enabled/iredadmin.ini
Run Code Online (Sandbox Code Playgroud)

为位于以下位置的nginx创建虚拟主机配置:/ etc/nginx/sites-available/iredadmin

server {
    listen 443 ssl; ## listen for ipv4; this line is default and implied
    access_log /var/log/nginx/iredadmin.access.log;
    error_log /var/log/nginx/iredadmin.error.log;

   ssl_certificate /etc/nginx/ssl/star.crt;
   ssl_certificate_key /etc/nginx/ssl/server.key;
   ssl_session_timeout 5m;
   ssl_protocols SSLv3 TLSv1;
   ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
   ssl_prefer_server_ciphers on;

    server_name iredadmin.server.com;

    location / {
    root /var/www/iredadmin/;
    uwsgi_pass unix:///var/run/uwsgi/app/iredadmin/iredadmin.socket;
    uwsgi_param UWSGI_PYHOME /var/www/iredadmin/python-home;
    uwsgi_param UWSGI_CHDIR /var/www/iredadmin;
    uwsgi_param UWSGI_SCRIPT iredadmin;
    include uwsgi_params;
    }

    location /static {
    alias /var/www/iredadmin/static/;
        }

    location ~ /\.ht {
            deny all;
    }
}
Run Code Online (Sandbox Code Playgroud)

并创建了一个软链接以启用nginx网站:

ln -s /etc/nginx/sites-available/iredadmin /etc/nginx/sites-enabled/iredadmin
Run Code Online (Sandbox Code Playgroud)

最后,重新启动服务并从浏览器转到服务器名称:

/etc/init.d/uwsgi restart
/etc/init.d/nginx restart
Run Code Online (Sandbox Code Playgroud)