HHVM (HipHop Virtual Machine) je virtuální stroj s otevřeným zdrojovým kódem pro spouštění programů napsaných v jazyce PHP a Hack. HHVM byl vyvinut společností Facebook, poskytuje většinu funkcí aktuální verze PHP 7. Chcete-li na svém serveru spustit HHVM, můžete použít FastCGI k propojení HHVM s webovým serverem Nginx nebo Apache, nebo můžete použít webový server zabudovaný do HHVM s názvem "Proxygen".
V tomto tutoriálu vám ukážu, jak nainstalovat WordPress s HHVM a Nginx jako webový server. Jako operační systém budu používat CentOS 7, takže je nutná základní znalost CentOS.
Předpoklad
- CentOS 7 – 64bit
- Oprávnění uživatele root
Krok 1 – Konfigurace SELinuxu a přidání úložiště Epel
V tomto tutoriálu budeme používat SELinux v režimu vynucení, takže potřebujeme nástroje pro správu SELinux nainstalované v systému. Ke správě zásad SELinuxu použijeme nástroje setools a setrobleshoot.
Ve výchozím nastavení je SELinux povolen na CentOS 7, můžeme to zkontrolovat příkazem níže:
sestatus
getenforce
Můžete vidět, že SELinux je povolen s režimem vynucení.
Dále nainstalujte setools a odstraňte problémy pomocí příkazu yum.
yum -y install setroubleshoot setools net-tools
Po dokončení instalace můžete nainstalovat úložiště EPEL.
yum -y install epel-release
Krok 2 – Instalace Nginx
Nginx nebo engine-x je lehký webový server s vysokým výkonem a nízkou spotřebou paměti. Na CentOS můžeme použít yum k instalaci balíčků Nginx. Ujistěte se, že jste přihlášeni jako uživatel root!
Nainstalujte nginx pomocí tohoto příkazu yum z úložiště CentOS:
yum -y install nginx
Nyní spusťte Nginx a povolte jeho spuštění při spouštění pomocí příkazu systemctl:
systemctl start nginx
systemctl enable nginx
Abyste zajistili, že Nginx běží na našem serveru, navštivte ve svém prohlížeči IP adresu serveru nebo použijte příkaz curl, jak je uvedeno níže, abyste získali výsledky:
curl 192.168.1.110
Zjistím to pomocí webového prohlížeče zde:
Krok 3 – Instalace a konfigurace MariaDB
MariaDB je open source databáze vyvinutá původním vývojářem MySQL Montym Wideniusem, byla vytvořena z databáze MySQL, ale zůstává s ní kompatibilní ve svých hlavních funkcích. V tomto kroku nainstalujeme MariaDB a nakonfigurujeme heslo root pro databázi MariaDB. Poté vytvoříme novou databázi a nového uživatele, které jsou vyžadovány pro naši instalaci WordPressu.
Nainstalujte mariadb a mariadb-server:
yum -y install mariadb mariadb-server
Spusťte MariaDB a přidejte službu, která se má automaticky spouštět při spouštění:
systemctl start mariadb
systemctl enable mariadb
MariaDB byla spuštěna a nyní musíme nakonfigurovat heslo uživatele root pro databázi mariadb/mysql. Zadejte příkaz níže a nastavte heslo root MariaDB.
mysql_secure_installation
Na požádání zadejte své nové heslo pro uživatele root MariaDB.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
... Success!
Kořenové heslo MariaDB bylo nakonfigurováno. Nyní se přihlaste do prostředí MariaDB/MySQL a vytvořte novou databázi "wordpressdb" a nový uživatel "wpuser" s heslem "[e-mail chráněn]" pro naši instalaci WordPressu. Zvolte si pro svou instalaci bezpečné heslo!
Přihlaste se do prostředí MariaDB/MySQL:
mysql -u root -p
TYPE YOUR PASSWORD
Vytvořte novou databázi a nového uživatele:
create database wordpressdb;
create user [email protected] identified by '[email protected]';
grant all privileges on wordpressdb.* to [email protected] identified by '[email protected]';
flush privileges;
\q
MariaDB byla nainstalována a byla vytvořena nová databáze pro naši instalaci WordPress.
Krok 4 – Instalace HHVM
Pro instalaci HHVM musíme nainstalovat mnoho závislostí. HHVM můžeme nainstalovat ze zdroje stažením zdroje z githubu nebo instalací předem sestavených balíčků, které jsou dostupné na internetu. V tomto tutoriálu nainstaluji HHVM z předem sestavených balíčků.
Nainstalujte závislosti pro instalaci HHVM
yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
{ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
mariadb mariadb-server libc-client make
Poté nainstalujte předem sestavené balíčky HHVM z tohoto webu pomocí příkazu rpm.
rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm
ln -s /usr/local/bin/hhvm /bin/hhvm
HHVM byl nainstalován, zkontrolujte jej pomocí příkazu níže:
hhvm --version
Aby bylo možné použít příkaz php, můžeme příkaz hhvm nastavit jako php. Takže když napíšete 'php' do shellu, uvidíte stejný výsledek jako z příkazu hhvm.
sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
php --version
Krok 5 – Konfigurace HHVM
V tomto kroku nakonfigurujeme HHVM. Budeme provozovat hhvm jako systemd službu. Místo toho, abychom ho spouštěli na systémovém portu, spustíme hhvm na souboru soketu unix, který je rychlejší.
Přejděte do adresáře systemd a vytvořte soubor hhvm.service.
cd /etc/systemd/system/
vim hhvm.service
Do tohoto souboru vložte níže uvedenou konfiguraci služby.
[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
After=network.target nginx.service mariadb.service
[Service]
ExecStart=/usr/local/bin/hhvm --config /etc/hhvm/server.ini --user nginx --mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock
[Install]
WantedBy=multi-user.target
Uložte soubor a ukončete vim.
Dále přejděte do adresáře hhvm a upravte soubor server.ini.
cd /etc/hhvm/
vim server.ini
Nahraďte hhvm.server.port na řádku 7 konfigurací soketu unix níže:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
Uložte soubor a ukončete editor.
V souboru služby hhvm jsme definovali, že hhvm běží pod uživatelem 'nginx', takže musíme změnit vlastníka adresáře souboru soketu na uživatele 'nginx'. Potom musíme změnit kontext SELinux v adresáři hhvm, abychom umožnili přístup k souboru soketu.
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
Po restartování serveru hhvm nepoběží, protože neexistuje žádný adresář pro soubor soketu, takže jej musíme vytvořit automaticky při spouštění.
Upravte soubor rc.local pomocí vim.
vim /etc/rc.local
Vložte konfiguraci níže na konec řádku.
mkdir -p /var/run/hhvm/
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm
Uložte soubor a ukončete vim. Nastavte soubor jako spustitelný.
chmod +x /etc/rc.local
Znovu načtěte službu systemd, spusťte hhvm a přidejte ji, aby se spustila při spouštění.
systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm
Ujistěte se, že nedošlo k žádné chybě. Zkontrolujte, zda hhvm běží pod souborem soketu pomocí příkazu netstat.
netstat -pl | grep hhvm
Krok 6 – Konfigurace HHVM a Nginx
V tomto kroku nakonfigurujeme HHVM tak, aby běžel s webovým serverem Nginx. Potřebujeme vytvořit nový konfigurační soubor hhvm v adresáři Nginx.
Přejděte do adresáře /etc/nginx a vytvořte soubor hhvm.conf.
cd /etc/nginx/
vim hhvm.conf
Vložte konfiguraci níže:
location ~ \.(hh|php)$ {
root /usr/share/nginx/html;
fastcgi_keep_conn on;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Uložte a ukončete.
Dále upravte soubor nginx.conf a přidejte řádek konfigurace hhvm.
vim nginx.conf
Přidejte konfiguraci do řádku direktivy serveru 57.
include /etc/nginx/hhvm.conf;
Uložte a ukončete.
Poté změňte kontext SELinux v konfiguračním souboru hhvm.
semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf
restorecon -v /etc/nginx/hhvm.conf
Otestujte konfiguraci Nginx a restartujte službu.
nginx -t
systemctl restart nginx
Ujistěte se, že nedošlo k chybě.
Krok 7 – Vytvoření virtuálního hostitele pomocí HHVM a Nginx
V tomto kroku vytvoříme novou konfiguraci virtuálního hostitele pomocí Nginx a hhvm. Budu používat název domény "natsume.co" pro tento příklad. Použijte prosím svůj vlastní název domény a nahraďte jej v konfiguračních souborech a instalaci WordPress, kdekoli se objeví.
Přejděte do adresáře nginx conf.d, kde budeme ukládat soubor virtuálního hostitele:
cd /etc/nginx/conf.d/
Vytvořte novou konfiguraci "natsume.conf" pomocí vim:
vim natsume.conf
Vložte konfiguraci virtuálního hostitele níže:
server { listen 80; server_name natsume.co; # note that these lines are originally from the "location /" block root /var/www/hakase; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; location = /50x.html { root /var/www/hakase; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Uložte a ukončete.
V naší konfiguraci virtuálního hostitele jsme definovali webový kořenový adresář pro název domény jako adresář „/var/www/hakase“. Tento adresář ještě neexistuje, takže jej musíme vytvořit a změnit vlastnictví na uživatele a skupinu nginx.
mkdir -p /var/www/hakase
chown -R nginx:nginx /var/www/hakase
Dále nakonfigurujte kontext SELinux pro soubor a adresář.
semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
restorecon -Rv /etc/nginx/conf.d
Nakonec otestujte konfiguraci nginx, abyste se ujistili, že nedochází k chybě, a poté restartujte nginx:
nginx -t
systemctl restart nginx
Krok 8 – Instalace WordPress
V kroku 5 jsme vytvořili konfiguraci virtuálního hostitele pro naši instalaci WordPress. Nyní si musíme stáhnout WordPress a upravit konfiguraci databáze pomocí databáze a uživatele, které jsme vytvořili v kroku 3.
Přejděte do kořenového adresáře webu „/var/www/hakase“ a stáhněte si WordPress pomocí příkazu wget:
cd /var/www/hakase
wget wordpress.org/latest.tar.gz
Extrahujte „latest.tar.gz“ a přesuňte všechny soubory a adresáře WordPress do aktuálního adresáře:
tar -xzvf latest.tar.gz
mv wordpress/* .
Dále zkopírujte soubor „wp-config-sample.php“ do „wp-config.php“ a upravte jej pomocí vim:
cp wp-config-sample.php wp-config.php
vim wp-config.php
Nastavte DB_NAME na "wordpressdb" , DB_USER na "wpuser" a DB_PASSWORD na „[e-mail chráněn]“ .
define('DB_NAME', 'wordpressdb'); define('DB_USER', 'wpuser'); define('DB_PASSWORD', '[email protected]'); define('DB_HOST', 'localhost');
Uložte a ukončete.
Změňte kontext SELinux pro adresář WordPress.
semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"
restorecon -Rv /var/www/hakase
Nyní otevřete webový prohlížeč a do adresního řádku zadejte název vaší domény wordpress, moje je „natsume.co“.
Vyberte anglický jazyk a klikněte na 'Pokračovat '.
Vyplňte název a popis webu svými údaji a klikněte na „Instalovat Wordpress“.
Počkejte na dokončení instalace. Zobrazí se stránka níže, kliknutím na „Přihlásit se“ se přihlaste do administračního panelu WordPress:
Zadejte své administrátorské uživatelské jméno a heslo a poté znovu klikněte na „Přihlásit se“.
Nyní jste na hlavním panelu správce WordPress.
Domovská stránka Wordpressu.
Wordpress s Nginx a HHVM na CentOS 7 byl úspěšně nainstalován.