Thank you for reading this post, don't forget to subscribe!
Установите контейнер LXC Centos 7 командой:
1 |
lxc-create -t download -n test-centos -- --dist centos --release 7 --arch amd64 |
Подключитесь к LXC контейнеру.
1 |
lxc-attach --name test-centos |
Установите репозиторий epel
1 2 3 |
rpm --import https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7 rpm --import https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7 yum install epel-release -y |
Установите репозиторий remi
1 2 3 4 5 |
cd /tmp rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm rm -f remi-release-7.rpm |
Обновите контейнер и установите необходимый софт
1 2 |
yum update -y yum install wget deltarpm mc nano htop less man net-tools supervisor screen cronie crontabs logrotate zip unzip -y |
Настройка статического IP адреса контейнера
В конфиге на хост машине отредактируйте конфиг. Файл /var/lib/lxc/test-centos/config
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# Template used to create this container: /usr/share/lxc/templates/lxc-download # Parameters passed to the template: --dist centos --release 7 --arch amd64 # Template script checksum (SHA-1): 273c51343604eb85f7e294c8da0a5eb769d648f3 # For additional config options, please look at lxc.container.conf(5) # Uncomment the following line to support nesting containers: #lxc.include = /usr/share/lxc/config/nesting.conf # (Be aware this has security implications) # Distribution configuration lxc.include = /usr/share/lxc/config/common.conf lxc.include = /usr/share/lxc/config/userns.conf lxc.arch = x86_64 # Container specific configuration lxc.idmap = u 0 100000 65536 lxc.idmap = g 0 100000 65536 lxc.rootfs.path = dir:/var/lib/lxc/test-centos/rootfs lxc.uts.name = test-centos # Network configuration lxc.net.0.type = veth lxc.net.0.link = lxcbr0 lxc.net.0.name = eth0 lxc.net.0.flags = up lxc.net.0.hwaddr = 00:16:3e:7e:90:26 lxc.net.0.ipv4.address = 10.0.3.10/24 lxc.net.0.ipv4.gateway = 10.0.0.1 # Auto start lxc.start.auto = 1 lxc.start.delay = 15 |
В LXC контейнере выполните команду nano /etc/sysconfig/network-scripts/ifcfg-eth0
Файл должен содержать примерно следующее. Параметры HOSTNAME, IPADDR, NETMASK, GATEWAY, DNS укажите свои
1 2 3 4 5 6 7 8 9 10 11 12 |
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes HOSTNAME=test-centos NM_CONTROLLED=no TYPE=Ethernet MTU= IPADDR=10.0.3.10 NETMASK=255.255.255.0 GATEWAY=10.0.3.1 DNS1=1.1.1.1 DNS2=8.8.8.8 |
либо для автоматической выдачи IP адреса:
1 2 3 4 5 6 7 8 9 |
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes HOSTNAME=test-centos NM_CONTROLLED=no TYPE=Ethernet MTU= DNS1=1.1.1.1 DNS2=8.8.8.8 |
Установка PHP 7.1
1 2 3 |
yum install php71 php71-php-cli php71-php-common php71-php-fpm php71-php-gd php71-php-intl php71-php-json php71-php-mbstring php71-php-mcrypt php71-php-mysqlnd php71-php-pdo php71-php-pear php71-php-pecl-zip php71-php-process php71-php-soap php71-php-xml php71-runtime -y ln -s /usr/bin/php71 /usr/bin/php ln -s /usr/bin/php71-cgi /usr/bin/php-cgi |
Установите Composer:
1 2 3 4 5 6 7 8 |
cd /tmp php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" mv composer.phar /usr/bin/composer |
Установка NGINX
Выполните команду
1 2 3 |
yum install nginx -y systemctl enable nginx systemctl start nginx |
Настройка NGINX
Создайте файл
nano /etc/nginx/conf.d/app.conf
Со следующим содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
server { listen 80 default_server; server_name_in_redirect off; root /var/www/html; index index.php index.html; autoindex off; location /.well-known { root /var/www/html; allow all; break; } location ~ /\.svn.* { deny all; } location ~ /\.hg.* { deny all; } location ~ /\.ht.* { deny all; } location ~ /\.git.* { deny all; } location ~ /\.composer.* { deny all; } location ~ \.sql$ { deny all; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9071; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; break; } location ~* ^.+\.(css|js|jpg|jpeg|png|bmp|ico|svg)$ { expires max; } } |
Настройка PHP-FPM
Создайте файл
nano /etc/init.d/php71-fpm
Со следующим содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/bin/bash # ### BEGIN INIT INFO # Provides: php71-fpm # Required-Start: $local_fs $network $syslog $remote_fs # Required-Stop: $local_fs $network $syslog $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start up the php-fpm server daemon # Description: PHP-FPM 7.1 ### END INIT INFO #groupadd -g 502 -r www #useradd -g 502 -u 502 -r -s /sbin/nologin -M www RETVAL=0 BASEPATH="/opt/remi/php71/root" start_cmd(){ ${BASEPATH}/usr/sbin/php-fpm -D echo "Started" } stop_cmd(){ pidfile="/var/opt/remi/php71/run/php-fpm/php-fpm.pid" sleep 1 if [ -f $pidfile ]; then cat $pidfile | xargs kill rm $pidfile > /dev/null 2>&1 echo "Stoped. " else echo "Fail stop. " fi return 1 #killall php-fpm } case "$1" in start) start_cmd ;; stop) stop_cmd ;; restart) stop_cmd sleep 2 start_cmd ;; *) echo "Usage: service php71-fpm {start|stop|restart}" RETVAL=1 esac exit $RETVAL |
Установите права на выполнение для этого файла
chmod +x /etc/init.d/php71-fpm
Создайте пользователей www
1 2 |
groupadd -r --gid 1000 www useradd -r -m --uid 1000 -g www www |
Отредактируйте файл /etc/opt/remi/php71/php-fpm.d/www.conf
Поменяйте строчки:
1 2 3 |
user = www group = www listen = 127.0.0.1:9071 |
Установка NodeJS
Установите репозиторий NodeJS
1 2 |
curl -sL https://rpm.nodesource.com/setup_10.x | bash - |
Выполните команды:
1 2 |
yum install gcc-c++ make nodejs |
Установите глобально пакеты NodeJS
1 2 |
npm install --global gulp npm install --global bower |