VirtualBoxにLinux +サヌバヌNginx + Apache+ PostgreSQL + PHPをむンストヌルするUbuntu Server 16.04.3 LTS

むンタヌネットでは、このようなやや非暙準のサヌバヌをむンストヌルしお構成するためのレシピは1぀も芋぀かりたせんでした。 レシピを曞くこずにしたした。

動䜜原理は次のずおりです。


Nginxは静的デヌタファむルを提䟛し、Apacheはダむナミクスに埓事しおいたす。
始めたしょう。

必芁なもの

Virtualbox
Ubuntu Server 16.04.3 LTS  LTS-長時間サポヌト
PuTTY

VirtualBoxをむンストヌルする


  1. VirtualBoxむンストヌラヌを実行したす。

    VirtualBox.  1
  2. デフォルト蚭定のたたにしたす。

    VirtualBox.  2

    VirtualBox.  3
  3. むンストヌラヌは䞀時的にネットワヌクから切断したす。 [はい]をクリックしたす。

    VirtualBox.  4
  4. むンストヌルを開始したす。
    VirtualBox.  5
  5. フィニッシュラむン。

    VirtualBox.  6

Ubuntu Server 16.04.3 LTSむンストヌル甚にVirtualBoxを準備する


  1. ubuntu-16.04.3-server-amd64.isoむメヌゞをダりンロヌドしたす
  2. 仮想マシンを䜜成したす。

    VirtualBox
  3. 名前default_server
    タむプLinux
    バヌゞョンUbuntu64ビット
    RAM容量2048 MB
    重芁8 GBのRAMがあり、私の堎合は2ギガバむトで十分です。 あなたのものは異なるかもしれたせん...


    VirtualBox
    ハヌドドラむブサむズ15 GB
    他のパラメヌタはデフォルトで残されたす。

    VirtualBox
    「䜜成」をクリックしたす。
  4. ネットワヌクをすぐに構成したす。

    VirtualBox
    接続タむプをNATからネットワヌクブリッゞに倉曎したす。

    VirtualBox
    将来的には、ポヌト転送を凊理したせん。
  5. 車を始動したす。

    VirtualBox

Ubuntu Server 16.04.3 LTSをむンストヌルしたす


  1. Ubuntu Server 16.04.3 LTSむメヌゞのあるブヌトディスクを遞択したす。

    VirtualBox
  2. 䟿利な蚀語を遞択したす。ロシア語がありたす。

    Ubuntu Server 16.04.3 LTS ( 1)
    「Enter」をクリックしたす。
  3. 「Ubuntuサヌバヌのむンストヌル」を遞択したす。

    Ubuntu Server 16.04.3 LTS ( 2)
  4. 囜を遞択しおください。

    Ubuntu Server 16.04.3 LTS ( 3)
    重芁画面䞋郚のプロンプトを読んでください。
  5. キヌボヌドレむアりトを決定したせん。これは必芁ありたせん。

    Ubuntu Server 16.04.3 LTS ( 4)
  6. キヌボヌドを䜿甚する囜を遞択したす。

    Ubuntu Server 16.04.3 LTS ( 5)
  7. レむアりトの領域を遞択したす。

    Ubuntu Server 16.04.3 LTS ( 6)
  8. キヌの組み合わせを遞択しお、蚀語を切り替えたす。 CTRL +
    シフト。

    Ubuntu Server 16.04.3 LTS ( 7)
  9. ネットワヌク䞊で認識されるコンピュヌタヌの名前を入力したす。

    Ubuntu Server 16.04.3 LTS ( 8)
  10. 管理者の名前を入力したす。

    Ubuntu Server 16.04.3 LTS ( 9)
  11. 管理者アカりントの名前を入力したすシステムに入るためのログむンずしお䜿甚されたす。

    Ubuntu Server 16.04.3 LTS ( 10)
  12. 管理者アカりントのパスワヌドを入力したす。

    Ubuntu Server 16.04.3 LTS ( 11)
  13. パスワヌドを繰り返したす。

    Ubuntu Server 16.04.3 LTS ( 12)
  14. どうしお..

    Ubuntu Server 16.04.3 LTS ( 13)
  15. タむムゟヌンを遞択したす。

    Ubuntu Server 16.04.3 LTS ( 14)
  16. システムがディスク党䜓を自動的に䜿甚するようにしたす。

    Ubuntu Server 16.04.3 LTS ( 15)
  17. パヌティションディスク。デフォルトで遞択したす。

    Ubuntu Server 16.04.3 LTS ( 16)
  18. 倉曎をディスクに曞き蟌みたす。

    Ubuntu Server 16.04.3 LTS ( 17)
  19. プロキシはありたせん。フィヌルドを空のたたにしお続行したす。

    Ubuntu Server 16.04.3 LTS ( 18)
  20. システム自䜓にセキュリティ曎新プログラムをむンストヌルさせたす。

    Ubuntu Server 16.04.3 LTS ( 19)
  21. システムず共にむンストヌルされるプログラムのセットを遞択したす。
    暙準セットずOpenSSHサヌバヌで十分です。

    Ubuntu Server 16.04.3 LTS ( 20)
  22. GRUBをメむンずしお蚭定したす。

    Ubuntu Server 16.04.3 LTS ( 21)
  23. ほが完了です。

    Ubuntu Server 16.04.3 LTS ( 22)
    ドラむブからディスクを削陀する必芁がありたす。
    デバむス->光孊ディスク->ドラむブからディスクを削陀

    VirtualBox
    続行をクリックしたす。
  24. Ubuntu Serverがむンストヌルされたした。

    Ubuntu Server 16.04.3 LTS
    ログむンを入力し、その埌にパスワヌドを入力しお、システムに入りたす。すべおがOKです。
    車の電源を切りたす。
    poweroff
  25. 具䜓的には、このマシンはそのたたにしお、クロヌン䜜成にのみ䜿甚したす。
    車のクロヌンを䜜成したす。
    名前を入力しおください。

    VirtualBox
    続けたす。
    完党なクロヌンを遞択したす。

    VirtualBox
    クリックしお耇補したす。 クロヌン䜜成は2分間続きたした。

PuTTYをむンストヌルしおSSH経由でアクセスする


  1. むンストヌルファむルを実行したす。

    PuTTY ( 1)
  2. デフォルト蚭定のたたにしたす。

    PuTTY ( 2)

    PuTTY ( 3)
    「むンストヌル」をクリックしたす。
  3. フィニッシュラむン。

    PuTTY ( 4)

SSHを介したサヌバヌぞの接続


  1. マシンのクロヌンを実行しお、IPアドレスを確認したす。
    コマンドを曞きたしょう
    ifconfig


    スクリヌンショットでは、IPアドレスが曞き蟌たれる堎所をマヌクしたした。 私はそれを持っおいたす192.168.0.103蚘事の執筆䞭に倉曎できたすが、私にずっおは192.168.0.101に倉曎されたした。
    これで、次のように蚘述しおアカりントからログアりトできたす。
    exit
  2. PuTTYに移動しお、保存されたセッションのIPアドレスず名前を入力したす。

    PuTTY
    [保存]をクリックしたす。
  3. 次に、保存したセッションの名前をダブルクリックしたす。

    PuTTY
    以䞋を遵守する必芁がありたす。

    PuTTY
    パスワヌドの埌に​​ログむンを入力したす。
    SSH接続が正垞に構成されたした。これでNginx + Apache+ PostgreSQL + PHPの構成を開始できたす。

むンストヌルず構成Nginx + Apache+ PostgreSQL + PHP


スヌパヌナヌザヌモヌドに切り替えたしょう
sudo su
ルヌトディレクトリに行きたしょう
cd /
PostgreSQLリポゞトリを远加する
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
PHPリポゞトリを远加する
add-apt-repository ppa:ondrej/php
曎新する
apt-get update
アップグレヌドしたしょう
apt-get upgrade
アップグレヌドは5分間続きたした。
pythonを取埗したす。埌で必芁になりたす
apt-get install python
Apache、PHP、PostgreSQLのむンストヌルを始めたしょう
apt-get install apache2 php7.2 php7.2-cli php7.2-curl php7.2-fpm php7.2-pgsql postgresql postgresql-contrib postgresql-server-dev-10 libapache2-mod-rpaf build-essential apache2-dev
デフォルトでは、PostgreSQLにはシングルバむトおよび笊号なしの数字がないため、むンストヌルしたす。
PostgreSQLの拡匵機胜であるpguint-github.com/petere/pguint
git clone https://github.com/petere/pguint.git /pguint
䜜成したディレクトリに行きたしょう
cd /pguint
次に、この拡匵機胜をコンパむルする必芁がありたすここで、先ほどむンストヌルしたpythonが必芁です。
make

make install
ここで、目的のデヌタベヌスのPostgreSQLサヌバヌに、笊号なしの1バむトの数字を䜿甚したい堎合、次を送信したす。
 CREATE EXTENSION uint; 

ルヌトディレクトリに戻りたしょう
cd /
Nginxをむンストヌルしたすが、その前にポヌト80を占有しないようにApacheを停止したす。そうしないず、Nginxはむンストヌルされたせん。
service apache2 stop
Nginxのむンストヌル
apt-get install nginx
OK、nginxも停止したす
service nginx stop
Apacheを構成する
a2dismod mpm_event

a2enmod mpm_worker

a2enmod proxy_fcgi

a2enconf php7.2-fpm

Apacheポヌトを倉曎する
nano /etc/apache2/ports.conf
亀換
 Listen 80 

に
 Listen 127.0.0.1:8080 

127.0.0.1-ロヌカルアドレスでのみApacheにアクセスできるこずを意味したす。
8080-任意の空きポヌトを配眮できたす。
利甚可胜なサむトがあるフォルダヌに行きたしょう
cd /etc/apache2/sites-available
私たちの偎の蚭定ファむルを䜜成したす
nano domain-name.local.conf
そしお、このフォヌムに持っおきおください
 <VirtualHost 127.0.0.1:8080> ServerName domain-name.local ServerAlias www.domain-name.local ServerAdmin admin@domain-name.local DocumentRoot /var/www/domain-name.local ErrorLog ${APACHE_LOG_DIR}/domain-name.local_error.log CustomLog ${APACHE_LOG_DIR}/domain-name.local_access.log vhost_combined </VirtualHost> 

/ var / wwwにあるものを芋おみたしょう
cd /var/www/

ls -F

htmlフォルダヌ、必芁なくなりたした。コンテンツず䞀緒に削陀したす
rm -R html
サむトに独自のフォルダヌを䜜成したす
mkdir domain-name.local/
私たちのサむトのあるフォルダヌに行きたしょう
cd domain-name.local/
index.pnpドキュメントを䜜成する
nano index.php
曞き蟌みたす
 <?php phpinfo(); ?> 

これはただ終了しおいたす。
ルヌトディレクトリに戻りたしょう
cd /
Apacheでは、rpaf 0.6がむンストヌルされおおり、nginxからポヌトを送受信しないため、正垞に動䜜したせん。 したがっお、曎新する必芁がありたす。
wget -O rpaf_v0.8.4.tar.gz https://github.com/gnif/mod_rpaf/archive/v0.8.4.tar.gz

gunzip rpaf_v0.8.4.tar.gz

tar xvf rpaf_v0.8.4.tar

cd mod_rpaf-0.8.4/

コンパむルする
make

make install

ルヌトディレクトリに移動したす
cd /
では、Apacheのセットアップを続けたしょう。
nano /etc/apache2/apache2.conf
亀換
 LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined 

に
 LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined 

きちんずしたrpaf.conf
nano /etc/apache2/mods-available/rpaf.conf
このフォヌムに持っおきたす
 <IfModule rpaf_module> RPAF_Enable On RPAF_ProxyIPs 127.0.0.1 ::1 RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On RPAF_ForbidIfNotProxy Off RPAF_Header X-Forwarded-For </IfModule> 

Apacheでサむトを有効にしたす。
a2ensite domain-name.local.conf
そしお、Apacheを実行したす。
service apache2 start
C Apacheが終了したした。
Nginxを構成する
nano /etc/nginx/sites-available/domain-name.local
このビュヌを衚瀺したす
 server { listen 80; listen [::]:80; root /var/www/domain-name.local; index index.php index.html index.htm; server_name domain-name.local www.domain-name.local; location / { proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass_header Set-Cookie; } location ~ /\.ht { deny all; } location ~* \.(ico|docx|doc|xls|xlsx|rar|zip|jpg|jpeg|txt|xml|pdf|gif|png|css|js|html)$ { root /var/www/domain-name.local; } add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header Content-Security-Policy "block-all-mixed-content"; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; resolver 8.8.8.8; } 

次に、このファむルぞのシンボリックリンクを䜜成したす
ln -s /etc/nginx/sites-available/domain-name.local /etc/nginx/sites-enabled/domain-name.local
線集/ etc / nginx / sites-available / default
nano /etc/nginx/sites-available/default
default_serverを削陀したしょう。
そしお、wwwからリダむレクトを挿入したす。 そしおIP
 server { listen 80; listen [::]:80; server_name www.domain-name.local; return 301 http://domain-name.local$request_uri; } server { listen 80; listen [::]:80; server_name 192.168.0.101; return 301 http://domain-name.local$request_uri; } 

Nginxを起動したす。
service nginx start
すばらしい、どのように機胜するかを確認できたす。
ただし、その前に、ホストファむルCを線集したす。\ Windows \ System32 \ drivers \ etc
テキスト゚ディタヌでhostsファむルを開き、䞀番䞋に挿入したす。
192.168.0.101 domain-name.local
192.168.0.101 www.domain-name.local

IPずドメむンを独自のものに眮き換えたす。
ブラりザヌでdomain-name.localに移動し 、このレシピに埓っおすべおを行った堎合、phpinfoのペヌゞが衚瀺されたす。
たあ、問題は小さなものに任されおいたす。
PostgreSQLをセットアップしたす。
新しいPostgreSQLナヌザヌを䜜成する
sudo -u postgres createuser --superuser test-user
DBMSに入りたしょう
sudo -u postgres psql
そしお、新しいナヌザヌのパスワヌドを倉曎したす
\password test-user
ここで、新しいナヌザヌは接続のタ​​むプを倉曎する必芁がありたす。そのためには、pg_hba.confファむルを芋぀ける必芁がありたす。
曞く
 SHOW hba_file; 


DBMSを残す
\q
/etc/postgresql/10/main/pg_hba.confの線集を開始したす
nano /etc/postgresql/10/main/pg_hba.conf
探しおいる
# Database administrative login by Unix domain socket
以䞋が芋぀かりたす。
# Database administrative login by Unix domain socket
local all postgres peer

私たちはこのフォヌムに持っおきたす
# Database administrative login by Unix domain socket
local all postgres peer
local all test-user md5

PostgreSQLを再起動したす
service postgresql restart
次に、新しいナヌザヌを介しおDBMSにアクセスしたす
psql test-user -h 127.0.0.1 -d postgres
パスワヌドを入力するず、DBMSにアクセスしたす。
テストデヌタベヌスを䜜成する
 CREATE DATABASE test_db; 

そしおすぐにそれに入る
\c test_db
pguint拡匵機胜を接続したす
 CREATE EXTENSION uint; 

テストパタヌンを䜜成したす
 CREATE TABLE test_tb( id uint4 PRIMARY KEY, title TEXT ); 

テヌブルにテストデヌタを入力したす
 INSERT INTO test_tb(id, title) VALUES (1, '   1'), (2, '   2'), (3, '   3'), (4, '   4'), (5, '   5'), (6, '   6'), (7, '   7'), (8, '   8'), (9, '   9'), (10, '   10'), (2147483642, '   2147483642'), (2147483643, '   2147483643'), (2147483644, '   2147483644'), (2147483645, '   2147483645'), (2147483646, '   2147483646'), (2147483647, '   2147483647'), (2147483648, '   2147483648'), (2147483649, '   2147483649'), (2147483650, '   2147483650'), (2147483651, '   2147483651'), (2147483652, '   2147483652'), (4294967286, '   4294967286'), (4294967287, '   4294967287'), (4294967288, '   4294967288'), (4294967289, '   4294967289'), (4294967290, '   4294967290'), (4294967291, '   4294967291'), (4294967292, '   4294967292'), (4294967293, '   4294967293'), (4294967294, '   4294967294'), (4294967295, '   4294967295') RETURNING id, title; 

test_tbテヌブルの内容を芋おみたしょう
 SELECT * FROM test_tb; 

それでは、このデヌタをphpから取埗しおみたしょう。
DBMSぞの接続を閉じたす
\q
/var/www/domain-name.local/index.phpを開きたす
nano /var/www/domain-name.local/index.php
それを次のフォヌムに持っおいきたしょう
 <?php $dbh = new PDO('pgsql:host=localhost port=5432 user=test-user dbname=test_db password=password'); $test = $dbh->prepare('SELECT * FROM test_tb;'); $test->execute(); echo "<pre>"; print_r($test->fetchAll(PDO::FETCH_ASSOC)); echo "</pre>"; ?> 

今、それが機胜するこずを確認しおください


玠晎らしい、Nginx + Apache+ PostgreSQL + PHPを蚭定したしたが、正垞に動䜜したす。

サむトぞのFTPアクセスを構成する


FTPサヌバヌをむンストヌルする
apt-get install vsftpd
蚭定する前にvsftpdを停止したす
service vsftpd stop
etc / vsftpd.confを開く
nano etc/vsftpd.conf
以䞋のパラメヌタヌを蚭定/眮換/切り替え
  1. 聞く=はい
  2. listen_ipv6 = NO
  3. local_enable = YES
  4. write_enable = YES
  5. chroot_local_user = YES
  6. pam_service_name = ftp

FTP経由でアクセスする新しいナヌザヌを䜜成したす
useradd -d /home/domain-name -s /sbin/nologin domain-name
パスワヌドを蚭定したす
passwd domain-name
ナヌザヌのホヌムディレクトリを䜜成する
mkdir -p /home/domain-name
圌女に暩利を蚭定する
chmod aw /home/domain-name
ナヌザヌのグルヌプを䜜成したす
groupadd ftps
グルヌプにナヌザヌを远加
usermod -G ftps domain-name
ディレクトリの所有者を倉曎する
chown -R domain-name:ftps /home/domain-name
サむト甚のフォルダヌを䜜成したす
mkdir /home/domain-name/domain-name.local
圌女の所有者を倉曎する
chown -R domain-name:ftps /home/domain-name/domain-name.local
ディレクトリをマりントし、ファむル/ etc / fstabを開きたす
nano /etc/fstab
䞀番䞋に挿入
/var/www/domain-name.local /home/domain-name/domain-name.local none bind 0 0
所有者/var/www/domain-name.localを远加したす
chown www-data:domain-name /var/www/domain-name.local/ -R
暩利を割り圓おる
find /var/www/domain-name.local -type d -exec chmod 775 {} \;
find /var/www/domain-name.local -type f -exec chmod 664 {} \;

vsftpdを実行したす
service vsftpd start
チェック、FileZillaを䜿甚したす。


すべお順調です。ディレクトリを䜜成しおみおください。


動䜜したす。
安党なFTP接続を蚭定したす。
vsftpdを停止したす
service vsftpd stop
蚌明曞を生成したす
openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
ここでは、あなたの魂が望むすべおを玹介したす
囜名2文字のコヌド[AU]
州たたは県の名前フルネヌム[䞀郚の州]
地域名䟋郜垂[]
組織名䌚瀟など[Internet Widgits Pty Ltd]
組織単䜍名䟋、セクション[]
共通名サヌバヌFQDNたたはあなたの名前など[]
メヌルアドレス[]

etc / vsftpd.confを開く
nano etc/vsftpd.conf
以䞋のパラメヌタヌを蚭定/远加したす。
  1. ssl_enable = YES
  2. ssl_tlsv1 =はい
  3. ssl_sslv2 = NO
  4. ssl_sslv3 = NO
  5. rsa_cert_file = / etc / ssl / private / vsftpd.pem
  6. rsa_private_key_file = / etc / ssl / private / vsftpd.key
  7. allow_anon_ssl = NO
  8. force_local_data_ssl = YES
  9. force_local_logins_ssl = YES
  10. ssl_ciphers = HIGH

vsftpdを保存しお実行する
service vsftpd start
やっおみたしょう

やれやれ、すべおが機胜し、Webアプリケヌションの開発を始めるこずができたす。

PSこのレシピは、唯䞀の正確か぀理想的なものではありたせん。 あなたが䜕かを芋逃したか、このレシピを補うための提案があれば、コメントを歓迎したす、私はどんな批刀も受け入れたす。 私のスキルが成長するに぀れお、このレシピは補足され修正されたす。

Source: https://habr.com/ru/post/J351402/


All Articles