[macOS15] apache2 メモ
2:/Users/ユーザーID のアクセス権
3:/Users/ユーザーID/Sites のアクセス権
4:httpd-userdir.confの設定
5:httpd-vhosts.confの設定
6:httpd.confの設定
7: logファイルの設定
8:/etc/hostsの設定
9:/Library/WebServer/Documentsのアクセス権
10:_wwwグループに自分を追加する
11:/Library/WebServer/Documentsのファイル処理
1:/Users のアクセス権
2:/Users/ユーザーID のアクセス権
サンプルコード
行番号 | ソース |
---|---|
001 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
002 | /bin/echo "STAT_USR(console): $STAT_USR" |
003 | /usr/bin/sudo /bin/chmod 755 "/Users/${STAT_USR}" |
AppleScriptで生成しました |
3:/Users/ユーザーID/Sites のアクセス権
サンプルコード
行番号 | ソース |
---|---|
001 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
002 | /bin/echo "STAT_USR(console): $STAT_USR" |
003 | /usr/bin/sudo -u "$STAT_USR" /bin/mkdir -p "/Users/${STAT_USR}/Sites" |
004 | /usr/bin/sudo -u "$STAT_USR" /bin/chmod 755 "/Users/${STAT_USR}/Sites" |
005 | /usr/bin/sudo -u "$STAT_USR" /usr/bin/chgrp _www "/Users/${STAT_USR}/Sites" |
006 | /usr/bin/sudo -u "$STAT_USR" /usr/bin/touch "/Users/${STAT_USR}/Sites/.localized" |
AppleScriptで生成しました |
4:httpd-userdir.confの設定
サンプルコード
行番号 | ソース |
---|---|
001 | UserDir Sites |
002 | Include /private/etc/apache2/users/*.conf |
003 | <IfModule bonjour_module> |
004 | RegisterUserSite customized-users |
005 | </IfModule> |
AppleScriptで生成しました |
5:httpd-vhosts.confの設定 Adobeのヘルプ文書のリダイレクト用
サンプルコード
行番号 | ソース |
---|---|
001 | <VirtualHost *:80> |
002 | ServerName localhost |
003 | DocumentRoot /Library/WebServer/Documents |
004 | <Directory /Library/WebServer/Documents> |
005 | Options Indexes FollowSymLinks |
006 | AllowOverride All |
007 | Require all granted |
008 | </Directory> |
009 | </VirtualHost> |
010 | <VirtualHost *:80> |
011 | ServerName idiom-q-win-1 |
012 | Redirect / https://helpx.adobe.com/ |
013 | </VirtualHost> |
AppleScriptで生成しました |
6:httpd.confの設定
サンプルコード
行番号 | ソース |
---|---|
001 | #を取り除いて有効にする |
002 | #LoadModule include_module libexec/apache2/mod_include.so |
003 | #LoadModule rewrite_module libexec/apache2/mod_rewrite.so |
004 | #LoadModule userdir_module libexec/apache2/mod_userdir.so |
005 | #Include /private/etc/apache2/extra/httpd-userdir.conf |
006 | #Include /private/etc/apache2/extra/httpd-vhosts.conf |
007 | ↓ |
008 | LoadModule include_module libexec/apache2/mod_include.so |
009 | LoadModule rewrite_module libexec/apache2/mod_rewrite.so |
010 | LoadModule userdir_module libexec/apache2/mod_userdir.so |
011 | Include /private/etc/apache2/extra/httpd-userdir.conf |
012 | Include /private/etc/apache2/extra/httpd-vhosts.conf |
013 | |
014 | #Indexesを削除する |
015 | Options FollowSymLinks Multiviews Indexes |
016 | ↓ |
017 | Options FollowSymLinks Multiviews |
018 | |
019 | #リダイレクト先を変更する #をとって有効にする |
020 | #ErrorDocument 404 / |
021 | ↓ |
022 | ErrorDocument 404 /missing.html |
AppleScriptで生成しました |
7: logファイルの設定
サンプルコード
行番号 | ソース |
---|---|
001 | /usr/bin/sudo /bin/mkdir -p "/private/var/log/apache2" |
002 | /usr/bin/sudo /usr/bin/touch "/private/var/log/apache2/error_log" |
003 | /usr/bin/sudo /usr/bin/touch "/private/var/log/apache2/access_log" |
004 | /usr/bin/sudo /usr/bin/touch "/private/var/log/apache2/combined_log" |
005 | /usr/bin/sudo /usr/sbin/chown -Rf www "/private/var/log/apache2" |
006 | /usr/bin/sudo /bin/chmod 644 "/private/var/log/apache2/error_log" |
007 | /usr/bin/sudo /bin/chmod 644 "/private/var/log/apache2/access_log" |
008 | /usr/bin/sudo /bin/chmod 644 "/private/var/log/apache2/combined_log" |
AppleScriptで生成しました |
8:/etc/hostsの設定
サンプルコード
行番号 | ソース |
---|---|
001 | ## |
002 | # Host Database |
003 | # |
004 | # localhost is used to configure the loopback interface |
005 | # when the system is booting. Do not change this entry. |
006 | ## |
007 | 127.0.0.1 localhost |
008 | 255.255.255.255 broadcasthost |
009 | ::1 localhost |
010 | #Adobeのヘルプのリンク切対応で追加 |
011 | 127.0.0.1 idiom-q-win-1 |
AppleScriptで生成しました |
9:/Library/WebServer/Documentsのアクセス権
サンプルコード
行番号 | ソース |
---|---|
001 | /usr/bin/sudo /bin/chmod 775 "/Library/WebServer/Documents" |
002 | /usr/bin/sudo /usr/bin/chgrp _www "/Library/WebServer/Documents" |
AppleScriptで生成しました |
10:_wwwグループに自分を追加する
サンプルコード
行番号 | ソース |
---|---|
001 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
002 | /bin/echo "STAT_USR(console): $STAT_USR" |
003 | #ローカルアカウントを調べる |
004 | STR_LOCALUSER=$(/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'admin' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root') |
005 | /bin/echo "ローカルユーザーリスト: $STR_LOCALUSER" |
006 | ####WWWグループにユーザーを追加 |
007 | STR_GROUPS_USER=$(/usr/bin/dscl . read /Groups/_www GroupMembership) |
008 | if [[ $STR_GROUPS_USER == *"$STAT_USR"* ]]; then |
009 | echo "GroupMembershipに $STAT_USR はすでに含まれています" |
010 | else |
011 | echo "GroupMembershipに $STAT_USR は含まれていません" |
012 | /usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembership "$STAT_USR" |
013 | STR_USER_UUID=$(/usr/bin/dscl . -read "$HOME" GeneratedUID | awk 'NF > 1 {print $NF}') |
014 | /usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembers "$STR_USER_UUID" |
015 | /usr/bin/dscl . read /Groups/_www GroupMembership |
016 | /usr/bin/dscl . read /Groups/_www GroupMembers |
AppleScriptで生成しました |
11:/Library/WebServer/Documentsのファイル処理
404のリダイレクト用のブランクテキスト作成(セキュリティ対策)
マルチビュー出来るように『index.html.en』をリネームしておく
サンプルコード
行番号 | ソース |
---|---|
001 | /usr/bin/sudo -u "_www" /usr/bin/touch "/Library/WebServer/Documents/missing.html" |
002 | /usr/bin/sudo -u "_www" /bin/chmod 644 "/Library/WebServer/Documents/missing.html" |
003 | STR_DATE=$(/bin/date +"%Y%m%d") |
004 | /usr/bin/sudo -u "_www" /usr/bin/touch "/Library/WebServer/Documents/missing.html" |
005 | /usr/bin/sudo /bin/mv -f "/Library/WebServer/Documents/index.html.en" "/Library/WebServer/Documents/index.html.en.${STR_DATE}" |
AppleScriptで生成しました |
サンプル
サンプルコード
行番号 | ソース |
---|---|
001 | #!/bin/bash |
002 | #com.cocolog-nifty.quicktimer.icefloe |
003 | # |
004 | ################################################# |
005 | ###管理者インストールしているか?チェック |
006 | USER_WHOAMI=$(/usr/bin/whoami) |
007 | /bin/echo "実行ユーザー(whoami): $USER_WHOAMI" |
008 | if [ "$USER_WHOAMI" != "root" ]; then |
009 | /bin/echo "このスクリプトを実行するには管理者権限が必要です。" |
010 | /bin/echo "sudo で実行してください" |
011 | ### path to me |
012 | SCRIPT_PATH="${BASH_SOURCE[0]}" |
013 | /bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\"" |
014 | /bin/echo "↑を実行してください" |
015 | ###実行しているユーザー名 |
016 | CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }') |
017 | /bin/echo "コンソールユーザー(scutil): $CONSOLE_USER" |
018 | exit 1 |
019 | else |
020 | ###実行しているユーザー名 |
021 | CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }') |
022 | /bin/echo "コンソールユーザー(scutil): $CONSOLE_USER" |
023 | ###実行しているユーザー名 |
024 | HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}') |
025 | /bin/echo "実行ユーザー(HOME): $HOME_USER" |
026 | ###logname |
027 | LOGIN_NAME=$(/usr/bin/logname) |
028 | /bin/echo "ログイン名(logname): $LOGIN_NAME" |
029 | ###UID |
030 | USER_NAME=$(/usr/bin/id -un) |
031 | /bin/echo "ユーザー名(id): $USER_NAME" |
032 | ###STAT |
033 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
034 | /bin/echo "STAT_USR(console): $STAT_USR" |
035 | fi |
036 | |
037 | ######################################## |
038 | ##アパッチ用の処理 |
039 | #/Usersアクセス権 |
040 | /usr/bin/sudo /bin/chmod 755 "/Users" |
041 | |
042 | #ホームディレクトリのアクアセス権 |
043 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
044 | /bin/echo "STAT_USR(console): $STAT_USR" |
045 | /usr/bin/sudo /bin/chmod 755 "/Users/${STAT_USR}" |
046 | |
047 | #ユーザーSitesフォルダの処理 |
048 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
049 | /bin/echo "STAT_USR(console): $STAT_USR" |
050 | /usr/bin/sudo -u "$STAT_USR" /bin/mkdir -p "/Users/${STAT_USR}/Sites" |
051 | /usr/bin/sudo -u "$STAT_USR" /bin/chmod 755 "/Users/${STAT_USR}/Sites" |
052 | /usr/bin/sudo -u "$STAT_USR" /usr/bin/chgrp _www "/Users/${STAT_USR}/Sites" |
053 | /usr/bin/sudo -u "$STAT_USR" /usr/bin/touch "/Users/${STAT_USR}/Sites/.localized" |
054 | |
055 | #ローカルDocumentsフォルダのアクアセス権 |
056 | /usr/bin/sudo /bin/chmod 775 "/Library/WebServer/Documents" |
057 | /usr/bin/sudo /usr/bin/chgrp _www "/Library/WebServer/Documents" |
058 | |
059 | #リダイレクト用の空のテキストの用意 |
060 | /usr/bin/sudo -u "_www" /usr/bin/touch "/Library/WebServer/Documents/missing.html" |
061 | /usr/bin/sudo -u "_www" /bin/chmod 644 "/Library/WebServer/Documents/missing.html" |
062 | |
063 | #インデックス用のHTMLのファイル名の変更 |
064 | STR_DATE=$(/bin/date +"%Y%m%d") |
065 | /usr/bin/sudo -u "_www" /usr/bin/touch "/Library/WebServer/Documents/missing.html" |
066 | /usr/bin/sudo /bin/mv -f "/Library/WebServer/Documents/index.html.en" "/Library/WebServer/Documents/index.html.en.${STR_DATE}" |
067 | |
068 | #ログファイルを用意 |
069 | /usr/bin/sudo /bin/mkdir -p "/private/var/log/apache2" |
070 | /usr/bin/sudo /usr/bin/touch "/private/var/log/apache2/error_log" |
071 | /usr/bin/sudo /usr/bin/touch "/private/var/log/apache2/access_log" |
072 | /usr/bin/sudo /usr/bin/touch "/private/var/log/apache2/combined_log" |
073 | /usr/bin/sudo /usr/sbin/chown -Rf www "/private/var/log/apache2" |
074 | /usr/bin/sudo /bin/chmod 644 "/private/var/log/apache2/error_log" |
075 | /usr/bin/sudo /bin/chmod 644 "/private/var/log/apache2/access_log" |
076 | /usr/bin/sudo /bin/chmod 644 "/private/var/log/apache2/combined_log" |
077 | |
078 | |
079 | #WWWグループに自分のアカウントを追加する |
080 | STAT_USR=$(/usr/bin/stat -f%Su /dev/console) |
081 | /bin/echo "STAT_USR(console): $STAT_USR" |
082 | #ローカルアカウントを調べる |
083 | STR_LOCALUSER=$(/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'admin' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root') |
084 | /bin/echo "ローカルユーザーリスト: $STR_LOCALUSER" |
085 | ####WWWグループにユーザーを追加 |
086 | STR_GROUPS_USER=$(/usr/bin/dscl . read /Groups/_www GroupMembership) |
087 | if [[ $STR_GROUPS_USER == *"$STAT_USR"* ]]; then |
088 | echo "GroupMembershipに $STAT_USR はすでに含まれています" |
089 | else |
090 | echo "GroupMembershipに $STAT_USR は含まれていません" |
091 | /usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembership "$STAT_USR" |
092 | STR_USER_UUID=$(/usr/bin/dscl . -read "$HOME" GeneratedUID | awk 'NF > 1 {print $NF}') |
093 | /usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembers "$STR_USER_UUID" |
094 | /usr/bin/dscl . read /Groups/_www GroupMembership |
095 | /usr/bin/dscl . read /Groups/_www GroupMembers |
096 | fi |
097 | |
098 | #ユーザーディレクトリ設定 |
099 | STR_FILE_PATH="/private/etc/apache2/extra/httpd-userdir.conf" |
100 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#Include$/Include/' "$STR_FILE_PATH" |
101 | |
102 | #vhosts設定 |
103 | STR_FILE_PATH="/private/etc/apache2/extra/httpd-vhosts.conf" |
104 | #全行コメントアウトした上で |
105 | /usr/bin/sudo /usr/bin/sed -i '' 's/^/#/' "$STR_FILE_PATH" |
106 | # |
107 | STR_INS_TEXT="<VirtualHost *:80> |
108 | ServerName localhost |
109 | DocumentRoot /Library/WebServer/Documents |
110 | <Directory /Library/WebServer/Documents> |
111 | Options Indexes FollowSymLinks |
112 | AllowOverride All |
113 | Require all granted |
114 | </Directory> |
115 | </VirtualHost> |
116 | <VirtualHost *:80> |
117 | ServerName idiom-q-win-1 |
118 | Redirect / https://helpx.adobe.com/ |
119 | </VirtualHost>" |
120 | # |
121 | /bin/echo -e "$STR_INS_TEXT" | /usr/bin/sudo /usr/bin/tee -a "$STR_FILE_PATH" > /dev/null |
122 | |
123 | |
124 | #Cnf設定 |
125 | STR_FILE_PATH="/private/etc/apache2/httpd.conf" |
126 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#LoadModule include_module$/LoadModule include_module/' "$STR_FILE_PATH" |
127 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#LoadModule rewrite_module$/LoadModule rewrite_module/' "$STR_FILE_PATH" |
128 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#LoadModule userdir_module$/LoadModule userdir_module/' "$STR_FILE_PATH" |
129 | |
130 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#Include \/private\/etc\/apache2\/extra\/httpd-userdir.conf/Include \/private\/etc\/apache2\/extra\/httpd-userdir.conf/' "$STR_FILE_PATH" |
131 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#Include \/private\/etc\/apache2\/extra\/httpd-vhosts.conf$/Include \/private\/etc\/apache2\/extra\/httpd-vhosts.conf/' "$STR_FILE_PATH" |
132 | |
133 | /usr/bin/sudo /usr/bin/sed -i '' 's/^Options FollowSymLinks Multiviews Indexes$/Options FollowSymLinks Multiviews/' "$STR_FILE_PATH" |
134 | |
135 | /usr/bin/sudo /usr/bin/sed -i '' 's/^#ErrorDocument 404 \/$/ErrorDocument 404 /missing.html/' "$STR_FILE_PATH" |
136 | |
137 | |
138 | |
139 | |
140 | exit 0 |
AppleScriptで生成しました |
| 固定リンク