次のタスクは解決され、投稿で説明されます。
1. Apache + PHPをインストールします
2. PHPバージョンを選択する機能
3.他のサイトのディレクトリの読み取りに制限がある、異なるユーザーのサイトを操作する機能。
4. google pagespeedモジュールでNginxをインストールします
5. Nginxをリバースプロキシとして構成する
すべてのステージには説明と説明が含まれます。 投稿自体は、設定の順序を失わないように、それ自体のために書かれていますが、サーバー管理を理解し始める初心者には非常に役立ちます。 SSHのみを備えたUbuntu 16.0.4がサーバーとしてインストールされます。
ステップ1(Apache + PHPのインストール)
ルート権限でシェルを実行します。
sudo -i
Apacheをインストールします。
apt install -y apache2
キー
インストールプロセス中に、すべての質問に積極的に自動的に回答するために必要です。 たとえば、次を実行する場合:-y
apt install apache2
その後、インストールプロセス中に、本当にインストールするかどうかを尋ねられます。
phpのインストール(mod_phpなど)
apt install -y php libapache2-mod-php
この段階で、phpバージョン7をapacheモジュールとしてインストールします。
ステップ2(PHPバージョンを選択する可能性)
最初の段階で、Apache + PHPサーバーをインストールしました。これにより、PHPはApacheモジュールとして機能します。 PHPにはいくつかの動作モードがあります詳細情報は、 「CGI、FastCGI、PHP-FPM、およびmod_phpの概要」リンクに記載されています。
読むのが面倒な場合は、簡単に説明します。
1. mod_php-Apache自体がphpスクリプトを実行します。
長所:迅速に機能し、最小限の設定と知識が必要です
短所:スクリプトはapacheユーザーから実行されます(通常はwww-data)
2. CGI / FastCGI-Apacheサーバーはphp-cgiインタープリターアプリケーションスクリプトを実行し、次にphp-cgiインタープリターアプリケーションスクリプトがphpスクリプトを実行します
長所:スクリプトは任意のユーザーから実行され、他のアプリケーション(Nginx + PHP)と組み合わせて使用でき、PHP構成を個別に作成できます。
短所:速度、追加構成
3.PHP-FPMは、すぐに使用できるプールプロセスを常に保持するアップグレードされたfast-cgiサーバーです。
長所:任意のユーザーから実行されるスクリプト、速度、他のアプリケーションと組み合わせて使用できます(Nginx + PHP-FPM-最も一般的な実装)
短所:追加の構成、ポートが必要です。ポートはユーザーごとに開かれます。
CGI / FastCGIに焦点を当てます。 実際、多くの人はそれが最も遅いことを恐れているかもしれませんが、ほとんどの共有ホスティングでは、これが動作モードです(ispmanagerはこの特定の動作モードを使用します)。 必要なPHPバージョンをソースから収集する必要があります。
2.1ソースからのphpの構築
リポジトリの更新:
apt update
アセンブリに必要なパッケージをインストールします。
apt install -y make \ git autoconf \ lynx \ wget \ build-essential \ libxml2-dev \ libssl-dev \ libbz2-dev \ libcurl4-openssl-dev \ libpng12-dev \ libfreetype6-dev \ libxpm-dev \ libmcrypt-dev \ libmhash-dev \ libmysqlclient-dev \ libjpeg62-dev \ freetds-dev \ libjson-c-dev \ re2c \ zlib1g-dev \ libpcre3 \ libpcre3-dev \ unzip \ libxslt1-dev
\文字は、読みやすくするために改行として使用されます。
php用のフォルダーを作成します。
mkdir -p /opt/source/php mkdir -p /opt/php/
PHPソースが保存されるディレクトリに移動します
cd /opt/source/php
必要なバージョンのphpをダウンロードして解凍します。
wget -c http://php.net/get/php-5.6.18.tar.bz2/from/this/mirror -O php-5.6.18.tar.bz2 tar xvjf php-5.6.18.tar.bz2
最後のコマンドで、リンクphp-5.6.18をダウンロードし、 php-5.6.18.tar.bz2として保存しました
次に、アーカイブを解凍しました。
ダウンロードして解凍したphpのディレクトリに移動します
cd /opt/source/php/php-5.6.18
PHPを構成する
./configure --enable-cli \ --prefix=/opt/php/php-5.6.18 \ --disable-rpath \ --enable-calendar \ --enable-discard-path \ --enable-fastcgi \ --enable-force-cgi-redirect \ --enable-fpm \ --enable-ftp \ --enable-gd-native-ttf \ --enable-inline-optimization \ --enable-mbregex \ --enable-mbstring \ --enable-pcntl \ --enable-soap \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-zip \ --with-bz2 \ --with-curl \ --with-curl \ --with-freetype-dir \ --with-gd \ --with-gd \ --with-gettext \ --with-jpeg-dir \ --with-jpeg-dir=/usr/lib/ \ --with-libdir=/lib/x86_64-linux-gnu \ --with-libxml-dir=/usr \ --with-mcrypt \ --with-mhash \ --with-mysql \ --with-mysql \ --with-mysqli \ --with-mysqli \ --with-openssl \ --with-pcre-regex \ --with-pdo-mysql \ --with-png-dir=/usr \ --with-zlib \ --with-zlib-dir
--prefix = / opt / php / php-5.6.18の行に注意する価値があります 。 プロジェクトがコンパイルされるのはこのディレクトリです。 必要なphpモジュールとコンポーネントを自分で追加または削除することもできます。 ただし、構成には-enable-fastcgiおよび--enable-force-cgi-redirectが必要です。 構成後、phpを収集します
make make install
組み立てプロセスは非常に長いため、これについて心配する必要はありません。 アセンブリが完了すると、次のコマンドで確認できます。
/opt/php/php-5.6.18/bin/php -v
結果は次のようになります。
PHP 5.6.18(cli)(構築日:2017年6月8日15:59:20)
Copyright©1997-2016 The PHP Group
Zend Engine v2.6.0、著作権©1998-2016 Zend Technologies
2.2 Apacheの構成
次に、fastcgiモードでphpスクリプトを呼び出すためにApacheが必要です。 mod_fcgiのインストールとアクティブ化
apt install libapache2-mod-fcgid a2enmod cgi fcgid actions
Apacheサービスを再起動します
service apache2 restart
2.3 CGIスクリプトの作成
PHP-FastCGIを実行するラッパーを作成します
mkdir -p /opt/php/php-5.6.18/fcgi-bin
このフォルダーで、次の内容のphpというスクリプトを作成します
#!/opt/php/php-5.6.18/bin/php-cgi
個人的には、nanoエディターを使用しています。
nano /opt/php/php-5.6.18/fcgi-bin/php
コードを挿入し、CTRL + Xを終了して、変更を確認します。
ファイルを実行可能にします:
chmod +x /opt/php/php-5.6.18/fcgi-bin/php
同じディレクトリにphp.ini()ファイルを作成し、 /opt/source/php/php-5.6.18/ php.ini -productionをコピーできます。
2.4 Apacheのホスト構成
この例は、デフォルトの仮想ホスト設定を示します。
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html <IfModule mod_fcgid.c> IPCCommTimeout 7200 FcgidConnectTimeout 320 MaxRequestLen 25728640 FcgidMaxRequestsPerProcess 0 FcgidBusyTimeout 3600 FcgidOutputBufferSize 0 </IfModule> <FilesMatch "\.ph(p[3-5]?|tml)$"> SetHandler fcgid-script FCGIWrapper /opt/php/php-5.6.18/fcgi-bin/php </FilesMatch> ErrorLog /var/www/html/error.log CustomLog /var/www/html/access.log combined </VirtualHost> <Directory /var/www/html> Options +Includes +ExecCGI </Directory>
Apache設定を再起動します。
service apache2 reload
ステップ3(他のサイトのディレクトリの読み取りに制限がある、異なるユーザーのサイトを操作する機能。)
ユーザー権利を区別するために、Apacheには2つの異なるsuEXECおよびITKモジュールがあります。
それぞれの仕組みを考えてみましょう。
ITK-要求が到着すると、Apacheはルートプロセスの権限を継承するハンドラープロセスを作成しますが、コンテキストを確認した後、指定されたユーザーの権限を変更します。
suEXEC-要求が到着すると、Apacheは指定されたユーザーに代わって、ドメインのWebフォルダー内でCGIおよび同様のネイティブまたはサードパーティのスクリプト/プログラムを起動します。
私たちのバージョンのsuEXECは、作業の特定のアーキテクチャのために望ましいです。 suEXECをインストールする
apt install apache2-suexec-custom a2enmod suexec
適切な操作を行うには、suexecがディレクトリのパーミッションを正しく設定することが重要です。
ディレクトリをどのように配置するかは、自分で決める必要があります。例は例を示しており、最適ではありません。
フォルダ階層は次のとおりです。
|--/var/www/ - , 751 root
|----/php-bin - php
|------/php-5.6.18 - php-5.6.18
|--------php - php-5.6.18
|--------php.ini -
|--------php.ini -
|----/apache-cert - apache
ユーザーのフォルダーを作成します。
mkdir -p /var/www/users/admin mkdir -p /var/www/users/admin/domain.ru mkdir -p /var/www/users/admin/apache-log mkdir -p /var/www/users/admin/php-bin mkdir -p /var/www/users/admin/temp mkdir -p /var/www/users/admin/temp/php-session
phpの構成ファイルをコピーします。
cp /opt/php/php-5.6.18/fcgi-bin/php /var/www/users/admin/php-bin/php cp /opt/php/php-5.6.18/fcgi-bin/php.ini /var/www/users/admin/php-bin/php.ini
ユーザーを作成します(adminグループのすべてのユーザーがsudoからプログラムを実行するためのアクセス権を持っていることに注意してください。したがって、adminを選択すると、sudoを実行する権限が自動的に与えられます。この例では、これは重要ではありません。 。
useradd -m -s /bin/bash admin passwd admin
フォルダーの所有者を設定します。
chown admin:admin -R /var/www/users/admin
ユーザーのルートディレクトリを設定します。
usermod -d /var/www/users/admin admin
Apacheで仮想ホストを構成します。
<VirtualHost *:8080> ServerAdmin webmaster@localhost DocumentRoot /var/www/users/admin/domain.ru SuexecUserGroup admin admin <IfModule mod_remoteip.c> RemoteIPHeader X-Forwarded-For RemoteIPHeader X-Real-IP RemoteIPInternalProxy 127.0.0.1 </IfModule> <ifmodule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] </ifmodule> <IfModule mod_fcgid.c> IPCCommTimeout 7200 FcgidConnectTimeout 320 MaxRequestLen 25728640 FcgidMaxRequestsPerProcess 0 FcgidBusyTimeout 3600 FcgidOutputBufferSize 0 </IfModule> <FilesMatch "\.ph(p[3-5]?|tml)$"> SetHandler fcgid-script FCGIWrapper /var/www/users/admin/php-bin/php </FilesMatch> ErrorLog /var/www/users/admin/apache-log/error.log CustomLog /var/www/users/admin/apache-log/access.log combined </VirtualHost> <Directory /var/www/users/admin/www> AllowOverride All Options +Includes +ExecCGI </Directory>
ユーザーのphp.ini設定で、session.save_pathを変更します
session.save_path = /var/www/users/admin/temp/php-session
Apacheを再起動します。
service apache2 restart
ステップ4(google pagespeedモジュールでNginxをインストールする)
Nginxでpagespeedをサポートするには、このモジュールでNginx自体を再構築する必要がありますが、後で追加の設定を登らないようにするには、最初にインストールする方が簡単です。
Apacheのポートを変更します。
/etc/apache2/ports.conf +
Apacheを再起動します。
service apache2 restart
ngnixをインストールします。
apt-get install nginx
PagespeedでNginxを構築する
最初に、ビルドする必要があるすべてのパッケージをインストールする必要があります。
apt install -y build-essential zlib1g-dev libpcre3 libpcre3-dev unzip libxslt1-dev libgd-dev libgeoip-dev
nginxソース用のフォルダーを作成します。
mkdir -p /opt/source/nginx cd /opt/source/nginx
pagespeedとpsolをダウンロードして解凍します。 Yt cnjbn g
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.11.33.4-beta.zip unzip v1.11.33.4-beta.zip cd ngx_pagespeed-1.11.33.4-beta wget https://dl.google.com/dl/page-speed/psol/1.11.33.4.tar.gz tar -xzvf 1.11.33.4.tar.gz
Psol自体がダウンロードされ、ngx_pagespeedでディレクトリに解凍されます。 Ngnixでフォルダーに移動します
cd /opt/source/nginx
ngnixのバージョンの確認(デフォルトでは、ubuntu 16.0.4は1.10.0をインストールします):
nginx -V
NバージョンのNGINXをダウンロードします。
wget https://nginx.ru/download/nginx-1.10.0.tar.gz tar -xvzf nginx-1.10.0.tar.gz
インストールされたものと同じパラメーターでnginxを収集しますが、最後に追加のモジュールを追加します:
cd /opt/source/nginx/nginx-1.10.0 ./configure \ --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads \ --add-module=/opt/source/nginx/ngx_pagespeed-1.11.33.4-beta \ --with-http_mp4_module
Nginxのビルド:
make make install
アセンブルされたNginxバイナリは、/ opt / source / nginx / nginx-1.10.0 / objs / nginxディレクトリにあります。 インストールするためには、現在の実行可能なNginxファイルをアセンブルされたファイルで置き換えるだけです。
Nginxを停止し、ファイルを置き換えて、再起動します。
service nginx stop
#(念のため)現在のnginxの名前をnginx_backupに変更します。
mv /usr/sbin/nginx /usr/sbin/nginx_backup
#その代わりに、新しくアセンブルされたバイナリを移動します。
mv /opt/source/nginx/nginx-1.10.0/objs/nginx /usr/sbin/nginx
nginxを再起動します:
service nginx start
pagespeedのキャッシュストレージフォルダーを作成します。
/var/www/temp/ /var/www/temp/page-speed/
httpセクションに/etc/nginx/nginx.confを追加します。
pagespeed on; pagespeed FileCachePath "/var/www/temp/page-speed/"; pagespeed EnableFilters combine_css,combine_javascript,rewrite_images,rewrite_css,rewrite_javascript,inline_images,recompress_jpeg,recompress_png,resize_images; pagespeed JpegRecompressionQuality 85; pagespeed ImageRecompressionQuality 85; pagespeed ImageInlineMaxBytes 2048; pagespeed LowercaseHtmlNames on;
ステップ5(Nginxをリバースプロキシとして構成)
Nginxをリバースプロキシとして設定するための多くの記事がインターネット上にあります。 トライアル設定オプションを提供します。
server { listen 80; server_name domain.ru; access_log /var/log/nginx.access_log; location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { root /var/www/users/admin/domain.ru; index index.html index.php; access_log off; expires 30d; error_page 404 = @prox; } location @prox{ proxy_pass 127.0.0.1:8880; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 90; proxy_read_timeout 90; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } location ~ /\.ht { deny all; } location / { proxy_pass 127.0.0.1:8880; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 90; proxy_read_timeout 90; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } }
ソース:
https://pro-gram.ru/nginx-apache-ubuntu.html
http://www.info-x.org/freebsd/programmy/apache_suexec_php_v_rezhime_cgi.html
http://adminunix.ru/nastrojka-php-5-2-cherez-fastcgi-i-php-5-3-kak-modul-apache2-na/
https://www.server-world.info/en/note?os=Ubuntu_16.04&p=httpd&f=14
http://webew.ru/posts/5351.webew
https://camouf.ru/blog-note/589/
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=32&CHAPTER_ID=04902&LESSON_PATH=3903.4897.4900.4902
http://www.info-x.org/freebsd/programmy/apache_suexec_php_v_rezhime_cgi.html
http://adminunix.ru/nastrojka-php-5-2-cherez-fastcgi-i-php-5-3-kak-modul-apache2-na/
https://www.server-world.info/en/note?os=Ubuntu_16.04&p=httpd&f=14
http://webew.ru/posts/5351.webew
https://camouf.ru/blog-note/589/
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=32&CHAPTER_ID=04902&LESSON_PATH=3903.4897.4900.4902