 Это краткое руководство на основе практическими рекомендациями MarcusSpiegel найденых здесь. Это, как покроет недостающие части для установки Repcached на сервере Ubuntu 11.04. Это копировать/вставить дружественных учебник это, используя замазку сделает это намного проще.
Это краткое руководство на основе практическими рекомендациями MarcusSpiegel найденых здесь. Это, как покроет недостающие части для установки Repcached на сервере Ubuntu 11.04. Это копировать/вставить дружественных учебник это, используя замазку сделает это намного проще.
Это, как покажет вам, как установить и построить Memcached с репликацией, создать сценарий запуска и настройки PHP использовать Memcache для сессий, а не хранить их в виде файлов. Это руководство предполагает, что вы создали 2 серверов для репликации информации закончена.
Моя установка
В этой демонстрации я буду создания repcache на 2 хозяев, они будут иметь как Lighttpd и repcache на них установлены.
- Веб-сервер 1: server1.example.com , IP-адрес: 10.10.20.10; Это будет называться server1.
- Веб-сервер 2: server2.example.com , IP-адрес: 10.10.20.11 ; Это будет называться server2 .
Установка repcache
Прежде всего, необходимо посетить repcached.lab.klab.org и скачать последнюю версию (последняя на момент написания: 2.2-1.2.8). После загрузки файла tar, мы должны установить некоторые дополнительные пакеты. Выполните это это на обоих узлах.
| 
 | 
Отсюда мы можем продолжить установку:
| 
 | 
Настройка repcache
Repcache теперь устанавливается, бинарные располож/usr/local/bin/memcachedached. Отсюда мы создадим конфигурационный файл и сценарий запуска. Выполните это на обоих узлах. Сначала откройте файл:
| 
 | 
Затем введите следующую, не забудьте изменить IP адрес в конце. Этот IP будет другой сервер на который Вы хотите, повторять.
## extra commandline options to start memcached in replicated mode # -x < ip_addr > hostname or IP address of the master replication server # -X < num > TCP port number of the master (default: 11212) DAEMON_ARGS="-m 64 -p 11211 -u root -P /var/run/memcachedrep.pid -d -x 10.10.20.11"
После сохранения файла мы должны создать сценарий.
| 
 | 
#! /bin/sh ### BEGIN INIT INFO # Provides: memcached # Required-Start: $syslog # Required-Stop: $syslog # Should-Start: $local_fs # Should-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: memcached - Memory caching daemon replicated # Description: memcached - Memory caching daemon replicated ### END INIT INFO # Author: Michael <Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.> # # Please remove the "Author" lines above and replace them # with your own name if you copy and modify this script. # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="memcachedrep" NAME=memcached DAEMON=/usr/local/bin/$NAME DAEMON_ARGS="--options args" PIDFILE=/var/run/memcachedrep.pid SCRIPTNAME=/etc/init.d/$DESC VERBOSE="yes" # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/$DESC ] && . /etc/$DESC # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac :</Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
Сохраните введитя следующем:
| 
 | 
Это позволит запускать repcache каждый раз, когда сервер перезагружается.
Тестирование
Прежде чем мы продолжен мы будем тестировать, что 2 узлов выполняют репликацию.
server1:
| 
 | 
Затем введите:
| 
 | 
Вы должны увидеть слово STORED появившееся под ним. Введите:
| 
 | 
и он вернется к консоли. Перейдите на другой сервер и введите следующее.
server2:
| 
 | 
Затем введите:
| 
 | 
и она должна возвратить значение, введенное на первом сервере. Если это так, то репликация работает.
Настройка PHP
Здесь я покажу Вам, как установить PHP использовать кэше. Потому что я использую Lighttpd каталогов могут отличаться от тех, кто использует apache2 или Nginx. Введите следующее в консоли и повторить для вторичного сервера.
| 
 | 
Поиск по файлу вниз, пока не найдете следующее:
[Session] ; Handler used to store/retrieve data. ; http://php.net/session.save-handler session.save_handler = files
Вам нужно будет изменить этj чтобы выглядело следующим образом:
[Session] ; Handler used to store/retrieve data. ; http://php.net/session.save-handler extension = memcache.so session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211"
Как только эти было сохранено просто введите (не забудьте изменить это программное обеспечение, которое Вы используете для хостинга):
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
| 
 | 
Теперь просто перезагрузите оба сервера. И можно проверить, что PHP использует их правильно, создав на одной сессии и чтение этой сессии на другом.




