Drupal 6主机与nginx和PHP-FastCGI在Ubuntu 9.10

Drupal 6在Ubuntu 9.10上使用nginx和PHP-FastCGI进行托管

Drupal是一个很好的CMS,但是当您将其托管在便宜的地下室共享托管上时,它是一个很大的空间,虚拟的私人服务器是很好的,但内存受限于低端。 在资源使用方面,Apache可能是一个大罪犯,所以一个很好的选择是nginx,一个快速,轻便和高效的http服务器,通过PHP-FastCGI支持PHP。 所以这是一个非常漂亮的设置来托管Drupal,我已经采取了几个不同的howtos和论坛帖子来放在一起这个指南,这应该有一个你需要的一站式,包括一个工作的URL重写配置。

如果您使用VPS,则您的托管服务提供商将执行操作系统和OpenSSH服务器安装。 对于那些在自己的计算机或虚拟机上执行此操作的人员,而不是重新散列Falko优秀的服务器安装指南,我将首先向您发送步骤13

完美的服务器 - Ubuntu 9.10 [ISPConfig 3]

好的,所以我们要做的下一件事就是成长。 类型:

sudo su -l

接下来,我们将删除在每次使用sudo时键入密码的要求。 如果您喜欢,请随时跳过此步骤:

visudo

如果它问,我使用nano作为文本编辑器,我会继续使用它。 随意用您自己选择的文本编辑器替换它。

换行:

%admin ALL=(ALL): ALL

%admin ALL=NOPASSWD: ALL

并使用Ctrl-wCtrl-x保存并退出。

接下来,我们将安装必需的软件。 使用以下命令安装以下软件包:

aptitude install openssh-server nginx mysql-client mysql-server imagemagick php5 php5-cgi php5-cli php5-common spawn-fcgi php5-gd php5-imagick php5-imap php5-mysql

安装将会弹出窗口,要求您为MySQL创建root密码。 在这里输入 我们将需要使用该密码来结束这个howto。

还有一些其他可能需要的包,以及其他PHP功能。 您可以使用以下方式安装它们:

aptitude install php-auth php-pear php5-curl php5-idn php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl mcrypt

现在,这些程序的默认设置是非常好的,但是我们应该做一些改变。 首先是nginx:

nano /etc/nginx/nginx.conf

并修改以下行开始:

worker_processes  3;
...
keepalive_timeout 10; ...

随着您对加载和资源的了解程度越来越高,您需要进一步细化。 我们还要修改PHP的内存使用情况。 当您在Drupal中上传图片,尤其是视频时,您的上传大小,执行时间和内存使用情况可能会阻止您的上传。 所以我们要增加这些尺寸。 理想值完全取决于服务器上可用的内存。 这是我在VPS上使用的340MB RAM。

nano /etc/php5/cgi/php.ini
; Maximum allowed size for uploaded files.
upload_max_filesize = 50M
...
; Maximum size of POST data that PHP will accept.
post_max_size = 50M
...
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
max_execution_time = 120     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M      ; Maximum amount of memory a script may consume (16MB)

Nginx将php文件传递给PHP-FastCGI进行执行,因此我们需要创建几个脚本来启动PHP-FastCGI。 为此,请键入以下内容:

nano /usr/bin/php-fastcgi

并粘贴以下脚本:

#!/bin/sh
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -f /usr/bin/php5-cgi

接下来,我们需要使脚本可执行:

chmod a+x /usr/bin/php-fastcgi

第二个脚本是一个init脚本,在引导时调用我们以前的脚本。 类型:

nano /etc/init.d/php-fastcgi

并粘贴以下脚本:

#!/bin/bash
PHP_SCRIPT=/usr/bin/php-fastcgi
RETVAL=0
case "$1" in
    start)
      $PHP_SCRIPT
      RETVAL=$?
  ;;
    stop)
      killall -9 php
      RETVAL=$?
  ;;
    restart)
      killall -9 php
      $PHP_SCRIPT
      RETVAL=$?
  ;;
    *)
      echo "Usage: php-fastcgi {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL

我们需要将其设置为可执行文件,并将其设置为在启动时执行。

chmod 755 /etc/init.d/php-fastcgi
update-rc.d php-fastcgi defaults
service php-fastcgi start

接下来,我们为您的网站创建主文件夹,并设置一些权限。 我更喜欢/ srv/ var / www,但这完全是一个偏好的问题。 从这里开始,只要您看到example.com请将其更新为您的设置。

mkdir -p /srv/www/www.example.com/public_html
mkdir /srv/www/www.example.com/logs
chown -R www-data:www-data /srv/www/www.example.com

接下来,我们为out site创建一个nginx配置。

nano /etc/nginx/sites-available/www.example.com

粘贴:

server {
    listen   80;
#   server_name _   # catch-all
    server_name example.com www.example.com;
    access_log /srv/www/www.example.com/logs/access.log;
    error_log /srv/www/www.example.com/logs/error.log;
    root   /srv/www/www.example.com/public_html;
    index  index.php;
    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?q=$1 last;
        }
    }
    # serve static files directly
    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico)$ {
        rewrite ^/favicon.ico$ /sites/default/themes/mytheme/favicon.ico break;
        access_log        off;
        expires           30d;
    }
    # If you use the Imagecache module, you'll need to update the location and enable this directive
    #location ^~ /sites/default/files/imagecache/ {
    #    index  index.php index.html;
    #    # assume a clean URL is requested, and rewrite to index.php
    #    if (!-e $request_filename) {
    #        rewrite  ^/(.*)$  /index.php?q=$1  last;
    #        break;
    #    }
    #}
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /srv/www/www.example.com/public_html$fastcgi_script_name;
    }
}

接下来,我们启用配置:

cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com

并让我们重新加载nginx。

service nginx restart

在进一步之前,我们来测试一下nginx和PHP。

nano /srv/www/www.example.com/public_html/index.php

粘贴在以下代码中:

<? echo phpinfo(); ?>

让我们浏览您的网站。 如果您的DNS尚未设置,您可以添加

12.34.56.78    example.com www.example.com

到您的Linux或OS X 主机上的/ etc / hosts ,或Windows中的c:\ windows \ system32 \ drivers \ etc \ hosts文件,这将允许您通过域名访问服务器。

所以浏览http:// www.example.com并确保它有效。 如果是,我们将继续安装Drupal。

首先我们要做的是下载和解压文件。 这是我下载的最新的。 确保你得到最新版本6。

cd /srv/www/www.example.com/public_html
wget http://ftp.drupal.org/files/projects/drupal-6.16.tar.gz
tar zxvf drupal-6.16.tar.gz

让我们把它们移到正确的地方,并清理一下。

mv drupal-6.16/* .
rm -r drupal-6.16 drupal-6.16.tar.gz

接下来,我们必须设置一个配置文件,并创建一个文件目录。

cd sites/default/
cp default.settings.php settings.php
chown www-data:www-data settings.php
chmod 775 settings.php
mkdir files
chown www-data:www-data files
chmod 775 files

Drupal还需要一个MySQL数据库,所以让我们在这里创建一个:

mysql -u root -p
CREATE DATABASE drupaldb;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON drupaldb.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON drupaldb.* TO 'drupaluser'@'localhost.localdomain' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit;

现在浏览http:// www.example.com

选择安装Drupal的英文

然后输入刚刚创建的数据库的信息。

逐步通过,命名您的网站并创建管理员帐户。

Drupal使用cron条目执行维护并检查更新。 我们补充一点,当我们在终端。

crontab -e

并添加以下条目:

0   *   *   *   *   wget -O - -q -t 1 http://www.example.com/cron.php

现在,至少没有管理菜单模块,没有Drupal设置完成。

cd /srv/www/www.example.com/public_html/sites/all
mkdir modules
cd modules
wget http://ftp.drupal.org/files/projects/admin_menu-6.x-1.5.tar.gz
tar zxvf admin_menu-6.x-1.5.tar.gz

然后,您可以在“模块”菜单中启用该模块。 你去,你有一个Drupal安装工作。

现在还有更多的事情要做,我不会在这个howto中详细说明,但应该做的。 缺少的第一件事是任何类型的电子邮件设置。 第二个是锁定服务器进行生产使用。 否则,你很好去。

参考文献:

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏