Category "Apache"を表示しています。
2019.4.4 木
公式ページからダウンロード いつものようにインストールしてXAMPP.appを立ち上げます。 こういったXAMPPのランチャーが出てくるので初期設定を行います。 起動 初期画面では右上に赤い丸があって起動していないことを示しています。なのでStartバーを押して起動させてみます。Startさせると黄色い丸になってうまくいくと緑色になります。緑色になったらIPアドレスが出てくるのでメモしておきます! 192.168.64.2 以前はlocalhostで初期の接続をしていましたが、VMになったみたいなので(おそらくDHCP的なもので発行された)IPアドレスで接続します。この例では、http://192.168.64.2/dashboard/にアクセスすることになります。 内包されているサービスは...
2018.11.6 火
リバースプロキシとかLBとかを挟むと当然アクセスIPアドレスがlocalhostになってしまうので、正しいアクセス元のグローバルIPアドレスを設定する必要があります。普通はX-Forwarded-ForというhttpヘッダにグローバルIPを渡して後方のwebサーバーでそれを拾うという段取りになります。 nginxの設定 nginxの方の設定ではserverのプロキシのヘッダに設定してあげます。$proxy_add_x_forwarded_forでグルーバルIPが拾えるのでそれをそのままX-Forwarded-Forにセットします。 server{ server_name example.com; return 301 https://$host$request_uri; proxy_set_...
2018.9.6 木
もうAPPサーバーみたいな使い方になってます。私個人の中では。 Apacheのインストール まずはインストール。SSLは今どき必須みたいなところがあるので入れておくけど、ポリシーによってAPPサーバーとしてlocalhostみたな感じで使うのだったら不要。 yum -y install httpd yum -y install mod_ssl 自動起動の設定 enableになっていればOK systemctl enable httpd.service systemctl list-unit-files 起動 systemctl start httpd.service 基本設定 バックアップとってから設定はじめよう。 cp -p /etc/httpd/conf/httpd.conf /etc/...
2018.8.1 水
時々しかやらないのでハマりました。要は普通の80のバーチャルホストとほとんど同じです。 NameVirtualHost *:443を設定するのを忘れないようにする。 Defaultはアスタリスクにする。(上記と共に) これで複数設定できるようになります。 最低限必要な設定は以下のような感じになります。 <VirtualHost *:443> DocumentRoot "/home/user/www" ServerName example.com:443 <Directory "/home/user/www"> AllowOverride All </Directory> RewriteEngine On RewriteOptions inherit Err...
2018.3.4 日
rsyncなどの実行をWEBページインターフェイスから実行しようと思うとそもそものユーザーではなくApacheがユーザーとして実行するので思うように実行できないことがります。更にSSHでリモート接続するときは実行ユーザーが全く違うので秘密鍵を読めないということになります。 しかし開発をしているとごく頻繁にいわゆるログインユーザーとApacheユーザーを併用したいという状況が訪れます。以下のユーザーを例にして説明します。 user: sampleuser Apache: apache PHPの実行ユーザーは以下で取得できます。 posix_getpwuid(posix_geteuid())['name'] cliでコマンドラインで実行すると想定通りのsampleuserとなりますが、webから...
2017.12.7 木
そのまま使えるRewite ホスト名を条件にするやつ ホスト名がexample.comの場合は、httpsにしてアクセスさせる RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2017.9.19 火
自動起動サービスのリスト表示 長年親しんできたchkconfigがいなくなってsystemctl list-unit-files -t serviceという長ったらしいコマンドになりました。 [CentOS6] chkconfig --list [CentOS7] systemctl list-unit-files -t service systemctl使うと長ったらしいので、 ls -al /usr/lib/systemd/system/ で一覧見た方が見やすいです。 表示の形式も変わっていわゆるランレベル的なものではなくて純粋に自動起動に関して「enabled | disabled | static」というふうにステータスを表示するようになってます。 .... httpd.servic...
2017.5.10 水
SSLを使っても結局はVirtualhostであることは変わりがないので、以下のように設定します。 ちなみにApache2.2の設定です。 ホストは80のホストを同じようにどんどん追加してゆきます。NameVirtualhost *:443これを忘れがち。 #/etc/httpd/conf.d/ssl.conf Listen 443 NameVirtualhost *:443 <VirtualHost _default_:443> DocumentRoot "/home/foo/www" ServerName foo.com:443 SSLEngine on SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertif...
2017.4.5 水
「HTTP/2」がついに登場! 開発者が知っておきたい通信の仕組み・新機能・導入方法 概要としてはこんな感じで、この先数年後にはデフォルトスタンダードになってるんじゃないかと思います。 環境の下準備 CentOS7のインストール直後にやっておくとよいかと。yum upgradeでだいたい全部入ってしまうようで環境によっては蛇足かもしれません。 yum -y upgrade yum -y update yum groupinstall "Base" yum groupinstall "Development tools" yum groupinstall "Japanese Support" yum install bind-utils yum install nmap FirewallとかS...
2017.3.20 月
Let’s Encrypt 総合ポータル 普通のSSLと何が違うのかというのはいろんなサイトさんで説明しているので詳しいことは割愛。とはいえ、この無料SSLの最大の特徴は3ヶ月で自動的に無効になり更新が必要というところです。認証はDVのみ。無料にて完全自動化なので、ヘルプデスクとかお問い合わせとかが全くないので自力でやらないとだめ。以上が簡単ではありますが、この無料SSLの特徴になります。 取得ツールのインストール SSLの発行はGithubからツールをインストールして行います。 cd /usr/local/ git clone https://github.com/certbot/certbot certbotが落ちてくればOKです。 続いて、certbotが依存するパッケージ...
2017.3.16 木
SSLを使う際にいちいちmod_sslインストールしなくちゃいけない感じが時代遅れ感じがします。 ちなみにApacheはServer version: Apache/2.4.6 (CentOS)でやってます。 mod_sslのインストール yum -y install mod_ssl mod_ssl.x86_64 1:2.4.6-45.el7.centosが2017年3月現在では落ちてきます。 /etc/httpd/conf.d/ssl.confができてくるので設定。 vi /etc/httpd/conf.d/ssl.conf 基本設定としては DocumentRoot "/var/www/html" ServerName www.example.com:443 でこと足りるのだけど、Apa...
2016.12.6 火
こんなもん入れないでほしいわ。 AddHandler php5.4-script .php
2016.11.22 火
基本形 503でやる。中身を見れるIPだけrewriteの条件文に入れる。という感じになってます。これ便利ですよ。 # /.htaccess ErrorDocument 503 /mente.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/mente.html RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] </IfModule> mente.htmlに画像などを使う場合は画像も一緒にIP制限かけられてしまうのでBase64に変換するなどして一枚のファイルに収めるの...
2016.11.15 火
WEBサーバーの負荷テストだったらApacheにデフォルトでついているabコマンドを使うのが最もいい感じです。例えばですが100人の同時アクセスを30回、指定のファイルに対して行うということができます。おそらくこの時代なのでもっとすごい負荷測定のWEBアプリみたいなものがあるんでしょうけど、とりあえずエンジニアの方々はこれで充分過ぎます。 abコマンドの使い方 500人の同時アクセスを5000回行う # ab -k -c 500 -n 5000 http://www.example.com/index.html Basic認証がかかっている場合 user: loginuser pass: xxxxx # ab -k -c 500 -n 5000 -A loginuser:xxxxx http...
2016.11.2 水
Apacheの設定を何年もやっているにも関わらず、PHPのいろんなアプリとかフレームワークの都合で見たこと無いエラーって出るもんですね。 PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 これに陥るとForbiddenになってアクセスできなくなります。 httpd.confのオーバーライドはするだけど、アクセス先ディレクトリより上位にある.htaccessの上書きはするのかしないのかといったら、本来しちゃいけないことになっているということです。 <Directory /> Options All AllowOverride None ←ココ </Direct...
2016.9.7 水
というこのタイトルはちょっと抽象度に欠けていて、本来は任意のプリケーションを任意の拡張子で実行するというものです。 index.aspxにアクセスするとこのファイルにかかれているphpが実行されるというものです。 .htaccessかhttpd.confみたいなファイルに以下を書きます。 AddHandler application/x-httpd-php .php .aspx 拡張子がhtmlの方が検索順位が有利になる的な話がそうとう昔にありましたが、そのときによくやっていた感じです。
2016.9.6 火
専用サーバーとか自宅サーバーとかでサーバー全体の設定を自分しかしない、つまりroot権限は自分しかもっていないという状態でApacheの設定とかどうするのかというのがいつもあって、都度都度用途によって変わるんですが、 <Directory /home/*/www> AllowOverride All Options All -Indexes <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </...
2016.8.15 月
WordPressとかSymfonyは軒並みルーティングしてしまうので普通にファイルを置こうと思うとちょっと困るのでそういうときは特定のディレクトリだけRewriteの除外をするのがよいです。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !^/poipoi/(.*)$ ←これ追加 RewriteRule . /in...
2016.8.15 月
mod rewriteは結構奥が深いです。通所のリダイレクト処理であるならばそれほどでもないのですが、深まれば底なしです。mod rewriteが通常のリダイレクトと違うのはApacheサイドの作業なのでURLを保持したままリダイレクトするということです。実際のファイルの階層構造では行ったり来たり、ジャンプしたり、端折ったり、無視したり…といろいろやっていますが、URL上では酷くクールに見えるというわけです。 mod rewriteの機能の特徴的な部分は、 あたかもマルチドメイン的な振る舞いをする。(あたかもではなく、そのままマルチドメインになるわけですが…) 動的なファイルをHTMLファイルなどに見せかけることができる。 ファイルやディレクトリ以外でもApacheの...
2016.8.15 月
ポートで判別する ポート80で来た場合はhttpsにリダイレクト RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] ポート8443に来た場合はhttpにリダイレクト RewriteEngine on RewriteCond %{SERVER_PORT} 8443 RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] SSLアクセラレーター(LB配下の場合とか) LBなどで冗長化されている場合は、リダイレクトループになったりしてかなりひどい目に合いました。 LBの機能に...
2016.8.9 火
こういう形式でURLをつくってあげると、ユーザー名、パスワードを入力しなくとも認証できます。 URL: http://example.com/hoge/huga/ username: USERNAME password: PASSOWRD の場合、 http://USERNAME:PASSOWRD@example.com/hoge/huga/ とはいえ、これ平文で流れるのでSSL配下でやった方がいいですね。ほんとうは。 いろいろ使いどころはあると思うのですが、認証のゆるい画像の直リン防止やそういうのかな。
2016.6.9 木
できるだけ最新に近い安定版を入れる。2016年現在でphp5.5とかphp5.6ぐらいです。php7 はまだBeta版(じゃないけど)それに近く資料が少ないので一応やめておく。 また、yum -y install phpを行うとLinuxでは現在php5.3がインストールされますが、これだと若干古いです。なのでリポジトリを調整して比較的新しいものを入れます。 既存の古いPHPをアンインストール # yum remove httpd php mysql-server 必要な場合はこれをやっておきます。 いずれにしろhttpd2.4じゃないとphp5.5は入らないので、ご注意ください。 # yum -y install php55 これでインストールできます。 # php -v PHP 5.5....
2016.6.9 木
古いhttpdをremoveしてから新しいものを再インストールすると Error: httpd24-tools conflicts with httpd-tools-2.2.31-1.7.amzn1.x86_64 というエラーがでることがあります。新しいhttp24-toolsが古いものとコンフリクト起こしているという話なんで、古い方を削除ということになります。 # rpm -qa | grep httpd httpd-tools-2.2.31-1.7.amzn1.x86_64 まだいることが確認できたら、 # yum remove httpd-tools-2.2.31-1.7.amzn1.x86_64 で削除。再度yumで新しいhttpdをインストールすればOKです。 # yum -y i...
2016.6.8 水
CentOS6でのApache2の設定ですが、基本httpd.confがあるApacheだったらだいたい同じ設定でいけるかと思います。Debian/Ubuntuだけちょっと違う感じになりますが、考え方は同じです。 AWSの「Amazon Linux AMI」でもだいたい同じような設定でなんとかなります。(ちなみにAWSのLinuxは、ec2-userでログインします。) Apacheのインストール httpdのインストールとかapacheのインストールとかいろいろ言い方がありますが、httpdはサーバー内のサービス名もしくはデーモン名ということになっていて、Apacheはミドルウェアそのものの名前ということになります。 前提としてセキュリティーグループやFWでポートの80はあけておきましょう...
2016.5.5 木
特定のホストのみ許可する <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> order deny,allow deny from all allow from 12.34.56.78 allow from saba.omnioo.com allow from localhost ここだとIP制限をジェネレートしてくれるので大変便利です。 http://www.htaccesseditor.com/#a_access httpd.confとかで設定する 余談ですが.htaccessを使わないで、httpd.confなどで設定する方法もあるというか.htacessはApacheの設定ファイルの拡張なので、...
2016.3.18 金
SSL証明書はなんであんなに高価なんですかね。仕事でつかっている限り10万円って全然高くないんですが、これ個人だと結構痛い金額です。SSL証明書取得の手続きも面倒です。 CentOS6でSSLの設定をする CentOS6ってmod_sslがデフォルトで入ってないんですかね。「yum list installed | grep mod_ssl」で確認。入ってないです。 # yum -y install mod_ssl インストールをすると/etc/httpd/conf.dにssl.confという新しいファイルが作成されていますので、これを編集します。 # vi /etc/httd/conf.d/ssl.conf SSL証明書などのパスとSSLを有効にするDocumentRootの設定をする D...
2016.3.17 木
インストール準備 リポジトリの調整 epelレポジトリを追加 rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm remiレポジトリを追加 rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm phpインストール yum -y install php --enablerepo=remi-php55 php php-mbstring php-devel php-gd php-mysql php-pgsql php-pear php-pecl-apc php-pecl-apc-devel php-pe...
2016.3.6 日
htmlのheadでリダイレクト metaでリダイレクトできます。htmlファイルそのものにアクセスした際に別のURLへリダイレクトします。同ホスト内の場合はルート相対でパスを書くだけでも大丈夫です。 <meta http-equiv="refresh" content="[秒];URL=[URL/PATH]"> この場合は5秒後に/sp/にジャンプします。 <meta http-equiv="refresh" content="5;URL=/sp/index.html"> Javascriptでリダイレクト 同ホスト内の場合はルート相対でパスだけ書いても大丈夫。 location.href='[URL]'; PHPでリダイレクト echoしたりvar_dumpする前...
2016.3.6 日
mod_rewriteとは Apacheの機能でURLを書き換えてしまうというものです。SEO対策的な風潮の中で大流行しました。.phpの拡張子より.htmlの方が優先度が高いなんていう都市伝説が横行していた時代です。実際そうだったのかそうじゃなかったのかはわからないです。 portで判断する ポート80(http)でアクセスしてきたらhttpsにリライトする。SSLアクセスだけのサイトなどはこのような形にしているかと思います。RewriteCondで条件をport 80で判定します。 RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,...
2016.3.2 水
Listenに別ポートを追加 Listen 80 Listen 8080 たいていバーチャルホスト使うかと思うんですが、そこにもポート追加。 NameVirtualHost *:80 NameVirtualHost *:8080 <VirtualHost *:80> ServerAdmin admin@example.com DocumentRoot /home/user/www ServerName example.jp </VirtualHost> <VirtualHost *:8080> ServerAdmin admin@example.com DocumentRoot /home/test/www ServerName test.example....