Construisez openssl, apache2.4, php7.4 à partir des sources sur Ubuntu-server20.04.

Le flux cette fois-ci est à peu près dans l'ordre d'OpenSSL, Apache Subversion, APR, APR-util, PCRE ,, Apache2 (httpd), PHP. Nous utiliserons différents packages et builds selon les besoins.

environnement
OS Ubuntu server 20.04
CPU Intel Core i5 2500
Mémoire 4GB(DDR3)
Network LAN
version 2020/09/01 au plus tard
httpd 2.4.26
OpenSSL 1.1.1g
PHP 7.4.9

0. Ajouter / supprimer des packages et installer Porg

sudo apt update -y && sudo apt upgrade -y
sudo apt install build-essential
sudo apt purge openssl
sudo apt purge apache2

Build Install Porg, qui peut gérer les logiciels installés. Pour plus de détails, consultez cet article. (https://qiita.com/ksugawara61/items/38fe9d8e2cc444639fe0)

Dernières: https://sourceforge.net/projects/porg/files/

cd /usr/local/src
sudo wget http://sourceforge.net/projects/porg/files/porg-0.10.tar.gz/download -O porg-0.10.tar.gz --no-check-certificate
sudo tar xvf porg-0.10.tar.gz && cd porg-0.10
sudo ./configure --prefix=/usr/local --disable-grop
sudo make && sudo install

2. Installez zlib.

Dernières: https://zlib.net/

cd /usr/local/src
sudo wget http://www.zlib.net/zlib-1.2.11.tar.gz
sudo tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
sudo ./configure
sudo make
sudo porg -lD "make install"

3. Installez OpenSSL.

Dernière: https://www.openssl.org/source/

cd /usr/local/src
sudo wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz 
sudo tar xvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
sudo ./config shared zlib
sudo make
sudo porg -lD "make install"

3. Installez la subversion Apache.

Cette fois, apr et apr-util téléchargeront les sources avec la subversion apache.

Tout d'abord, installez la subversion Apache. 1

Ensuite, téléchargez apr et apr-util. 2 et 3

sudo apt install subversion (1)
sudo svn co https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x/ apr (2)
sudo svn co https://svn.apache.org/repos/asf/apr/apr-util/branches/1.7.x/ apr-util (3)

** Ce qui suit est une supposition, mais **

(2 vérifie probablement si les outils requis sont installés. Cela donne une erreur obscure dans 3 mais à la fin, il n'a tout simplement pas les outils requis installés. Il peut être possible de l'empêcher de se produire.)

4. Installez apr. 1.7.x

Dernière: https://apr.apache.org/anonsvn.html

C'est une bonne idée d'avoir des versions mineures de apr et apr-util.

cd apr
sudo ./buildconf (2)
sudo ./configure (3)
sudo make
sudo porg -lD "make install"

Par exemple, dans mon environnement, 2 était affiché comme suit. Cela vous indiquera rapidement quels outils ne sont pas installés.

buildconf: checking installation...
buildconf: python version 3.8.2 (ok)
buildconf: autoconf not found.
           You need autoconf version 2.59 or newer installed
           to build APR from SVN.
buildconf: libtool not found.
           You need libtool version 1.4 or newer installed
           to build APR from SVN.

Vous pouvez voir que vous avez besoin de autoconf et libtool. Je me demande s'il faut utiliser le package ou construire à partir des sources. Après tout, j'ai décidé de construire autoconf à partir du paquet et libtool à partir des sources.

sudo apt install autoconf

sudo tar xvf libtool-2.4.6.tar.gz
cd libtool-2.4.6
sudo ./configure
sudo make
sudo porg -lD "make install"

Maintenant, exécutez à nouveau 2, et en cas de succès, exécutez 3 et au-delà, y compris 3.

5. Installez apr-util 1.7.x

Dernière: https://apr.apache.org/anonsvn.html

C'est une bonne idée d'avoir des versions mineures de apr et apr-util.

Tout d'abord, installez le package libexpat1-dev requis.

sudo apt install libexpat1-dev -y

Ensuite, procédez à la construction.

cd apr-util
sudo ./buildconf
sudo ./configure --with-apr=/usr/local/apr
sudo make
sudo porg -lD "make install"

6. Installez pcre

Dernière: https://www.pcre.org/

Notez que c'est pcre, pas pcre2!

cd /usr/local/src
sudo wget ftp://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
sudo tar xvf pcre-8.44.tar.gz
cd pcre-8.44
sudo ./configure
sudo make
sudo make install

7. Installez Apache2 (httpd)

Dernière: https://httpd.apache.org/download.cgi

cd /usr/local/src
sudo apt install libxml2-dev
sudo wget https://downloads.apache.org//httpd/httpd-2.4.46.tar.gz --no-check-certificate
sudo tar xvf httpd-2.4.46.tar.gz
cd httpd-2.4.46

sudo ./configure --enable-ssl --enable-mods-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr/bin/apu-1-config --with-pcre=/usr/local/pcre-8.44 --with-ssl=/usr/local/ssl  --enable-shard=ssl

sudo make

sudo porg -lD "make install"

Vous pouvez voir chaque répertoire par le suivant qui apparaît à la fin, alors vérifiez-le.

.
.
.
Installing configuration files
mkdir /usr/local/apache2/conf (fichier de configuration)
.
.
.
Installing HTML documents 
mkdir /usr/local/apache2/htdocs (Racine du document)
.
.
.

8. Installation de PHP 7.4.9

Dernières: https://www.php.net/downloads

cd /usr/local/src
sudo wget https://www.php.net/distributions/php-7.4.9.tar.gz --no-check-certificate
sudo tar xvf php-7.4.9.tar.gz
cd php-7.4.9

Voici une liste des options . / Configure.

  1. --prefix = / opt / php-x.x.x: Où installer les interpréteurs et bibliothèques PHP. Bin vient ici lorsque vous utilisez PHP seul.

  2. --with-apxs2: Un script qui renvoie des informations sur Apache2. PHP est requis car il est utilisé en l'incorporant dans Apache2.

  3. --enable-mbstring: Le japonais est un caractère multi-octets, et le cœur de PHP ne prend pas en charge les caractères multi-octets, alors spécifiez-le car ce sera un problème si cela se produit de manière inattendue.

  4. --enable-intl: vous permet d'effectuer diverses opérations liées aux paramètres régionaux. Le formatage, la translittération, la conversion d'encodage, le traitement du calendrier, le classement conforme UCA, les délimiteurs de texte, les opérations utilisant des identificateurs de paramètres régionaux, des fuseaux horaires et des scribes sont possibles. Et dans le manuel PHP. Activez-le. ''

  5. --enable-bcmath: Permet d'effectuer des calculs numériques sans erreur en mode interactif.

  6. ~~ --with-pcre-dir: Spécifiez le même pcre utilisé pour construire Apache2. ~~

  7. --with-readline: Cela vous permettra d'utiliser des interpréteurs interactifs en PHP, comme Python.

  8. --with-libxml-dir: Ceci spécifie l'emplacement de la bibliothèque pour le traitement XML. Il est valide par défaut, mais spécifiez la bibliothèque avec laquelle vous avez créé un coup d'œil lorsque vous examinerez l'option de configuration plus tard.

Je me demande si PHP gérera MySQL à l'avenir. PHP recommande d'utiliser PDO pour faire fonctionner MySQL. Spécifiez donc ce qui suit pour pouvoir utiliser PDO pour gérer MySQL.

Jusqu'à présent, PDO utilisait des fonctions séparées préparées pour chaque base de données pour gérer les bases de données, de sorte que les programmes écrits pour MySQL ne pouvaient pas être utilisés pour PostgreSQL sans réécriture majeure.

Cependant, en collectant les différences entre chaque base de données et en utilisant des PDO qui peuvent être gérés de manière uniforme, il devient possible d'exploiter chaque base de données avec la même fonction. Pour travailler avec des bases de données utilisant PDO, vous avez besoin d'une extension PDO et d'un pilote pour chaque base de données utilisée par PDO.

  1. --with-pdo-mysql: L'extension PDO est activée par défaut, donc cela spécifie le pilote MySQL que l'extension PDO utilisera. Au fait, spécifiez le pilote natif MySQL (mysqlnd) pour cela. Si vous avez affaire à autre chose que MySQL, consultez: (https://www.php.net/manual/ja/pdo.drivers.php)

  2. --with-zlib et --with-zlib-dir: Spécifie le zlib utilisé dans OpenSSL (et également utilisé dans les versions MySQL). Requis pour utiliser pdo-mysql.

  3. --enable-gd: active le support GD. Pour gérer jpeg et png

`sudo apt install libpng-dev libjpeg-dev`
  1. Activez --with-freetype: freetype2.
`sudo apt install freetype-dev`
  1. --with-openssl: Spécifiez le répertoire d'installation d'OpenSSL afin qu'OpenSSL puisse également être utilisé depuis PHP.

  2. with-sodium: Activez ceci au lieu du mcrypt supprimé.

c'est tout. Ensuite, installez les packages requis. Le nombre entre (x) indique quelle extension ci-dessus est requise.

sudo apt install libicu-dev (4)
sudo apt install libreadline-dev (7)
sudo apt install libxml2-dev (8)
sudo apt install libpng-dev libjpeg-dev (11)
sudo apt install libfreetype-dev (12)
sudo apt install libsodium-dev (14)
sudo apt install libsqlite3-dev libonig-dev

Sommaire

sudo ./configure \
--prefix=/opt/php-7.4.9 \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-intl \
--enable-bcmath \
--with-pcre-regex=/usr/local/lib \
--with-readline \
--with-libxml=/usr/bin/xml2-config \
--with-pdo-mysql=mysqlnd \
--with-zlib=/usr/local \
--with-zlib-dir=/usr/local \
--enable-gd \
--with-freetype \
--with-openssl=/usr/local/ssl \
--with-openssl \
--with-sodium

d'ici,

sudo make 
sudo porg -lD "make install"

Confirmation de l'opération

1. Fichier httpd.conf

Le httpd.conf dans le répertoire du fichier de configuration, qui a été confirmé à la fin de la construction d'apache2, est le fichier de configuration.

La description de Load Module php7_module modules / libphp7.so dans / usr / local / apache2 / conf / httpd.conf est utilisée pour incorporer le module PHP Apache construit séparément d'Apache.

Et un paramètre supplémentaire est nécessaire pour qu'Apache2 exécute PHP. Si rien n'est fait, même si une requête arrive à .php, elle renverra un fichier .php comme un fichier texte. Par conséquent, si le fichier demandé est «xxxx.php», ajoutez la description suivante afin qu'il soit exécuté correctement.

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Sur (https://www.atmarkit.co.jp/ait/articles/1112/12/news118.html).

Vous êtes maintenant prêt à courir.

Créez le fichier PHP suivant sous / usr / local / apache2 / htdocs.

info.php


<?php
  phpinfo()
?>

Les différentes commandes liées au fonctionnement d'Apache2 (httpd) sont les suivantes.

Apache2(httpd)
Début de l'opération sudo /usr/local/apache2/bin/apachectl start
Redémarrer sudo /usr/local/apache2/bin/apachectl restart
Fermer sudo /usr/local/apache2/bin/apachectl stop

Utilisez ifconfig (disponible avec sudo apt install net-tools) pour trouver l'adresse IP privée du serveur et accédez à http: // 192.168.xx / info.php à partir d'un ordinateur du même réseau. Veuillez accéder. Assurez-vous que les paramètres de configuration sont correctement reflétés.

sommaire

Cela termine l'installation de ce que vous allez installer dans cet article. Je voudrais utiliser porg -a pour vérifier ce que j'ai construit jusqu'à présent.

>porg -a
apr
apr-util
httpd-2.4.46
libtool-2.4.6
openssl-1.1.1g
pcre-8.44
php-7.4.9
zlib-1.2.11

référence

https://www.atmarkit.co.jp/ait/series/2540/

https://qiita.com/ksugawara61/items/70f5d1faf192c4ba6ca0

Bonus --Créez un environnement React-App et affichez Hello, World sur le navigateur.

Installez Node.js et NPM.

sudo apt install npm nodejs -y
sudo npminstall -g n
sudo n stable
sudo apt purge nodejs npm -y
reboot

node -v
npm -v

Si vous obtenez npm no such file or ..., faites reboot puis echo export PATH = / usr / local / bin /: \ $ PATH >> ~ / .bashrc.

n Référence d'erreur stable: (https://stackoverflow.com/questions/36494336/npm-install-error-unable-to-get-local-issuer-certificate)

Je vais procéder rapidement d'ici. Pour plus d'informations, voir (https://qiita.com/Suzukaze31/items/3cd7054dd7749d79eb70).

mkdir /usr/local/apache2/htdocs/react-app
chown USER_NAME:USER_NAME -R /usr/local/apache2/htdocs/react-app

npm init -y

sudo npm i -g react react-dom @babel/core @babel/cli @babel/preset-env @babel/preset-react webpack webpack-cli webpack-dev-server babel-loader css-loader style-loader html-webpack-plugin

npm i -save react react-dom
npm i --save-dev @babel/core @babel/cli @babel/preset-env @babel/preset-react webpack webpack-cli webpack-dev-server babel-loader css-loader style-loader html-webpack-plugin

touch webpack.config.js
mkdir src && cd src
touch index.html index.js App.js

index.html

<!DOCTYPE html>

<head>
    <meta charset="utf-8">
</head>
<body>
    <div id="root"></div>
</body>

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

App.js

import React from 'react';

function App() {
    return <h1>Hello, World</h1>;
}

export default App;

webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './src/index.js',
    mode: 'development',
    output: {
        path: path.resolve(__dirname, './'),
        filename: 'bundle.js',
    },
    module: {
        rules: [
            {test: /\.(js)$/, use: 'babel-loader'},
            {test: /\.css$/, use: ['style-loader', 'css-loader']}
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: 'src/index.html'
        })
    ]
}

package.json

 ...
  "babel":{
    "presets" : [
      "@babel/preset-env",
      "@babel/preset-react"
    ]
  },
  "scripts": {
    "build-react-app": "webpack",
    "start": "webpack-dev-server --open"
},
...

Maintenant, exécutez webpack.

cd /usr/local/apache2/htdocs/react-app
npm run build-react-app

Veuillez accéder à http: // 192.168.x.x / react-app / avec un navigateur Web. Si Hello World s'affiche, c'est OK.

Recommended Posts

Construisez openssl, apache2.4, php7.4 à partir des sources sur Ubuntu-server20.04.
Installez apache 2.4.46 à partir des sources sur CentOS 7
Installez samba4 à partir du code source sur CentOS8
Construisez Apache + Tomcat + Pebble localement sur Mac
Créer un environnement de développement Apache / Tomcat sur Cent OS 7
Construisez TensorFlow 2.3.1 à partir des sources sur Ubuntu20.04 LTS et créez une bibliothèque partagée en langage C ++