Erstellen Sie openssl, apache2.4, php7.4 aus dem Quellcode auf Ubuntu-server20.04.

Der Ablauf liegt diesmal ungefähr in der Reihenfolge OpenSSL, Apache Subversion, APR, APR-util, PCRE, Apache2 (httpd), PHP. Wir werden je nach Bedarf verschiedene Pakete und Builds verwenden.

Umgebung
OS Ubuntu server 20.04
CPU Intel Core i5 2500
Erinnerung 4GB(DDR3)
Network LAN
Ausführung 2020/09/01 ab spätestens
httpd 2.4.26
OpenSSL 1.1.1g
PHP 7.4.9

0. Pakete hinzufügen / entfernen und Porg installieren

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

Build Install Porg, mit dem die installierte Software verwaltet werden kann. Weitere Informationen finden Sie in diesem Artikel. (https://qiita.com/ksugawara61/items/38fe9d8e2cc444639fe0)

Neueste: 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. Installieren Sie zlib.

Neueste: 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. Installieren Sie OpenSSL.

Neueste: 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. Installieren Sie die Apache-Subversion.

Dieses Mal laden apr und apr-util die Quelle mit Apache-Subversion herunter.

Installieren Sie zunächst die Apache-Subversion. 1

Dann laden Sie apr und apr-util herunter. 2 und 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)

** Das Folgende ist eine Vermutung, aber **

(2 prüft wahrscheinlich, ob die erforderlichen Tools installiert sind. Dies führt zu einem obskuren Fehler in 3, aber am Ende waren einfach nicht die erforderlichen Tools installiert. Es kann möglich sein, dies zu verhindern.)

4. Installieren Sie apr. 1.7.x.

Neueste: https://apr.apache.org/anonsvn.html

Es ist eine gute Idee, kleinere Versionen von apr und apr-util zu haben.

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

In meiner Umgebung wurde beispielsweise 2 wie folgt ausgegeben. Dadurch erfahren Sie schnell, welche Tools nicht installiert sind.

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.

Sie können sehen, dass Sie "autoconf" und "libtool" benötigen. Ich frage mich, ob ich das Paket verwenden oder aus dem Quellcode erstellen soll. Immerhin habe ich beschlossen, "autoconf" aus dem Paket und "libtool" aus der Quelle zu erstellen.

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"

Führen Sie nun erneut 2 aus, und führen Sie bei Erfolg 3 und mehr aus, einschließlich 3.

5. Installieren Sie apr-util 1.7.x.

Neueste: https://apr.apache.org/anonsvn.html

Es ist eine gute Idee, kleinere Versionen von apr und apr-util zu haben.

Installieren Sie zunächst das erforderliche libexpat1-dev-Paket.

sudo apt install libexpat1-dev -y

Dann fahren Sie mit dem Bauen fort.

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

6. Installieren Sie pcre

Neueste: https://www.pcre.org/

Beachten Sie, dass es sich um pcre handelt, nicht um 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. Installieren Sie Apache2 (httpd)

Neueste: 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"

Sie können jedes Verzeichnis wie folgt finden, das am Ende angezeigt wird. Überprüfen Sie es daher.

.
.
.
Installing configuration files
mkdir /usr/local/apache2/conf (Konfigurationsdatei)
.
.
.
Installing HTML documents 
mkdir /usr/local/apache2/htdocs (Dokument Root)
.
.
.

8. PHP installieren 7.4.9

Neueste: 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

Hier ist eine Liste der Optionen ". / Configure".

  1. --prefix = / opt / php-x.x.x: Wo werden PHP-Interpreter und -Bibliotheken installiert? Bin kommt hierher, wenn nur PHP verwendet wird.

  2. --with-apxs2: Ein Skript, das Informationen zu Apache2 zurückgibt. PHP ist erforderlich, da es durch Einbetten in Apache2 verwendet wird.

  3. --enable-mbstring: Japanisch ist ein Multi-Byte-Zeichen, und der PHP-Kern unterstützt keine Multi-Byte-Zeichen. Geben Sie es daher an, da dies ein Problem darstellt, wenn es unerwartet auftritt.

  4. --enable-intl: Ermöglicht die Ausführung verschiedener Gebietsschema-bezogener Vorgänge. Formatierung, Transliteration, Codierungskonvertierung, Kalenderverarbeitung, UCA-konforme Sortierung, Textbegrenzer, Operationen unter Verwendung von Gebietsschema-IDs, Zeitzonen und Schreibern sind möglich. Und im PHP-Handbuch. Aktivieren Sie es. ``

  5. --enable-bcmath: Aktivieren Sie diese Option, um numerische Berechnungen ohne Fehler im interaktiven Modus durchzuführen.

  6. ~~ --with-pcre-dir: Geben Sie denselben PCre an, der zum Erstellen von Apache2 verwendet wurde. ~~

  7. --with-readline: Auf diese Weise können Sie interaktive Interpreter in PHP wie Python verwenden.

  8. --with-libxml-dir: Gibt den Speicherort der Bibliothek für die XML-Verarbeitung an. Es ist standardmäßig gültig, aber geben Sie auf einen Blick an, welche Bibliothek Sie erstellt haben, wenn Sie sich später die Konfigurationsoption ansehen.

Ich frage mich, ob PHP in Zukunft mit MySQL umgehen wird. PHP empfiehlt die Verwendung von PDO zum Betrieb von MySQL. Geben Sie daher Folgendes an, damit Sie mit PDO MySQL verarbeiten können.

Bisher verwendete PDO separate Funktionen, die für jede Datenbank vorbereitet wurden, um die Datenbank zu verwalten, sodass für MySQL geschriebene Programme ohne umfangreiches Umschreiben nicht für PostgreSQL verwendet werden konnten.

Durch das Sammeln der Unterschiede zwischen den einzelnen Datenbanken und die Verwendung von PDO, die einheitlich behandelt werden können, wird es jedoch möglich, jede Datenbank mit derselben Funktion zu betreiben. Um mit Datenbanken mit PDO arbeiten zu können, benötigen Sie eine PDO-Erweiterung und einen Treiber für jede von PDO verwendete Datenbank.

  1. --with-pdo-mysql: Die PDO-Erweiterung ist standardmäßig aktiviert. Dies gibt den MySQL-Treiber an, den die PDO-Erweiterung verwenden wird. Geben Sie dazu übrigens den MySQL Native Driver (mysqlnd) an. Wenn Sie mit etwas anderem als MySQL zu tun haben, lesen Sie: (https://www.php.net/manual/ja/pdo.drivers.php)

  2. --with-zlib und --with-zlib-dir: Gibt die in OpenSSL verwendete (und auch in MySQL-Builds verwendete) Zlib an. Erforderlich, um pdo-mysql zu verwenden.

  3. --enable-gd: Aktiviert die GD-Unterstützung. JPEG und PNG zu handhaben

`sudo apt install libpng-dev libjpeg-dev`
  1. Aktivieren Sie --with-freetype: freetype2.
`sudo apt install freetype-dev`
  1. --with-openssl: Geben Sie das OpenSSL-Installationsverzeichnis an, damit OpenSSL auch von PHP aus verwendet werden kann.

  2. with-Natrium: Aktivieren Sie diese Option anstelle der gelöschten mcrypt.

das ist alles. Installieren Sie als Nächstes die erforderlichen Pakete. Die Zahl in (x) gibt an, welche Erweiterung oben erforderlich ist.

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

Zusammenfassung

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

von hier,

sudo make 
sudo porg -lD "make install"

Bestätigung des Betriebs

1. httpd.conf Datei

Die httpd.conf im Konfigurationsdateiverzeichnis, die am Ende des Apache2-Builds bestätigt wurde, ist die Konfigurationsdatei.

Die Beschreibung von Load Module php7_module modules / libphp7.so in / usr / local / apache2 / conf / httpd.conf wird verwendet, um das von Apache separat erstellte PHP-Apache-Modul zu integrieren.

Eine weitere Einstellung ist erforderlich, damit Apache2 PHP ausführt. Wenn nichts unternommen wird, gibt eine Anfrage, selbst wenn sie an .php kommt, eine .php-Datei wie eine Textdatei zurück. Wenn die angeforderte Datei "xxxx.php" lautet, fügen Sie daher die folgende Beschreibung hinzu, damit sie ordnungsgemäß ausgeführt wird.

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

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

Jetzt können Sie loslegen.

Erstellen Sie die folgende PHP-Datei unter "/ usr / local / apache2 / htdocs".

info.php


<?php
  phpinfo()
?>

Verschiedene Befehle, die sich auf den Betrieb von Apache2 (httpd) beziehen, sind wie folgt.

Apache2(httpd)
Inbetriebnahme sudo /usr/local/apache2/bin/apachectl start
Starten Sie neu sudo /usr/local/apache2/bin/apachectl restart
Ausschalten sudo /usr/local/apache2/bin/apachectl stop

Verwenden Sie ifconfig (verfügbar mit sudo apt install net-tools), um die private IP-Adresse des Servers zu ermitteln und von einem Computer im selben Netzwerk zu http: // 192.168.xx / info.php zu wechseln. Bitte zugreifen. Stellen Sie sicher, dass die Konfigurationseinstellungen korrekt wiedergegeben werden.

Zusammenfassung

Damit ist die Installation der Installation in diesem Artikel abgeschlossen. Ich möchte porg -a verwenden, um zu überprüfen, was ich bisher gebaut habe.

>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

Referenz

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

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

Bonus - Erstellen Sie eine React-App-Umgebung und zeigen Sie Hello, World im Browser an.

Installieren Sie Node.js und 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

Wenn Sie "npm no solche Datei oder ..." erhalten, führen Sie "reboot" und dann "echo export PATH = / usr / local / bin /: \ $ PATH >> ~ / .bashrc" durch.

n stabiler Fehler Referenz: (https://stackoverflow.com/questions/36494336/npm-install-error-unable-to-get-local-issuer-certificate)

Ich werde von hier aus schnell vorgehen. Weitere Informationen finden Sie unter (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"
},
...

Führen Sie nun das Webpack aus.

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

Bitte greifen Sie mit einem Webbrowser auf http: // 192.168.x.x / react-app / zu. Wenn Hello World angezeigt wird, ist es OK.

Recommended Posts

Erstellen Sie openssl, apache2.4, php7.4 aus dem Quellcode auf Ubuntu-server20.04.
Installieren Sie Apache 2.4.46 von der Quelle unter CentOS 7
Installieren Sie samba4 aus dem Quellcode unter CentOS8
Erstellen Sie Apache + Tomcat + Pebble lokal auf dem Mac
Erstellen Sie eine Apache / Tomcat-Entwicklungsumgebung unter Cent OS 7
Erstellen Sie TensorFlow 2.3.1 aus dem Quellcode unter Ubuntu20.04 LTS und erstellen Sie eine gemeinsam genutzte Bibliothek in C ++