今までdockerを使っていなかったので使ってみようと思い導入して、環境を構築しているのですが
apacheのDocumentRootの設定でつまづいているので助けていただければ嬉しいです。
設定したいDocumentoRootは
/home/test/public_html/public_html/
にしたいです。
理由は本番環境のDocumentRootがそうだからです。
/var/www/html/配下であれば問題なく設定し、接続も成功するのですが、/home/配下に設定した途端、接続ができなくなるといった状況です。
/var/www/html/test/public_html/public_html/等にすれば接続は成功します。
ツリー構造
test
├── docker
│ ├── apache
│ │ ├── Dockerfile
│ │ └── conf
│ │ ├── 000-default.conf
│ │ ├── httpd.conf
│ │ └── php.ini
│ └── db
│ ├── Dockerfile
│ ├── conf
│ │ └── my.cnf
│ └── data
├── docker-compose.yml
└── src
以下ソースです
#docker-compose.yml version: '3' services: app: build: ./docker/apache depends_on: - db volumes: - ./src:/home/test/public_html/public_html working_dir: /home/test/public_html/public_html ports: - 8888:80 db: build: ./docker/db volumes: - ./docker/db/data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test TZ: 'Asia/Tokyo' ports: - 13306:3306
#Dockerfile FROM 'php:7.4-apache' RUN apt-get update RUN set -ex apk --no-cache add postgresql-dev libpq-dev RUN apt-get install -y vim htop libpq-dev libonig-dev RUN docker-php-ext-install mbstring pdo_mysql mysqli opcache RUN mkdir /home/test RUN mkdir /home/test/public_html RUN mkdir /home/test/public_html/public_html COPY ./conf/httpd.conf /usr/local/apache2/conf/ COPY ./conf/php.ini /usr/local/etc/php/ COPY ./conf/000-default.conf /etc/apache2/sites-available/
#httpd.conf ・ ・ ・ # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "/home/test/public_html/public_html" <Directory "/home/test/public_html/public_html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" ・ ・ ・
#000-default.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /home/test/public_html/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
httpd.confと000-default.conf両方にDocumentRootを設定していますが、検証した結果000-default.confの設定が反映されるみたいです。
ブラウザにて出力される結果
#Forbidden
You don't have permission to access this resource.
Apache/2.4.51 (Debian) Server at localhost Port 8888
アクセス権限がないと言われているみたいなので
/var/www/htmlのアクセス権限を確認すると
drwxrwxrwx 1 www-data www-data 4096 Nov 17 18:48 html
となっていたので
/home/test/public_html/public_htmlも同じく設定してみました。
drwxrwxrwx 7 www-data www-data 224 Nov 27 01:08 public_html
上記以外に何か設定が必要であれば教えていただきたいです。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/01 13:25
2021/12/01 13:54