Меню Рубрики

Установка lamp linux red hat

How to set up a LAMP stack on Red Hat Enterprise Linux 7

You have been asked to create a LAMP stack, whether you’re thinking “Lamp stack, as in lights and bulbs” or “Ok let’s build a web server” this gu >

First for those that do not know a LAMP stack, also known simply as LAMP, is an acronym for a Linux/UNIX server with Apache as the server engine, MySQL/MariaDB as the database engine and PHP as the primary server-side script language.

These steps are based on RHEL 7.2/7.3 but should work for all versions of RHEL with minimal changes.

Just a couple things that you will need to be ready:

  • A decent Internet connection.
  • A non-production server to use with this guide.
    • This guide assumes that the server was installed with minimal options and is properly registered with a Red Hat subscription.
  • Access to the server that allows you Sudo (admin) access.

Depending on your organizational needs your server may have a graphical user interface (GUI) or you may simply have terminal access. With either option, it is suggested that you go through this guide first on a non-production server in case you need to go through it a couple times.

If you have a GUI, go to the “Applications” menu, then within the “Utilities” sub-menu find the “Terminal” application and open it.

Within Terminal (whether in the GUI or through SSH) follow these steps, to make things easier you can copy and paste the commands into the Terminal window.

With the yum commands below, this guide does not automatically install any piece of the LAMP stack. After you understand what you are doing, you can use the “-y” command to automatically install.

LAMP Installation Steps

  1. Check Red Hat registration, the script below will help with that.
    If you are properly registered, you will receive a message “Properly Registered” otherwise you will receive prompts to type in the Red Hat username and password along with the hostname of the server.
  • Update System first.
  • Install useful applications
  • Install LAMP components.
  • Enable Services to have them load at startup.
  • Open Firewall for HTTP and HTTPS.
  • Create simple PHP Info page to verify PHP is working in Apache.
    The main purpose of this file is to make sure that PHP is working in Apache but it is also a good file to review for each project to make sure you have all needed PHP modules/extensions installed.

    Add PHP configuration into Apache.
    This is a needed step in order to have PHP handled properly in Apache.

    Secure MariaDB/MySQL.
    This is a needed step to protect your MariaDB/MySQL server. This command will first start the service then ask a series of questions, based on the needs of the project the answers will vary.

    This is what you will see

    At this point, tap enter/return, as you shouldn’t have a root password at this point

    At this point, type Y (case can be lower or upper) and tap enter/return

    You will need to type in a password then confirm the password. NOTE: This is your “god” password over all of your MariaDB system so it should be a difficult to guess password

    In most cases, you want to remove unauthenticated users so type Y (case can be lower or upper) and tap enter/return

    In most cases you want to remove remote “god” root access so type Y (case can be lower or upper) and tap enter/return

    If this is a development box to start learning how to do things with MariaDB/MySQL you could say no to this but in most cases type Y (case can be lower or upper) and tap enter/return

    In most cases type Y (case can be lower or upper) and tap enter/return

    You are now done and will see something like this

    At this point, you should have a working HTTP LAMP stack but it will only run one website.

    Develop using Red Hat’s most valuable products

    Your membership unlocks Red Hat products and technical training on enterprise cloud application development.

    Multi-Site Installation Steps

    Very few LAMP stacks are set up specifically to run only one website. The steps below will help you get your server serving multiple websites, again with little effort on your part.

      For multi-site to work we need to change SELinux to run in permissive mode.
      NOTE: Check with your company’s IT security, some companies may have a problem with this where others may have no problem with it.Running the below script will change the setting for you and then restart the server.

    Create a file “websites.csv”, within this file we will define the additional sites for the server.

    This websites.csv file has some logic tied to it in that if you do not define the HTTPS_Port, SSLCertificateFile, and SSLCertificateKeyFile your site will simply be HTTP and not a secure site (HTTPS)

    This script below will create the header of the CSV for you and then load the file in the nano text editor.

    Type in the values remembering to add a comma as the delimiter (make sure not to add spacing).

    When you are done hold down the Control/Ctrl key and type the X key to close the file, the system will ask you if you want to save, type Y for yes or type N for no then tap the Enter/Return key.

    Here is an example of what the final file could look like

  • SSL CertificatesWhere you put your SSL certificate files may differ than this guide. The guide will focus on the location of the files as /etc/httpd/sslMake sure you have the crt and key files both in the /etc/httpd/ssl directory (or the directory you choose).
  • Set some basic variables for the following steps
  • OPTIONAL – Remove GUI Desktop
  • Create Web Developer Group
    In the situation that you have multiple web developers a web developer group is helpful.

    Читайте также:  Установка ксенона на жигули
  • Configure Apache to handle multiple sites
  • Let the CSV define the additional sites
  • Reassign permissions to the /var/www/ directory to allow the webdev group read and write access
  • Test Configuration
  • Restart Apache Service
  • Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets, books, and product downloads.


    Setting up a LAMP stack on Red Hat Enterprise Linux

    You obviously know what a LAMP stack is if you’ve managed to find your way here, but for those who may be unsure, the key is in the name (L)inux (A)pache (M)ariaDB (P)HP—a term that has become synonymous around the globe for building a basic web server with database and PHP functionality. There are a myriad of web applications, ranging from WordPress to Joomla to Magento that all use this setup, and if you know how to get it up and running, then you’re off to a great start. It couldn’t be easier with RHEL, so let’s get started. MariaDB can also be exchanged for MySQL or a database of your choice.

    Our Objectives

    • Set up a Red Hat Enterprise Linux (RHEL) 7.2 virtual machine
    • Install required applications (Apache, MariaDB, PHP)
    • Configure an initial virtual host in Apache
    • Configure MySQL and create a database for testing
    • Demonstrate PHP working with a test page, which also pulls data from our test database

    Everything you need to grow your career.

    With your free Red Hat Developer program membership, unlock our library of cheat sheets and ebooks on next-generation application development.

    Installing RHEL on a VM

    To get started, I’m firing up a virtual machine with the following specifications:

    • 1GB RAM
    • 16GB virtual hard drive space
    • 1 vCPU

    Now it’s time to power up our VM and let it boot from the RHEL ISO. Once you’ve booted into the setup GUI, you’ll be asked some basic questions. In my case, I simply selected my time zone and specified my network settings. I would suggest leaving everything else at default for simplicity.

    Once RHEL has successfully installed, you can reboot into your new installation. As we have left the default of “minimal install” selected, we’ll need to manually register the system to the Red Hat network and attach it to a subscription to allow it to receive updates and packages. Simply log in and run subscription-manager register –auto-attach and you will be prompted to enter your username and password.

    Installing required applications

    Great! Before getting started, I would first recommend you run yum –y update to grab any recent security updates and reboot.

    Now we’re ready to install Apache, MariaDB and PHP. Simply run:

    Then wait for yum (Yellowdog Updater, Modified) to do its thing. After yum has finished, we want to make sure that our newly installed applications are set to start at boot. To do this, we run:

    This will get them all up and running for the first time.

    Configure Virtual Host in Apache

    This step isn’t strictly necessary if you’re only wanting to run one application on your server, but I always try to get a virtual host configured as it keeps things tidy and allows for easy expansion for hosting other websites on your LAMP server in the future if you feel like doing so.

    So let’s go ahead and create a new virtual host—but first, let’s create a directory for this virtual host to serve files from. And whilst we’re at it, we might as well add a ‘phpinfo’ file there to validate our PHP configuration.

    Creating the virtual host is easy. Let’s create a new file named /etc/httpd/conf.d/test-site.conf and add the following to it:

    If you’re following this guide exactly, then you’ll need to add a host entry on your local computer to make sure it knows where ‘test-site.example.com’ exists. Simply take the IP address of the server you’re configuring your LAMP stack on and insert it into your host’s file (where x.x.x.x is the server IP):

    Now you’re ready to browse to your new LAMP server—but wait, your page load times out and can’t connect. You need to allow the web traffic through the firewall with the following command:

    If everything goes to plan, you should now see a phpinfo screen confirming that Apache and PHP are set up and working together.

    Configure MySQL and create database for testing

    Although MariaDB is now up and running, it’s worth running /usr/bin/mysql_secure_installation to secure MariaDB further. You should do the following when prompted:

    • Set the root password for access to MariaDB
    • Remove anonymous users
    • Disallow root login remotely (unless you want to be able to connect to it remotely, of course)
    • Remove test database and access to it
    • Reload privilege tables

    Great! Now we want to go ahead and make sure that a PHP application running on our LAMP server can access a database in MariaDB and see tables. Firstly, we’ll need to create a database for testing and create some tables. To do this, we need to first connect to MariaDB with our root username and password. I have included a screenshot of this below to show you what sort of output to expect. Upon logging in with ‘mysql –uroot –p’ you’ll need to run the following commands:

    Читайте также:  Установка автозапуска на мерседес w124

    In the above example, we’re creating a database, creating three example tables within this database, and creating a user with limited access to this database. We don’t want to use our root user MariaDB credentials for any interaction between our web application and the database, as this is insecure.

    Now that we’ve got our database and tables set up, let’s delete our old index.php file and recreate it with the following PHP code. If you’ve been following this guide exactly, then you’ll be good to go with the existing ‘dbname’, ‘dbuser’, ‘dbpass’ and ‘dbhost’ variables as set below. But If not, then you’ll simply need to change these to match your chosen credentials and database name.

    If everything has gone to plan, then the next time you browse to your server you should see the following:

    Final Thoughts

    So there you have it. Setting up RHEL to serve your PHP application with a database backend couldn’t be easier! Adding additional sites to your Apache configuration is easy and can be done by simply adding additional VirtualHost config files in the manner shown on page 2. You can go more in-depth by adding additional configuration parameters to each virtual host. For instance, you may wish for ‘test-site.example.com’ to show a directory index but wish to prevent ‘test-site2.example.com’ from exhibiting this same behaviour.

    About Keith Rogers

    Keith Rogers is an IT professional with over 10 years’ experience in modern development practices. Has built full development stacks. Currently he works for broadcasting organization in the DevOps space with a focus on automation. In his spare time he tinkers with modern development tools, and a technical contributes Fixate IO.

    Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets, books, and product downloads.

    Take advantage of your Red Hat Developers membership and download Red Hat Enterprise Linux today at no cost.


    Установка любого клона Red Hat Enterprise Linux не используя стандартный инсталлятор

    Устанавливать современную Linux систему нужно только один раз, как для единственного физического сервера, так и развертывания целой виртуальной фермы. Почему бы не потратить на это чуточку больше времени и сразу сделать все именно так как нужно, а не допиливать то что приехало из инсталлятора по его рельсам. К тому-же, количество софта которое ставится в «минимальном» режиме стандартного установщика, не соответствует действительно минимальному.
    Кому-то ручная установка может показаться тратой времени, но каждый линуксоид обязан это сделать хотябы раз, чтоб лучше понимать как это работает. Eсли Вас не пугают слова fdisk, grub и chroot, читаем далее.

    Установку операционной системы можно условно разделить на 4 отдельных этапа.

    1. Подготовка системного хранилища
    2. Установка и настройка системных компонентов
    3. Подготовка системы к самостоятельной загрузке
    4. Наладка системы под рабочие задачи

    В большинстве современных систем задачи 1-3 выполняются программами-установщиками. В полуавтоматизированных установщиках пункты 1-3 проводятся в режиме вопрос-ответ. В большинстве автоматизированных — аналогично, просто есть возможность указать заранее подготовленный файл ответов.

    Написание установщика задача не из тривиальных. Это всегда знали ребята из проекта Gentoo, в котором его и небыло никогда, а в Arch Linux комьюнити, совсем недавно решили отказаться от поддержки установщика в пользу более насущных задач. Это поняли даже в Microsoft — второй этап в установщике Windows начиная с Vista сводится к накатыванию уже заранее собранного образа. В прочем, мы не про окна, это тема другой статьи.

    Проводя установку ОС вручную, мы имеем полную свободу действий на всех этапах. Данная статья естественно не является единственно правильной инструкцией, это сценарий установки «сферического сервера в вакууме». Конкретные задачи и условия могут значительно повлиять на любой из шагов. В качестве примера будем ставить Oracle Enterprise Linux 6 на виртуальную машину под управлением Microsoft Hyper-V. Не самое свободное сочетание конечно, но суть не в этом. Кстати, такой способ установки не требует регистрации в Oracle. А пуристам и адептам товарища Столлмана предлагаю использовать KVM и ставить CentOS или Scientific, которые являются почти 1:1 клонами RHEL так что разницы в установке для них практически нет. Уникальных нюансов и у OEL не много. Помимо своего kernel-uek Oracle Linux предлагает и ядро своего Джанго Фетта, в котором есть паравиртуальные дрова для Hyper-V девайсов и PnP проброс дисков.

    Для установки в принципе годится любой линукс или LiveCD, rpm и yum доступны для многих платформ. Но так как у нас будет RHEL, удобнее всего использовать свежий LiveCD RHEL-подобного дистра той же мажорной версии. На нём точно будет rpm и yum совместимых версий, что значительно облегчает задачу. Я выбрал CentOS LiveCD, который можно скачать с ближайшего зеркала.

    1. Подготовка системного хранилища

    В данном примере системным хранилищем будет служить виртуальный диск в 10 Gb подключенный к ВМке. Всё пространство, кроме небольшого раздела для загрузчика, отдадим под управление LVM, который считаю наиболее стабильной системой управления томами на платформе Linux

    Загружаемся с нашего LiveCD и залезаем в терминал. Если планируем работать с самой виртуалки, удобно использовать графический режим загрузки LiveCD. Там даже есть Firefox, конечно же не самый свежий.
    Но если мы уже настроились на минимализм, ну или у машины не много оперативки, грузимся в текстовый режим, который можно выбрать в загрузчике. Поднимаем ssh сервер для возможности работы в терминале со своей машины. Для доступа потребуется поменять пароль рута и отключить или настроить файрвол.

    $ sudo su
    # service sshd start
    # passwd root
    # service iptables stop

    Разбиваем наш диск с помощью fdisk, (parted, Red Hat Disk utility, hex редактор, кому как нравится 🙂 на нужные разделы. Лично мне по душе проверенный временем fdisk. RHEL консервативная система, fdisk по умолчанию работает в режиме совместимости с ДОиСторическим наследием так что запускаем его со спец флажками.

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    Partition number (1-4): 1
    First sector (2048-20971519, default 2048):
    Using default value 2048
    Last sector, +sectors or +size (2048-20971519, default 20971519): +500M

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    Partition number (1-4): 2
    First sector (1026048-20971519, default 1026048):
    Using default value 1026048
    Last sector, +sectors or +size (1026048-20971519, default 20971519):
    Using default value 20971519

    Command (m for help): t
    Partition number (1-4): 2
    Hex code (type L to list): 8e

    Cоздаем файловую систему для /boot. Существует множество fs, с которых умеет грузиться стандартный для армии RHEL-клонов GRUB. Хватит даже старушки ext2, журнал на загрузочном разделе не особо нужен — запись в него происходит только при установке новых ядер и изменению конфигурации загрузчика. Я выбрал ext4. Дополнительно укажем label для новой fs, который потом можно будет использовать в mount и fstab.

    # pvcreate /dev/sda2
    # vgcreate system /dev/sda2

    В созданной группе выделяем корневой раздел в 4G. Этого более чем достаточно для минимальной системы, 1G отдадим под swap, который вместе с новыми разделами примонтируем к Live системе. Остальное место дает свободу создания дополнительных фс для /opt или /var, а так же можно оставить запас, что позволит использовать снепшоты LVM

    # lvcreate -n root -L 4G system
    # mkfs.ext4 /dev/system/root
    # e2label root !$
    # lvcreate -n swap –L 1G system
    # mkswap -f /dev/system/swap
    # swapon !$
    # mkdir -p /mnt/system/boot
    # mount LABEL=root /mnt/system
    # mount LABEL=boot /mnt/system/boot

    2. Установка и настройка системных компонентов

    Информация обо всех установленных rpm пакетах хранится в специальной бд. Как для rpm так и для yum можно указать альтернативную корневую фс, что дает нам возможность установить RHEL в любую директорию минимальным количеством команд. RPMDB — позвоночник RHEL, создадим его для новой системы.

    В качестве источников установочных пакетов для yum служат пакетные репозитории, ссылки на которые лежат в конфигах /etc/yum.repos.d/. Таким при наличии связи может быть любой публичный репозиторий доступный через интернет, свой, примонтированный с сетевого хранилища, или, если вам доступны образы установочных дисков, можно использовать их. Вот так:

    # yum install createrepo
    # mkdir -p /mnt/iso/<1,2,3>
    # mount -o loop /mnt/nas/install/oel-6.4-cd<1,2,3>.iso /mnt/iso/<1,2,3>
    # createrepo /mnt/iso

    Если мы хотим установить CentOS, достаточно в существущих .repo файлах явно указать $releasever. Эти переменные берутся из пакета релиза дистрибутива, которого в новой системе еще нет, поэтому придётся немного по-sed-еть

    Мне нужен OEL, так что yum будет настроен на публичный репозиторий корпорации Oracle

    Можно приступать к установке системы. Начнем с совсем «зачаточного» набора пакетов: пакет релиза, glibc, bash и их зависимостей:

    # yum —installroot=/mnt/system install oraclelinux-release glibc bash

    Такая система уже готова к запуску в качестве chroot из любого Linux. Но у нас другие планы, поэтому ставим туда rpm и yum со всеми зависимостями:

    # yum —installroot=/mnt/system install rpm yum

    Остальные пакеты будем устанавливать уже в новой системе. Скопируем настройки dns, репозиториев yum. Забиндим виртуальные фс нашей Live среды на аналогичные пути системы и войдем в нее.

    # cd /mnt/system
    # cp /etc/resolv.conf ./etc/
    # cp /etc/yum.repos.d/*.repo ./etc/yum.repos.d/

    # mount -o bind /dev ./dev
    # mount -o bind /sys ./sys
    # mount -o bind /proc ./proc

    Первое что видим — стандартное приглашение баша. Для приведения к обычному виду RHEL копируем настройки bash из /etc/skel.

    bash-4.1# cp /etc/skel/.bash* /root/
    bash-4.1# source /root/.bashrc

    Поставим немного базового софта:

    • dhclient, среди зависимостей которого (помимо логотипов ОС в OEL:) есть так же udev, система инициализации и даже файрволл, что целым махом приблизит нашу систему к самостоятельности
    • планировщик cronie, который тянет с собой postfix в качестве MTA и логгер rsyslog
    • less, which, passwd, nc, telnet, which, man
    • любимый шелл, редактор, другой софт на свое усмотрение

    набор софта в базовых репозиториях RHEL весьма ограничен, но к счастью есть EPEL, который призван решить эту проблему:

    Так как мы используем LVM, в любой момент установки (например сейчас) можем сделать снепшот нашей фс — который будет блочным слепком базового RHEL, или stage3 по терминологии Gentoo. Его можно сдампить на другое хранилище. Или создать архив фс снепшота, примонтировав его. На основе такого снепшота с минимальными усилиями можно создать шаблоны для OpenVZ и аналогичных систем. Всё это лучше делать за пределами chroot:

    (livecd) # lvcreate -L1G -s -nstage3 system/root

    (livecd) # xz /dev/system/stage3 > /mnt/nas/templates/OEL6.4-minimal.bin.xz

    (livecd) # mkdir /mnt/stage3
    (livecd) # mount /dev/system/stage3 !$
    (livecd) # cd !$
    (livecd) # tar -zvpf /mnt/nas/templates/OEL6.4-minimal.tar.gz ./

    Подготовим таблицу файловых систем. Для корневой путь надежнее всего указать в виде виртуального девайса LVM, благо потенциальные проблемы с именованием при изменении конфигурации дисковой системы машины он решает «by design».

    # vi /etc/fstab
    LABEL=boot /boot ext4 noauto 1 1
    /dev/mapper/system-root ext4 defaults 1 2

    # vi /etc/sysconfig/network

    # vi /etc/sysconfig/network-scripts/ifcfg-eth0

    useradd -u1337 -m -s /bin/zsh -G wheel morpheus
    # echo «morpheus ALL=(ALL) ALL» >> /etc/sudoers.d/morpheus
    # passwd morpheus

    # ln -sf /usr/share/zoneinfo/Europe/Riga /etc/localtime

    Далее мы впринципе можем уже настраивать машину под рабочую задачу на свое усмотрение но я предпочитаю сначала с нее загрузиться:

    3. Подготовка системы к самостоятельной загрузке

    # mount /boot
    # yum install grub grubby lvm2 kernel

    # cd /etc
    # ln -sf ../boot/grub/grub.conf
    # cd /boot
    # ln -sf grub.conf menu.lst
    # vi grub.conf
    title Linux
    root (hd0,0)
    kernel /vmlinuz-2.6.32-358.6.2.el6.x86_64 ro lvm root=/dev/mapper/system-root LANG=en_US.UTF-8
    initrd /initramfs-2.6.32-358.6.2.el6.x86_64.img

    Перезагружаемся в нашу систему и начинаем 4.Наладку системы под рабочие задачи. Свои.

    Так создаются заточенные шаблоны для серверов. Как универсальные, под растерзание систем автоматизации, так и целевые, готовые к развертке с минимальной конфигурацией.


    Добавить комментарий