--- title: VirtualBoxでCentOS上のApacheでリバースプロキシしてHTMLを書き換えてHello WorldをCrazy Worldにする tags: CentOS VirtualBox Apache author: the1031hiroto slide: false --- #はじめに [VirtualBoxでUbunts上のnginxでリバースプロキシしてHTMLを書き換えてHello WorldをCrazy Worldにする](https://qiita.com/the1031hiroto/items/33a68f28e80f72c9091b)のApacheバージョンです。 VirtualBox初心者なのでそっちの手順もメモです。 [「ApacheでリバースプロキシしてHTMLを書き換え」はここからです。]() # Virtualboxで新規作成 ![2019-09-12 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/26608313-aa6b-b29b-31be-8407de4c56d6.png) # 適当に名前をつける ![2019-09-12 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/b2ea92d0-899d-ff46-514b-2a838384564f.png) # あとはデフォルトのまま次へを連打 # ネットワークアダプター1でポートフォワーディング ![2019-09-12 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/b6de3830-97aa-ca90-a1f4-efec28aba6ec.png) ![2019-09-12 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/f1ab5ab7-3d8c-2db3-e30e-17a2b8e255ad.png) # ネットワークアダプター2を有効にしてHost-Onlyを選ぶ ![2019-09-12 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/deb9903c-903f-509a-2c87-963a319e99d3.png) # ストレージにCentoosを選択 [CentOSダウンロード元](https://www.centos.org/download/mirrors/) ![2019-09-12 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/3c3c847f-dbe8-7bdf-4c16-2d765c337d49.png) ![2019-09-12 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/c9e293ec-f070-7735-871d-11a95e43654b.png) # 起動してInstallする ![2019-09-12 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/2402992f-cb74-e3c3-9f4e-1e4879a729a3.png) # 日本語を選択(左下の検索ボックスに「J」を入力ですぐ出る) ![2019-09-12 (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/968c1305-ff74-1aeb-a22a-c2b808747f19.png) ![2019-09-12 (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/77277eb2-83f2-83ed-0274-c7acb61d4a0e.png) # インストール先を選択 ![2019-09-12 (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/fac662ad-0cd5-f372-0170-e50b9cd96375.png) # ネットワークON(emp0s3とemp0s8両方) ![2019-09-12 (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/6a14a28f-3a90-6777-fe3d-1e32ee09fe07.png) # ユーザーとパスワードを作成 ![2019-09-12 (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/ba8e60c7-18e9-7f5b-676c-3bf75b06ea45.png) ![2019-09-12 (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/9025b164-8164-bf08-a487-f08ca5457f12.png) # インストールが終わったら再起動 ![2019-09-12 (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/3762bf3d-ea54-9896-0847-543daa5a3b22.png) # emp0s8のIPにrloginで接続 ![2019-09-12 (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/97da1c8f-d6d0-d589-cbb8-30d0f50b0186.png) ![2019-09-12 (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/2054db78-b4ae-eb15-388a-5452fc26b501.png) # enp0s8が有効になっていない場合 ``` nmcli connection modify enp0s8 autoconnect yes ``` # yumプロキシ設定(もしプロキシがあれば) ``` [root@localhost ~]# vi /etc/yum.conf ``` ```/etc/yum.conf proxy=http:/hoge.co.jp:18080 #http:/hoge.co.jp:18080は自分の環境に合わせて変更してください ``` ![2019-09-12 (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/9bd5b45d-ad07-a1c1-c92d-08a211587c63.png) # httpdをインストールして起動 ``` [root@localhost ~]# yum install httpd [root@localhost ~]# systemctl start httpd.service ``` # firewalの80番ポートをオープン ``` [root@localhost ~]# firewall-cmd --add-service=http --permanent [root@localhost ~]# firewall-cmd --reload /usr/sbin/setsebool httpd_can_network_connect true ``` # アクセスしてみる ![2019-09-13 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/45d1e2dc-5878-c76f-d7b7-ab1a183c9737.png) # ホストOSのフォルダを共有 [VirtualBoxで共有フォルダを作ってゲストOSとファイル共有する](http://itemy.net/?p=1355) # マウントしたディレクトリの権限グループ(vboxsf)にapacheの実行ユーザー(apache)を追加 ``` [root@localhost ~]# gpasswd -a apache vboxsf [root@localhost ~]# systemctl restart httpd.service ``` # ApacheのDocumentRootにさっきマウントしたディレクトリを設定 ``` [root@localhost ~]# vi /etc/httpd/conf/httpd.conf ``` ```/etc/httpd/conf/httpd.conf # DocumentRoot "/var/www/html" DocumentRoot "/media/sf_extendedui/" ・・・ # Options Indexes FollowSymLinks ・・・ ``` ``` [root@localhost ~]# systemctl restart httpd.service ``` # SELinuxが有効な場合は無効にする ``` [root@localhost ~]# vi /etc/selinux/config ``` ```/etc/selinux/config SELINUX=disabled ← enforcing から disabled に変更 ``` ``` [root@localhost ~]# shutdown -r now ``` # Apacheのモジュール設定(置換機能有効化) ``` [root@localhost ~]# vi /etc/httpd/conf.modules.d/00-base.conf ``` ```/etc/httpd/conf.modules.d/00-base.conf #LoadModule request_module modules/mod_request.so LoadModule sed_module modules/mod_sed.so #LoadModule speling_module modules/mod_speling.so ``` # リバースプロキシとHTML書き換え設定 [http://localhost:8080/hello/](http://localhost:8080/hello/)にアクセスされたら[http://localhost:3000/world/](http://localhost:3000/world/)のHTMLを表示する OutputSed "s/[置き換え元の文字列]/[置き換えたい文字列]/g" ``` [root@localhost ~]# vi /etc/httpd/conf.d/rproxy.conf ``` ```/etc/httpd/conf.d/rproxy.conf ProxyRequests Off Require all granted ServerName localhost:8080 ProxyPass /hello http://localhost:3000/world/ ProxyPassReverse /hello http://localhost:3000/world/ AddOutputFilterByType Sed text/html php asp jsp OutputSed "s/Hello/Crazy/g" ``` # nodejsをインストール ``` [root@localhost ~]# yum install epel-release [root@localhost ~]# yum install nodejs npm ``` # firewalの3000番ポートをオープン ``` [root@localhost ~]# firewall-cmd --zone=public --add-port=3000/tcp --permanent [root@localhost ~]# firewall-cmd --reload ``` # nodeで立ち上げるHTMLを準備 ```html:hello.html Hello World

Hello World

``` ```javascript:hello.js const http = require('http'); const fs = require('fs'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; // res.setHeader('Content-Type', 'text/plain'); // res.end('Hello World!\n'); fs.readFile('hello.html','UTF-8', (error, data)=>{ res.writeHead(200,{'Content-Type':'text/html'}); res.write(data); res.end(); }); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); ``` # nodeで立ち上げて[http://localhost:8080/hello](http://localhost:8080/hello)にアクセス ``` [root@localhost ~]# node hello.js Server running at http://127.0.0.1:3000/ ``` # Dockerでやりたい