Տեղադրեք TYPO3 CMS-ը Nginx-ով AlmaLinux 9-ում


TYPO3-ը Ձեռնարկությունների կարգի բովանդակության կառավարման անվճար և բաց կոդով համակարգ է: Այն ապահովում է ձեռնարկության մակարդակի բազմաթիվ առանձնահատկություններ, ինչպիսիք են մասշտաբային CMS-ը բազմակողմանի աջակցությամբ, բազմալեզու տեղադրումներով, անվտանգության ուժեղ ներդրմամբ, ահավոր արագությամբ և կարող է գործարկվել ցանկացած վայրում:

TYPO3 CMS-ի օգտագործումը թույլ է տալիս ստեղծել ճկուն և հուսալի կայքեր: TYPO3 CMS-ը կենսունակ մասնագիտական համայնք է: Եվ ըստ դիզայնի, TYPO3 CMS-ը խցանվող բովանդակության կառավարման համակարգ է՝ հարմարվող և անջատված ճարտարապետությամբ:

Այս ուղեցույցում ես քայլ առ քայլ ցույց կտամ ձեզ, թե ինչպես տեղադրել TYPO3 CMS-ը AlmaLinux 9-ի վրա: Մենք կտեղադրենք TYPO3 CMS-ը Nginx վեբ սերվերի, MariaDB տվյալների բազայի սերվերի և PHP-FPM-ի հետ:

Նախադրյալներ

Շարունակելուց առաջ համոզվեք, որ ունեք հետևյալը.

  • AlmaLinux 9 սերվեր - Այս օրինակը օգտագործում է սերվեր almalinux9 անունով:
  • Ոչ արմատային օգտատեր՝ sudo root արտոնություններով:
  • Դոմենի անուն, որը մատնանշված է սերվերի IP հասցեին:

Կախվածությունների տեղադրում

Հետևյալ քայլերում դուք կտեղադրեք փաթեթի կախվածությունը TYPO3 CMS-ի համար, ներառյալ՝

  • Nginx: Որպես վեբ սերվեր:
  • MariaDB: Որպես տվյալների բազայի սերվեր:
  • PHP-FPM. Այս օրինակը կօգտագործի PHP 8.1 TYPO3 CMS-ի համար:
  • Կոմպոզիտոր. PHP հավելվածի կախվածության կառավարում:

Հիմա եկեք սկսենք:

Նախ գործարկեք հետևյալ հրամանը՝ ձեր համակարգին EPEL և Remi պահեստները ավելացնելու համար: Remi պահոցը տրամադրում է PHP փաթեթների մի քանի տարբերակներ և որոշ լրացուցիչ PHP ընդլայնումներ, որոնք հասանելի չեն կանխադրված հավելվածների հոսքի պահոցում:

sudo dnf epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Տեղադրումը հաստատելու համար մուտքագրեք y և սեղմեք ENTER:

EPEL պահեստի ավելացում:

RHEL 9-ի համար PHP Remi պահեստի ավելացում:

Այժմ գործարկեք հետևյալ հրամանը՝ PHP պահեստի լռելյայն մոդուլը վերականգնելու և Remi պահոցից PHP 8.1 մոդուլը միացնելու համար:

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

Հաջորդը, գործարկեք ներքևում գտնվող dnf հրամանը՝ TYPO3 CMS-ի համար փաթեթային կախվածությունները տեղադրելու համար: Երբ ձեզ հուշում են, մուտքագրեք y՝ հաստատելու համար, այնուհետև սեղմեք ENTER:

sudo dnf install nginx mariadb-server composer ImageMagick php-fpm php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

Կախվածությունները տեղադրելուց հետո գործարկեք systemctl հրամանը ստորև՝ սկսելու և միացնելու հիմնական ծառայությունները, ինչպիսիք են Nginx, MariaDB և PHP-FPM:

sudo systemctl enable --now nginx mariadb php-fpm

Այնուհետև ստուգեք ծառայությունները՝ օգտագործելով հետևյալ հրամանը՝ համոզվելու, որ այդ բոլոր ծառայություններն աշխատում են:

sudo systemctl status nginx mariadb php-fpm

Եթե ծառայությունն աշխատում է, դուք պետք է տեսնեք ակտիվ (աշխատող) ելքը: Ստորև բերված օրինակը ցույց է տալիս, որ Nginx ծառայությունն աշխատում է:

Ի վերջո, գործարկեք հետևյալ հրամանը՝ համոզվելու, որ Composer-ը տեղադրված է և ստուգեք դրա տարբերակը:

sudo -u nginx composer -V

Այս գրելու պահին Composer v2.5.5 տեղադրված է EPEL պահեստի միջոցով:

Firewall-ի կարգավորում

Փաթեթի կախվածությունները տեղադրելուց հետո հաջորդ քայլը firewalld-ի տեղադրումն է և դրա վերևում բացել ինչպես HTTP, այնպես էլ HTTPS արձանագրությունները:

Գործարկեք ներքևում գտնվող firewall-cmd հրամանը՝ և՛ HTTP, և՛ HTTPS ծառայությունները բացելու համար: Այնուհետև վերաբեռնեք firewall-ը՝ փոփոխությունները կիրառելու համար:

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Այժմ ստուգեք բաց նավահանգիստների և ծառայությունների ցանկը firewalld-ում՝ օգտագործելով հետևյալ հրամանը.

sudo firewall-cmd --list-all

Ծառայությունների բաժնում դուք պետք է տեսնեք, որ և՛ HTTP, և՛ HTTPS միացված են:

MariaDB սերվերի կարգավորում

Հետևյալ բաժնում դուք կապահովեք MariaDB սերվերը և կստեղծեք նոր տվյալների բազա և օգտվող, որը կօգտագործվի TYPO3 CMS-ի տեղադրման համար:

Նախ գործարկեք mariadb-secure-installation հրամանը՝ ձեր MariaDB-ի տեղադրումն ապահովելու համար:

sudo mariadb-secure-installation

Ողջ գործընթացում ձեզ կառաջարկվի MariaDB սերվերի կոնֆիգուրացիաներ: Քայլը հաստատելու համար մուտքագրեք Y:

  • Փոխե՞լ MariaDB արմատային վավերացումը unix_socket-ի: Մուտք n.
  • Կարգավորե՞լ MariaDB արմատային գաղտնաբառը: Մուտքագրեք y, ապա մուտքագրեք նոր գաղտնաբառը և կրկնեք:
  • Անջատե՞լ հեռակա մուտքը արմատային օգտվողի համար: Ինպու յ.
  • Հեռացնե՞լ տվյալների բազայի կանխադրված փորձարկումը: Նորից մուտքագրեք y:
  • Հեռացնե՞լ կանխադրված անանուն օգտվողին: Հաստատելու համար մուտքագրեք y:
  • Վերբեռնե՞լ աղյուսակի արտոնությունները՝ փոփոխությունները կիրառելու համար: Մուտքագրեք y.

Երբ MariaDB-ն ապահովված է, մուտք գործեք MariaDB՝ օգտագործելով ստորև նշված mariadb հրամանը: Երբ ձեզ հուշում են գաղտնաբառը, մուտքագրեք ձեր MariaDB արմատային գաղտնաբառը:

sudo mariadb -u root -p

MariaDB մուտք գործելուց հետո կատարեք հետևյալ հարցումները՝ ստեղծելու նոր տվյալների բազա typo3db, typo3 օգտվող և typo3password գաղտնաբառը:

CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON typo3db.* to typo3@localhost IDENTIFIED BY 'typo3password';
FLUSH PRIVILEGES;

Այնուհետև կատարեք հետևյալ հարցումը՝ ստուգելու MariaDB օգտվողի արտոնությունը typo3 և համոզվելու, որ օգտվողը կարող է մուտք գործել տվյալների բազա typo3db:

SHOW GRANTS FOR typo3@localhost;

Ելքում դուք պետք է, որ MariaDB օգտվողը typo3 կարողանա մուտք գործել տվյալների բազա typo3db:

MariaDB սերվերից դուրս գալու համար մուտքագրեք quit և ավարտեք քայլը:

PHP-FPM-ի կարգավորում

MariaDB սերվերի կազմաձևման դեպքում հաջորդ քայլը PHP-FPM տեղադրման կարգավորումն է: Դուք կինտեգրեք PHP-FPM տեղադրումը Nginx վեբ սերվերի հետ:

Նախ, գործարկեք հետևյալ հրամանը՝ ձեր համակարգի լռելյայն ժամային գոտին կարգավորելու համար:

sudo timedatectl set-timezone Europe/Stockholm

Այժմ բացեք PHP կոնֆիգուրացիան /etc/php.ini՝ օգտագործելով vim editor հրամանը:

sudo vim /etc/php.ini

Մեկնաբանեք date.timezone պարամետրը և փոխեք արժեքը համապատասխան ժամային գոտիով:

date.timezone = Europe/Stockholm

Բարձրացրեք և միացրեք PHP-ի նման որոշ պարամետրեր: memory_limit պարամետրի համար հարմարեցրեք այն ձեր ընթացիկ հիշողության հետ:

memory_limit = 512M
max_execution_time = 300
max_input_vars = 2000

Այժմ ավելացրեք post_max_size և upload_max_filesize պարամետրերը մինչև 30MB:

post_max_size = 30M
upload_max_filesize = 30M

Պահպանեք ֆայլը և ավարտին հասցրեք խմբագրիչը:

Հաջորդը, բացեք PHP-FPM լողավազանի կոնֆիգուրացիան /etc/php-fpm.d/www.conf՝ օգտագործելով vim խմբագրիչը:

sudo vim /etc/php-fpm.d/www.conf

Օգտագործողի և խմբի պարամետրի լռելյայն արժեքը փոխեք nginx-ի այսպես.

user = nginx
group = nginx

Պահպանեք ֆայլը և դուրս եկեք խմբագրիչից:

Այժմ գործարկեք հետևյալ հրամանը՝ PHP-FPM ծառայությունը վերագործարկելու և փոփոխությունները կիրառելու համար։ Այնուհետև ստուգեք PHP-FPM-ը՝ համոզվելու, որ այն աշխատում է:

sudo systemctl restart php-fpm
sudo systemctl status php-fpm

Եթե աշխատում է, դուք պետք է ստանաք այսպիսի արդյունք.

Ավելին, դուք կարող եք նաև ստուգել PHP-FPM-ը՝ ստուգելով PHP-FPM-ի լռելյայն վարդակից ֆայլը, որը /run/php-fpm/www.sock է: Գործարկեք ստորև բերված ss հրամանը, որպեսզի ստանաք ձեր համակարգի հասանելի վարդակների ցանկը և զտեք ելքը՝ ցուցադրելու համար միայն www.sock:

ss -pl | grep www.sock

Եթե PHP-FPM-ն աշխատում է, դուք պետք է տեսնեք, որ լռելյայն PHP-FPM վարդակից ֆայլը /run/php-fpm/www.sock հասանելի է այսպես.

Ներբեռնվում է TYPO3 CMS

TYPO3 CMS-ը կարող է տեղադրվել բազմաթիվ եղանակներով, և այս ցուցադրության համար դուք կտեղադրեք TYPO3 CMS-ը Composer փաթեթի կառավարչի միջոցով:

Գործարկեք հետևյալ հրամանը՝ նոր գրացուցակ ստեղծելու համար /var/www/typo3: Սա կօգտագործվի որպես թիրախային գրացուցակ TYPO3 CMS-ի տեղադրման համար

mkdir -p /var/www/typo3

Այնուհետև գործարկեք ստորև հրամանը՝ գրացուցակի /var/www/typo3 սեփականությունը nginx օգտվողին փոխելու և այդ գրացուցակի սեփականատիրոջ համար կարդալու և գրելու հասանելիությունն ապահովելու համար:

sudo chown -R nginx:nginx /var/www/typo3
sudo chmod u+rw /var/www/typo3

Այժմ անցեք /var/www/typo3 գրացուցակ և գործարկեք ներքևում գտնվող Composer հրամանը՝ TYPO3 CMS աղբյուրը ներբեռնելու համար:

cd /var/www/typo3
sudo -u nginx composer create-project typo3/cms-base-distribution:^12 .

Երբ տեղադրումն աշխատում է, դուք պետք է տեսնեք գործընթացը այսպես.

TYPO3-ը ներբեռնելուց հետո գործարկեք հետևյալ հրամանը՝ /var/www/typo3-ում ֆայլերի և դիրեկտորիաների ցանկը ստուգելու համար:

ls -lah /var/www/typo3

Դուք պետք է տեսնեք նմանատիպ ֆայլեր և գրացուցակներ, ինչպիսիք են.

Վերջապես, գործարկեք TYPO3 CMS երկուական ֆայլը` կազմաձևումը սկսելու համար, և ձեզ կառաջարկվեն որոշ կոնֆիգուրացիաներ:

sudo -u nginx ./vendor/bin/typo3 setup

Ձեզ կհարցնեն TYPO3 CMS-ի որոշ կոնֆիգուրացիաներ:

  • Մուտքագրեք տվյալների բազայի դրայվերը mysqli:
  • Մուտքագրեք տվյալների բազայի օգտատերը, գաղտնաբառը, նավահանգիստը և հյուրընկալողը:
  • Այժմ մուտքագրեք տվյալների բազայի անունը, որը կօգտագործվի TYPO3 CMS-ի համար: Այս օրինակում տվյալների բազայի անունը typo3db է:
  • Մուտքագրեք նոր ադմինիստրատորի օգտվողը, էլփոստը և գաղտնաբառը TYPO3 CMS-ի համար:
  • Ծրագրի անվան և կայքի հիմնական URL-ի համար սեղմեք ENTER՝ այն որպես լռելյայն թողնելու համար:

Երբ TYPO3 CMS-ի կազմաձևումն ավարտվի, դուք պետք է տեսնեք «Շնորհավորում ենք - TYPO3-ի կարգավորումն ավարտված է» հաղորդագրությունը:

Nginx սերվերի բլոկի կարգավորում TYPO3 CMS-ի համար

TYPO3 CMS-ը տեղադրելուց և կազմաձևելուց հետո դուք կստեղծեք Nginx սերվերի բլոկը TYPO3 CMS-ի համար: Նախքան սկսելը, համոզվեք, որ տիրույթի անունը մատնանշված է ձեր սերվերի IP հասցեին:

Ստեղծեք նոր Nginx սերվերի բլոկի կոնֆիգուրացիա/etc/nginx/conf.d/typo3.conf օգտագործելով vim:

sudo vim /etc/nginx/conf.d/typo3.conf

Տեղադրեք հետևյալ կոնֆիգուրացիան և համոզվեք, որ փոխեք թիրախային տիրույթի անունը server_name պարամետրում:

server {
    listen       80;
    server_name  typo3.howtoforge.local;

    root         /var/www/typo3/public;
    index index.php;

    # Load configuration typo3.conf.
    include /etc/nginx/default.d/typo3-nginx.conf;
}

Ավարտելուց հետո պահպանեք և դուրս եկեք ֆայլից:

Հաջորդը, ստեղծեք մեկ այլ կոնֆիգուրացիա /etc/nginx/default.d/typo3-nginx.conf՝ օգտագործելով ստորև բերված vim հրամանը:

sudo vim /etc/nginx/default.d/typo3-nginx.conf

Տեղադրեք հետևյալ կոնֆիգուրացիան ֆայլի մեջ. Սա Nginx-ի հիմնական կոնֆիգուրացիան է TYPO3 CMS-ի համար:

# Compressing resource files will save bandwidth and so improve loading speed, especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/css gzip; }
}

# TYPO3 - Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
if (!-e $request_filename) {
    rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}

# TYPO3 - Block access to composer files
location ~* composer\.(?:json|lock) {
    deny all;
}

# TYPO3 - Block access to flexform files
location ~* flexform[^.]*\.xml {
    deny all;
}

# TYPO3 - Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
    deny all;
}

# TYPO3 - Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
    deny all;
}

# TYPO3 - Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
    deny all;
}

# TYPO3 - Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
    deny all;
}

# TYPO3 - Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
    deny all;
}

# TYPO3 - Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
    deny all;
}

# TYPO3 - Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
    deny all;
}

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

location = /typo3 {
    rewrite ^ /typo3/;
}

location /typo3/ {
    absolute_redirect off;
    try_files $uri /typo3/index.php$is_args$args;
}

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 16k;
    fastcgi_connect_timeout 240s;
    fastcgi_read_timeout 240s;
    fastcgi_send_timeout 240s;

    # this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
    fastcgi_pass         unix:/run/php-fpm/www.sock;
    fastcgi_index        index.php;
    include              fastcgi.conf;
}

Պահպանեք և փակեք ֆայլը, երբ ավարտեք:

Այժմ գործարկեք հետևյալ հրամանը՝ համոզվելու համար, որ ունեք Nginx-ի պատշաճ կազմաձևը: Այնուհետև վերագործարկեք Nginx ծառայությունը՝ փոփոխությունները կիրառելու համար:

sudo nginx -t
sudo systemctl restart nginx

Հրամանի կատարումից հետո դուք պետք է ստանաք «շարահյուսություն ok - փորձարկումը հաջողված է» արդյունքը, և ձեր TYPOC3 CMS տեղադրումը պետք է հասանելի լինի:

TYPO3 CMS-ի ապահովում SSL/TLS-ով

Հետևյալ բաժնում դուք կապահովեք ձեր TYPO3 CMS տեղադրումը SSL/TLS վկայագրերով, որոնք կստեղծվեն Letsencrypt-ից: Դրան հասնելու համար դուք պետք է տեղադրեք Certbot-ը ձեր համակարգում:

Գործարկեք ստորև բերված dnf հրամանը՝ Certbot-ը և Nginx-ի Certbot հավելվածը տեղադրելու համար: Տեղադրումը հաստատելու համար մուտքագրեք y, ապա սեղմեք ENTER:

sudo dnf install certbot python3-certbot-nginx

Այժմ գործարկեք հետևյալ հրամանը՝ Letsencrypt-ից TYPO3 CMS-ի համար նոր SSL վկայագրեր ստեղծելու համար: Համոզվեք, որ փոխեք տիրույթի անունը և էլփոստի հասցեն:

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email alice@howtoforge.local -d typo3.howtoforge.local

Եթե գործընթացը սահուն է ընթանում, նոր SSL վկայականները կստեղծվեն /etc/letsencrypt/live/typo3.howtoforge.local գրացուցակում: Նաև TYPO3 CMS-ի սերվերի բլոկի կազմաձևումը ավտոմատ կերպով կկազմաձևվի SSL-ի միջոցով, որը միացված է certbot-ի միջոցով:

Գործարկեք ձեր վեբ զննարկիչը և այցելեք TYPO3 CMS տեղադրման հասցեն (այսինքն՝ https://typo3.howtoforge.local/): Դուք պետք է ստանաք TYPO3 CMS-ի մուտքի էկրանը:

Մուտքագրեք ձեր ստեղծած ադմինիստրատորի օգտատերը և գաղտնաբառը, այնուհետև սեղմեք Մուտք:

Եթե ունեք ճիշտ ադմինիստրատորի օգտատեր և գաղտնաբառ, ձեզ պետք է ցուցադրվի TYPO3 CMS ադմինիստրատորի վահանակը հետևյալ կերպ.

Վերևի աջ ընտրացանկում սեղմեք տեղեկատվության պատկերակը և դուք պետք է ստանաք ծրագրաշարի փաթեթների մանրամասները, որոնք ներկայումս օգտագործում եք TYPO3 CMS-ի տեղադրման համար: Այս ցուցադրությունում TYPO3 CMS-ի տեղադրված տարբերակը v12 է Nginx վեբ սերվերով, MariaDB տվյալների բազայի սերվերով և PHP-FPM 8.1:

Եզրակացություն

Դուք ամեն ինչ պատրաստ եք: Դուք ավարտել եք TYPO3 CMS-ի տեղադրումը ձեր AlmaLinux 9 սերվերի վրա MariaDB տվյալների բազայի սերվերի, PHP-FPM-ի և Nginx վեբ սերվերի միջոցով: Դուք նաև ապահովել եք ձեր տեղակայումը Letsencrypt-ից SSL/TLS վկայագրերի միջոցով: Սա նկատի ունենալով, այժմ կարող եք ստեղծել նոր կայք TYPO3 CMS-ի միջոցով: