avatar Ubuntu Установка Nginx из исходных кодов в Ubuntu.

Я думаю что для многих будет полезно руководство о том как установить Nginx из исходных кодов.
Все достаточно просто и разнимает от силы минут 15.

sudo su

Устанавливаем необходимые пакеты, без них nginx не соберется:
aptitude install libpcre3-dev libcurl4-openssl-dev gcc


Качаем исходники с сайта разработчиков:
wget http://sysoev.ru/nginx/nginx-1.0.4.tar.gz


Распаковываем скаченное:
tar -zxvf nginx-1.0.4.tar.gz


Переходим в директорию с исходниками:
cd nginx-1.0.4


./configure --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid \
 --user=www-data \
 --group=www-data \
 --with-http_ssl_module \
 --with-http_realip_module \
 --with-http_addition_module \
 --with-http_sub_module \
 --with-http_dav_module \
 --with-http_flv_module \
 --with-http_gzip_static_module \
 --with-mail \
 --with-mail_ssl_module
make
make install


Создаем директории в которых будут лежать конфигурационные файлы наших виртуальных хостов:
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled


Создаем дефолтный виртуальный хост:
nano /etc/nginx/sites-available/default

Вставляем в него следующее:
# You may add here your
# server {
#	...
# }
# statements for each of your virtual hosts

server {
	listen   80 default;
	server_name  localhost;

	access_log  /var/log/nginx/localhost.access.log;

	location / {
		root   /var/www/nginx-default;
		index  index.html index.htm;
	}

	location /doc {
		root   /usr/share;
		autoindex on;
		allow 127.0.0.1;
		deny all;
	}

	location /images {
		root   /usr/share;
		autoindex on;
	}

	#error_page  404  /404.html;

	# redirect server error pages to the static page /50x.html
	#
	#error_page   500 502 503 504  /50x.html;
	#location = /50x.html {
	#	root   /var/www/nginx-default;
	#}

	# proxy the PHP scripts to Apache listening on 127.0.0.1:80
	#
	#location ~ \.php$ {
		#proxy_pass   http://127.0.0.1;
	#}

	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
	#location ~ \.php$ {
		#fastcgi_pass   127.0.0.1:9000;
		#fastcgi_index  index.php;
		#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
		#includefastcgi_params;
	#}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	#location ~ /\.ht {
		#deny  all;
	#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#listen   8000;
#listen   somename:8080;
#server_name  somename  alias  another.alias;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}


# HTTPS server
#
#server {
#listen   443;
#server_name  localhost;

#ssl  on;
#ssl_certificate  cert.pem;
#ssl_certificate_key  cert.key;

#ssl_session_timeout  5m;

#ssl_protocols  SSLv2 SSLv3 TLSv1;
#ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers   on;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}


Создадим символическую ссылку на этот файл в директорию sites-enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled


Нам необходимо добавить Nginx в автозагрузку при старте системы, а также возможность управлять его работой через init.d командами вида/etc/init.d/nginx start / stop / reload / и прочее.
Создадим пустой файл для скрипта в /etc/init.d/
nano /etc/init.d/nginx

И добавим в него следующее:
#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
	. /etc/default/nginx
fi

set -e

. /lib/lsb/init-functions

test_nginx_config() {
  if nginx -t $DAEMON_OPTS
  then
    return 0
  else
    return $?
  fi
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
        test_nginx_config
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON -- $DAEMON_OPTS || true
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON || true
	echo "$NAME."
	;;
  restart|force-reload)
	echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON || true
	sleep 1
        test_nginx_config
	start-stop-daemon --start --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
	echo "$NAME."
	;;
  reload)
        echo -n "Reloading $DESC configuration: "
        test_nginx_config
        start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \
            --exec $DAEMON || true
        echo "$NAME."
        ;;
  configtest)
        echo -n "Testing $DESC configuration: "
        if test_nginx_config
        then
          echo "$NAME."
        else
          exit $?
        fi
        ;;
  status)
	status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
	;;
  *)
	echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
	exit 1
	;;
esac

exit 0


Теперь нам необходимо сделать его исполняемым:
chmod +x /etc/init.d/nginx

Пробуем запустить:
/etc/init.d/nginx start

Запустилось-значит все отлично.
Дальше остается создать виртуальные хосты и добавлять нужный функционал.
Также, вам обязательно пригодится статья о том, как установить Nginx с PHP-FastCGI и MySQL в Ubuntu

19 комментариев

avatar
Напиши пожалуйста, как сюда прикрутить php или что лучше php-cgi или что?
avatar
Сейчас еще погуглил, нашел FastCGI.
Что и как лучше прикрутить?

Раньше пользовался LAMP (в Ubuntu Server). Сейчас решил познакомиться с nginx и всеми примочками. Если не трудно расспиши что да как :)
avatar
Сейчас дописываю статью Nginx+Apache, статья получилась довольно большой, а сразу 2 статьи писать немогу )
Для общего ознакомления можно посмотреть:Тут, но там на примере Apache.
В будущем обязательно сделаю.
avatar
Статья про apache+nginx появилась.
Я таки жду статью про прикручиванию к nginx — fastCGI, PHP. (Вообще хотелось бы почитать обзор по этим модулям что лучше сейчас популярнее, лучше)
avatar
Если у меня будет время — сделаю, но не fastCGI, а php-fpm. И без всяческих апачей.
avatar
Буду ждать, очень интересно ознакомиться с вашим решением.
avatar
Не хочу показаться назойливым :) Но все же что со статьей? :)
avatar
Работы много, постараюсь сделать в ближайшее время.
avatar
А можно сделать урок по настройки nginx + apache2 + mysql + php5 + phpmyadmin + proftpd + ssl + ISPConfig + quota и + SquirrelMail, а то не могу уже 1.5 месяца все это дело настроить(( по отдельности все работает а все вместе ерунда какая это((( оч. нужно…
avatar
ну руководство по настройке Nginx+Apache+php+Mysql есть на этом сайте, если имеется в виду proftpd+TLS, то тоже и про дисковые квоты статья, воспользуйтесь поиском.
ISP я не пользуюсь, у меня в ней нет необходимости, работаю через консоль, а «Белку» одну ставить смысла нет, к ней нужен postfix или exim + dovecout.
По отдельности мануалов навалом, а вот чтобы се собрать в одну кучу, да еще чтобы оно все заработало, задача сложная, но, вполне, выполнимая…
avatar
А вот у вас есть статья nginx + phpmyadmin, после того как я сначала сделал вот Nginx+Apache с PHP5, MySQL на ubunte server 12.04 у меня вообще перестало работать((
avatar
дык причем тут связка nginx+php-fpm и nginx+apache+php это разные системы и принцип работы у них несколько отличается.
если у всё так сделано, то и ставьте стандартно из репозиториев выбирайте apache при установке phpmyadmin и потом в nginx добавьте алиас-вот и все.
вы просто не разобрались.
по сути весь фокус в том, что нужно добавить ссылки к директории phpmyadmin- проблема отлавливается через логи на раз два!
avatar
А нельзя к примеру сперва nginx, а потом все остальное? Да я новичок в этом деле, а вообще из за чего состоит VPS? Из nginx + apache + php + mysql + phpmyadmin и ftp, вроде бы ничего не забыл, ну не считая плагинов))
avatar
воспользуйтесь поиском по сайту, все уже есть!
avatar
Да мне вот еще что интересно как нужно разбивать жесткие диски под WebServer? вот при положим у меня на данный момент есть два жестких по 500Гб и я хочу поставить на один из двух UbuntuServer 12.04 а и сделать из них аппаратный RAID 1. Вопрос RAID нужно делать до того как установка или можно после зайти в БИОС.
И еще вопрос если я буду настраивать не в папку /var/www, а в /home/www у меня так же будет работать?
И еще один вопрос когда все установлю и все за работает и я куплю еще пару жестких к примеру 2Тб я смогу перенести папку с сайтами на один из жестких дисков?
avatar
если вы планируете создавать аппаратный RAID массив, то он создается до установки системы, затем система ставится на него.
Да без разницы, где у вас будет корневая директория сайта хоть в /kornevaya/directoriya/saita главное чтобы прав хватало на чтение из нее.
Если ваш контроллер поддерживает расширение массива, без его разрушения, то можно попробовать, но на боевом сервере я бы такое проворачивать не стал, а если просто подключить жесткий диск разметить его и примонтировать-без проблем…
avatar
спасибо, а если я к примеру в биосе установлю параметры на райде моссив к примеру на 4 диска о потом буду с временем ставить по два так с работает?)))
avatar
Это вам расскажет документация, к вашему RAID контроллеру! :)
avatar
понятно спасибо)))
Есть что добавить? Регистрируйся и оставляй комментарии!