Вся документация по Drupal, которую я могу найти, содержит шаг "перейти к браузеру и продолжить установку там".

Как я могу выполнить эти шаги из моей командной строки?

Я пытаюсь создать сайт, на котором я могу запустить экземпляр AWS и установить Drupal и т.д. Из командной строки.

7 ответов7

4

Вы хотите использовать сценарий обеспечения Drush.

Drush - это оболочка командной строки и интерфейс сценариев для Drupal, настоящего швейцарского армейского ножа, предназначенного для того, чтобы облегчить жизнь тем из нас, кто тратит часть нашего рабочего времени на взлом командной строки.

2

Установка drupal из curl немного затруднителен из-за различных перенаправлений, которые делает скрипт установки. Вы также должны читать и писать куки в определенные моменты. Однако: я создал скрипт curl, который установит drupal из командной строки :) Примечание: Проверено только с drupal-6.x, php5 и расширением php curl.

Как примечание сайта, прежде чем делать это, вы должны рассмотреть возможность использования команды drush site-install!

Это было проверено на drupal-6.20 с PHP 5.3. Насколько мне известно, в Druapl 7 должен быть включен Javascript. И поэтому не будет устанавливать с локон! Вы также должны отметить, что для этой работы необходимо установить правильные файлы для settings.php и папки с файлами (в противном случае мы получим ошибки, а curl не завершится!)

Сначала мы добавляем класс curl.

<?php

// class found on php.net
// http://php.net/manual/en/book.curl.php

class mycurl {
     protected $_useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1';
     protected $_url;
     protected $_followlocation;
     protected $_timeout;
     protected $_maxRedirects;
     protected $_cookieFileLocation = './cookie.txt';
     protected $_post;
     protected $_postFields;
     protected $_referer ="http://www.google.com";

     protected $_session;
     protected $_webpage;
     protected $_includeHeader;
     protected $_noBody;
     protected $_status;
     protected $_binaryTransfer;
     public    $authentication = 0;
     public    $auth_name      = '';
     public    $auth_pass      = '';

     public function useAuth($use){
       $this->authentication = 0;
       if($use == true) $this->authentication = 1;
     }

     public function setName($name){
       $this->auth_name = $name;
     }
     public function setPass($pass){
       $this->auth_pass = $pass;
     }

     public function __construct($url,$followlocation = true,$timeOut = 30,$maxRedirecs = 4,$binaryTransfer = false,$includeHeader = true,$noBody = false)
     {
         $this->_url = $url;
         $this->_followlocation = $followlocation;
         $this->_timeout = $timeOut;
         $this->_maxRedirects = $maxRedirecs;
         $this->_noBody = $noBody;
         $this->_includeHeader = $includeHeader;
         $this->_binaryTransfer = $binaryTransfer;

         $this->_cookieFileLocation = dirname(__FILE__).'/cookie.txt';

     }

     public function setReferer($referer){
       $this->_referer = $referer;
     }

     public function setCookiFileLocation($path)
     {
         $this->_cookieFileLocation = $path;
     }

     public function setPost ($postFields)
     {
        $this->_post = true;
        $this->_postFields = $postFields;
     }

     public function setUserAgent($userAgent)
     {
         $this->_useragent = $userAgent;
     }

     public function createCurl($url = 'nul')
     {
        if($url != 'nul'){
          $this->_url = $url;
        }

         $s = curl_init();

         curl_setopt($s,CURLOPT_URL,$this->_url);
         curl_setopt($s,CURLOPT_HTTPHEADER,array('Expect:'));
         curl_setopt($s,CURLOPT_TIMEOUT,$this->_timeout);
         curl_setopt($s,CURLOPT_MAXREDIRS,$this->_maxRedirects);
         curl_setopt($s,CURLOPT_RETURNTRANSFER,true);
         curl_setopt($s,CURLOPT_FOLLOWLOCATION,$this->_followlocation);
         curl_setopt($s,CURLOPT_COOKIEJAR,$this->_cookieFileLocation);
         curl_setopt($s,CURLOPT_COOKIEFILE,$this->_cookieFileLocation);

         if($this->authentication == 1){
           curl_setopt($s, CURLOPT_USERPWD, $this->auth_name.':'.$this->auth_pass);
         }
         if($this->_post)
         {
             curl_setopt($s,CURLOPT_POST,true);
             curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields);

         }

         if($this->_includeHeader)
         {
               curl_setopt($s,CURLOPT_HEADER,true);
         }

         if($this->_noBody)
         {
             curl_setopt($s,CURLOPT_NOBODY,true);
         }
         /*
         if($this->_binary)
         {
             curl_setopt($s,CURLOPT_BINARYTRANSFER,true);
         }
         */
         curl_setopt($s,CURLOPT_USERAGENT,$this->_useragent);
         curl_setopt($s,CURLOPT_REFERER,$this->_referer);

         $this->_webpage = curl_exec($s);
         $this->_status = curl_getinfo($s,CURLINFO_HTTP_CODE);
         curl_close($s);

     }

   public function getHttpStatus()
   {
       return $this->_status;
   }

   public function __tostring(){
      return $this->_webpage;
   }
}

И теперь мы создаем скрипт с классом curl.

<?php

include_once "curl.inc";

// your site
$site_url = 'http://drupal';

// profile
$profile = 'default';

// locale
$locale = 'en';

// database
$db_path = 'drupal';

// database user
$db_user = 'root';

// database pass
$db_pass = 'password';

// database host
$db_host = 'localhost';

// name of site
$site_name = 'site_name';

// site email
$site_mail = 'site_mail@site.com';

// admin account name
$account_name = 'admin';

// admin account email
$account_mail = 'admin@admin.dk';

// admin account pass
$account_pass = 'admin1234';

// date time zone
$date_default_timezone = '-39600';

// use clean url.
$clean_url = '1';

// update status module
$update_status_module = '1';

// end of settings
 // create a url for curling db settings
$url_str = "db_path=$db_path&";
$url_str.= "db_user=$db_user&";
$url_str.= "db_pass=$db_pass&";
$url_str.= "db_host=$db_host&";
$url_str.= "db_prefix=&";
$url_str.= "db_port=&";
$url_str.= "op=Save and continue" . "&";
$url_str.= "form_id=install_settings_form";
$url_str = urlencode($url_str);

$url = "$site_url/install.php?profile=$profile";
$curl = new mycurl($url, true);
$curl->createCurl();
echo $curl;

$url = "$site_url/install.php?profile=$profile&locale=$locale";
$curl = new mycurl($url, true);
$curl->setPost($url_str);
$curl->createCurl();
echo $curl;

$url = "$site_url/install.php?profile=$profile&locale=$locale&op=do_nojs&id=1";

$curl = new mycurl($url, true);
$curl->setPost($url_str);
$curl->createCurl();
echo $curl;

$url = "$site_url/install.php?profile=$profile&locale=$locale&op=finished&id=1";

$curl = new mycurl($url, true);
$curl->setPost($url_str);
$curl->createCurl();
echo $curl;


// set settings for loading database with site base settings
$url_str = "site_name=$site_name&";
$url_str.= "site_mail=$site_mail&";
$url_str.= "account[name]=$account_name&";
$url_str.= "account[mail]=$account_mail&";
$url_str.= "account[pass][pass1]=$account_pass&";
$url_str.= "account[pass][pass2]=$account_pass&";
$url_str.= "date_default_timezone=$date_default_timezone&";
$url_str.= "clean_url=$clean_url&";
$url_str.= "form_id=install_configure_form&";
$url_str.= "update_status_module[1]=$update_status_module";


$url = "$site_url/install.php?profile=default&locale=en";
$curl = new mycurl($url, true);
$curl->setPost($url_str);
$curl->createCurl();
echo $curl;

die();
?>

- Установите Drupal с помощью cURL

1

Вы можете записать шаги URL с помощью cURL.

0

Не стесняйтесь проверить модуль drush_site_install6, доступный здесь:http://drupal.org/project/drush_site_install6

0

Как насчет использования текстового браузера Lynx?

0

Рабочий скрипт Curl можно найти здесь: http://www.os-cms.net/content/article/view/1

0

Вы можете использовать расширение под названием Densite. Это будет сделано для 6.x и 5.x - тестируйте только на Ubuntu.

Ссылка на установку drupal с curl не работает.

Установка Drupal 6 с помощью командной строки с Drush и Twill

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .