Admin Apachectl

[macOS15] apache2 メモ

1:/Users のアクセス権
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 のアクセス権

サンプルコード

サンプルソース(参考)
行番号ソース
001/usr/bin/sudo /bin/chmod 755 /Users
AppleScriptで生成しました

2:/Users/ユーザーID のアクセス権

サンプルコード

サンプルソース(参考)
行番号ソース
001STAT_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 のアクセス権

サンプルコード

サンプルソース(参考)
行番号ソース
001STAT_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の設定

サンプルコード

サンプルソース(参考)
行番号ソース
001UserDir Sites
002Include /private/etc/apache2/users/*.conf
003<IfModule bonjour_module>
004       RegisterUserSite customized-users
005</IfModule>
AppleScriptで生成しました

5:httpd-vhosts.confの設定 Adobeのヘルプ文書のリダイレクト用

サンプルコード

サンプルソース(参考)
行番号ソース
001<VirtualHost *:80>
002ServerName localhost
003DocumentRoot /Library/WebServer/Documents
004<Directory /Library/WebServer/Documents>
005Options Indexes FollowSymLinks
006AllowOverride All
007Require all granted
008</Directory>
009</VirtualHost>
010<VirtualHost *:80>
011ServerName idiom-q-win-1
012Redirect / 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
008LoadModule include_module libexec/apache2/mod_include.so
009LoadModule rewrite_module libexec/apache2/mod_rewrite.so
010LoadModule userdir_module libexec/apache2/mod_userdir.so
011Include /private/etc/apache2/extra/httpd-userdir.conf
012Include /private/etc/apache2/extra/httpd-vhosts.conf
013
014#Indexesを削除する
015Options FollowSymLinks Multiviews Indexes
016
017Options FollowSymLinks Multiviews
018
019#リダイレクト先を変更する #をとって有効にする
020#ErrorDocument 404 /
021
022ErrorDocument 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##
007127.0.0.1 localhost
008255.255.255.255 broadcasthost
009::1             localhost
010#Adobeのヘルプのリンク切対応で追加
011127.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グループに自分を追加する
サンプルコード

サンプルソース(参考)
行番号ソース
001STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
002/bin/echo "STAT_USR(console): $STAT_USR"
003#ローカルアカウントを調べる
004STR_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グループにユーザーを追加
007STR_GROUPS_USER=$(/usr/bin/dscl . read /Groups/_www GroupMembership)
008if [[ $STR_GROUPS_USER == *"$STAT_USR"* ]]; then
009echo "GroupMembershipに $STAT_USR はすでに含まれています"
010else
011echo "GroupMembershipに $STAT_USR は含まれていません"
012/usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembership "$STAT_USR"
013STR_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"
003STR_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###管理者インストールしているか?チェック
006USER_WHOAMI=$(/usr/bin/whoami)
007/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
008if [ "$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
019else
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"
035fi
036
037########################################
038##アパッチ用の処理
039#/Usersアクセス権
040/usr/bin/sudo /bin/chmod 755 "/Users"
041
042#ホームディレクトリのアクアセス権
043STAT_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フォルダの処理
048STAT_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のファイル名の変更
064STR_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グループに自分のアカウントを追加する
080STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
081/bin/echo "STAT_USR(console): $STAT_USR"
082#ローカルアカウントを調べる
083STR_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グループにユーザーを追加
086STR_GROUPS_USER=$(/usr/bin/dscl . read /Groups/_www GroupMembership)
087if [[ $STR_GROUPS_USER == *"$STAT_USR"* ]]; then
088  echo "GroupMembershipに $STAT_USR はすでに含まれています"
089else
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
096fi
097
098#ユーザーディレクトリ設定
099STR_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設定
103STR_FILE_PATH="/private/etc/apache2/extra/httpd-vhosts.conf"
104#全行コメントアウトした上で
105/usr/bin/sudo /usr/bin/sed -i '' 's/^/#/' "$STR_FILE_PATH"
106#
107STR_INS_TEXT="<VirtualHost *:80>
108ServerName localhost
109DocumentRoot /Library/WebServer/Documents
110<Directory /Library/WebServer/Documents>
111Options Indexes FollowSymLinks
112AllowOverride All
113Require all granted
114</Directory>
115</VirtualHost>
116<VirtualHost *:80>
117ServerName idiom-q-win-1
118Redirect / 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設定
125STR_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
140exit 0
AppleScriptで生成しました

|

apache2 設定バックアップ

ダウンロード - apache2.zip

|

[apache]PDFのリンク先を転送する

AdobeのPDFのマニュアルにあるエラーになるリンク
202406080331472880x1800

http://idiom-q-win-1/

https://helpx.adobe.com/

転送する設定をします


1:hostsの設定
2:apache2の設定

1:hostsの設定
/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##
007127.0.0.1 localhost
008255.255.255.255 broadcasthost
009::1             localhost
010127.0.0.1       idiom-q-win-1
AppleScriptで生成しました


2:apache2の設定
2−1:httpd-vhosts.confの設定
/private/etc/apache2/extra/httpd-vhosts.conf
サンプルコード

サンプルソース(参考)
行番号ソース
001<VirtualHost *:80>
002    ServerName idiom-q-win-1
003    Redirect / https://helpx.adobe.com/
004</VirtualHost>
AppleScriptで生成しました

2−2:httpd.confの設定
/private/etc/apache2/httpd.conf

設定を以下のようにします
Virtual hosts行を探して
#Include となっているので
行頭の#を取ります

サンプルコード

サンプルソース(参考)
行番号ソース
001# Virtual hosts
002Include /private/etc/apache2/extra/httpd-vhosts.conf
AppleScriptで生成しました

|

WWWグループにユーザー(自分)を追加する


#!/bin/bash -e
#com.cocolog-nifty.quicktimer.icefloe
#################################################
###管理者インストールしているか?チェック
USER_WHOAMI=$(/usr/bin/whoami)
/bin/echo "実行ユーザー(whoami): $USER_WHOAMI"
if [ "$USER_WHOAMI" != "root" ]; then
/bin/echo "このスクリプトを実行するには管理者権限が必要です。"
/bin/echo "sudo で実行してください"
  ### path to me
SCRIPT_PATH="${BASH_SOURCE[0]}"
/bin/echo "/usr/bin/sudo \"$SCRIPT_PATH\""
/bin/echo "↑を実行してください"
  ###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
exit 1
else
  ###実行しているユーザー名
CONSOLE_USER=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/ { print $3 }')
/bin/echo "コンソールユーザー(scutil): $CONSOLE_USER"
  ###実行しているユーザー名
HOME_USER=$(/bin/echo "$HOME" | /usr/bin/awk -F'/' '{print $NF}')
/bin/echo "実行ユーザー(HOME): $HOME_USER"
  ###logname
LOGIN_NAME=$(/usr/bin/logname)
/bin/echo "ログイン名(logname): $LOGIN_NAME"
  ###UID
USER_NAME=$(/usr/bin/id -un)
/bin/echo "ユーザー名(id): $USER_NAME"
  ###STAT
STAT_USR=$(/usr/bin/stat -f%Su /dev/console)
/bin/echo "STAT_USR(console): $STAT_USR"
fi

#######
#ローカルアカウントを調べる
STR_LOCALUSER=$(/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'admin' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root')
/bin/echo "ローカルユーザーリスト:" "$STR_LOCALUSER"
####WWWグループにユーザーを追加
STR_GROUPS_USER=$(/usr/bin/dscl . read /Groups/_www GroupMembership)
if [[ $STR_GROUPS_USER == *"$CONSOLE_USER"* ]]; then
echo "GroupMembershipに $CONSOLE_USER はすでに含まれています"
else
echo "GroupMembershipに $CONSOLE_USER は含まれていません"
/usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembership "$CONSOLE_USER"
STR_USER_UUID=$(/usr/bin/dscl . -read "$HOME" GeneratedUID | awk 'NF > 1 {print $NF}')
/usr/bin/sudo /usr/bin/dscl . append /Groups/_www GroupMembers "$STR_USER_UUID"
/usr/bin/dscl . read /Groups/_www GroupMembership
/usr/bin/dscl . read /Groups/_www GroupMembers
fi


exit 0


|

[macOS14]apache2ローカル 少し修正

ダウンロード - apachectl.zip


macOS14のユーザールートアクセス権750に対応
ーー>755に変更することで Sitesフォルダにアクセスできます

詰め合わせ
07-設定変更 Indexes.applescript
06-apachectlログ削除.applescript
05-アクセス権.applescript
04-apachectl再読込.applescript
03-apachectl再起動.applescript
02-apachectlストップ.applescript
01-apachectlスタート.applescript


Screen_326x187_001

|

[macOS14]apache2ローカル

ダウンロード - apachectl4os14.zip


基本的には
[Macos13]apache2ローカル
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-44151c.html
から変更はない
『with administrator privileges』を削除して
macOS14でもタッチIDを使えるようにした
[AppleScript] do shell scriptでTouchIDを使う(macOS14対応)
https://quicktimer.cocolog-nifty.com/icefloe/2023/10/post-749bb4.html
[macos14]タッチIDを有効にする
https://quicktimer.cocolog-nifty.com/icefloe/2023/10/post-b3346a.html

|

[Macos13]apache2ローカル

【1】apachectlスタート
【2】apachectlストップ
【3】apachectl 再起動
【4】apachectl 設定再読み込みして起動
【5】apachectl ディレクトリ関係 基本のアクセス権
【6】apachectl ログ削除
【7】apachectl 基本設定(ユーザーディレクトリ)


ダウンロード - apachectl2.zip



【1】apachectlスタート
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-39c5a5.html
【2】apachectlストップ
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-96dbff.html
【3】apachectl 再起動
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-ff86c5.html
【4】apachectl 設定再読み込みして起動
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-c4f41f.html
【5】apachectl ディレクトリ関係 基本のアクセス権
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-e9d8fd.html
【6】apachectl ログ削除
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-16d4b4.html
【7】apachectl 基本設定(ユーザーディレクトリ)
https://quicktimer.cocolog-nifty.com/icefloe/2023/09/post-b2fa5e.html

|

【7】apachectl 基本設定(ユーザーディレクトリ)


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions
property refMe : a reference to current application

####WebServerディレクトリアクセス権
set strCommandText to "/usr/bin/sudo /bin/chmod 777 \"/Library/WebServer/Documents\""
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/chgrp www \"/Library/WebServer/Documents\""
do shell script strCommandText with administrator privileges
### Indexes MultiViews用にindexをリネーム
try
  set strCommandText to "/usr/bin/sudo /bin/mv -f \"/Library/WebServer/Documents/index.html.en\" \"/Library/WebServer/Documents/index.backup.html.en\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /bin/rm -f \"/Library/WebServer/Documents/index.html.en\""
  do shell script strCommandText with administrator privileges
end try
####共有サイトフォルダ作成
set strCommandText to "/usr/bin/sudo /bin/mkdir -p /Users/Shared/Sites"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod -Rf 755 /Users/Shared/Sites"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/chgrp -Rf www /Users/Shared/Sites"
do shell script strCommandText with administrator privileges

set strCommandText to "[[ -e \"/Library/WebServer/Documents/Shared\" ]] && /bin/echo true || /bin/echo false "
set boolFileExist to (do shell script strCommandText) as boolean
if boolFileExist is false then
  set strCommandText to "/usr/bin/sudo /bin/ln -s \"/Users/Shared/Sites\" \"/Library/WebServer/Documents/Shared\""
  do shell script strCommandText with administrator privileges
end if
########ローカルユーザー名取得
set strCommandText to "/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'admin' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root'"
set strCommandText to "/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root'"
set strLocalUser to do shell script strCommandText
set AppleScript's text item delimiters to "\r"
set listLocalUser to every text item of strLocalUser
set AppleScript's text item delimiters to ""
########ユーザーサイトフォルダ作成
repeat with itemLocalUser in listLocalUser
  set strLocalUser to itemLocalUser as text
  set strCommandText to "/usr/bin/sudo /bin/mkdir -p \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /usr/bin/touch \"/Users/" & strLocalUser & "/Sites/.localized\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /usr/sbin/chown -Rf " & strLocalUser & " \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /usr/bin/chgrp -Rf www \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /bin/chmod 755 \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  
  set strCommandText to "[[ -e \"/Library/WebServer/Documents/" & strLocalUser & "\" ]] && /bin/echo true || /bin/echo false "
  set boolFileExist to (do shell script strCommandText) as boolean
  if boolFileExist is false then
  set strCommandText to "/usr/bin/sudo /bin/ln -s \"/Users/" & strLocalUser & "/Sites\" \"/Library/WebServer/Documents/" & strLocalUser & "\""
  do shell script strCommandText with administrator privileges
  end if
end repeat


####ログファイル
set strCommandText to "/usr/bin/sudo /bin/mkdir -p /private/var/log/apache2"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/touch /private/var/log/apache2/error_log"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/touch /private/var/log/apache2/access_log"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/touch /private/var/log/apache2/combined_log"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/sbin/chown -Rf www /private/var/log/apache2"
do shell script strCommandText with administrator privileges

###アパッチ停止
set strCommandText to "/usr/bin/sudo /usr/sbin/apachectl stop"
do shell script strCommandText with administrator privileges
try
  set strCommandText to "/usr/bin/sudo /usr/sbin/apachectl stop -w /System/Library/LaunchDaemons/org.apache.httpd.plist"
  do shell script strCommandText with administrator privileges
end try
try
  set strCommandText to "/usr/bin/sudo /usr/sbin/apachectl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist"
  do shell script strCommandText with administrator privileges
end try

###設定変更の値を保存できるように一時的なアクセス権
set strCommandText to "/usr/bin/sudo /bin/chmod 777 /private/etc/apache2"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 777 /private/etc/apache2/httpd.conf"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 777 /private/etc/apache2/extra"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 777 /private/etc/apache2/extra/httpd-userdir.conf"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 777 /private/etc/apache2/users"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 777 /private/etc/apache2/users/*conf"
do shell script strCommandText with administrator privileges



#############################
##設定変更
#############################
####読み込むファイル
set ocidFilePath to refMe's NSString's stringWithString:"/private/etc/apache2/httpd.conf"
###ファイルの内容を読み込む
set listReadFile to refMe's NSString's stringWithContentsOfFile:ocidFilePath encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)

set ocidReadFile to item 1 of listReadFile

###可変テキスト(置き換えするため)
set ocidMutableString to refMe's NSMutableString's stringWithCapacity:0
ocidMutableString's setString:ocidReadFile


#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
###改行除去
ocidMutableString's replaceOccurrencesOfString:("Options FollowSymLinks Multiviews\n") withString:("Options FollowSymLinks Multiviews Indexes\n") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange

#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
###改行除去
ocidMutableString's replaceOccurrencesOfString:("#LoadModule userdir_module libexec/apache2/mod_userdir.so") withString:("LoadModule userdir_module libexec/apache2/mod_userdir.so") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange

#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
###改行除去
ocidMutableString's replaceOccurrencesOfString:("#LoadModule include_module libexec/apache2/mod_include.so") withString:("LoadModule include_module libexec/apache2/mod_include.so") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange
log ocidMutableString as text


#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
###改行除去
ocidMutableString's replaceOccurrencesOfString:("#LoadModule rewrite_module libexec/apache2/mod_rewrite.so") withString:("LoadModule rewrite_module libexec/apache2/mod_rewrite.so") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange
log ocidMutableString as text

#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
###改行除去
ocidMutableString's replaceOccurrencesOfString:("#LoadModule rewrite_module libexec/apache2/mod_rewrite.so") withString:("LoadModule rewrite_module libexec/apache2/mod_rewrite.so") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange
log ocidMutableString as text


#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
###改行除去
ocidMutableString's replaceOccurrencesOfString:("#CustomLog \"/private/var/log/apache2/combined_log\" combined") withString:("#CustomLog \"/private/var/log/apache2/combined_log\" combined") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange
log ocidMutableString as text



#########################
####内容を書き込む UTF8で書き込む
set boolFileWrite to (ocidMutableString's writeToFile:ocidFilePath atomically:false encoding:(refMe's NSUTF8StringEncoding) |error|:(missing value))



set ocidReadFile to ""
set ocidMutableString to ""
#############################
#############################
####読み込むファイル
set ocidFilePath to refMe's NSString's stringWithString:"/etc/apache2/extra/httpd-userdir.conf"
###ファイルの内容を読み込む
set listReadFile to refMe's NSString's stringWithContentsOfFile:ocidFilePath encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
set ocidReadFile to item 1 of listReadFile
###可変テキスト(置き換えするため)
set ocidMutableString to refMe's NSMutableString's stringWithCapacity:0
ocidMutableString's setString:ocidReadFile


#########################
###↑文字数を数える
set numCntNSMutableString to ocidMutableString's |length|()
###↑文字数全部でレンジにする
set ocidNsRange to {location:0, |length|:numCntNSMutableString}
####除去
ocidMutableString's replaceOccurrencesOfString:("#Include /private/etc/apache2/users") withString:("Include /private/etc/apache2/users") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange

#########################
####内容を書き込む UTF8で書き込む
set boolFileWrite to (ocidMutableString's writeToFile:ocidFilePath atomically:false encoding:(refMe's NSUTF8StringEncoding) |error|:(missing value))


####################################
####ユーザーサイト
####################################

set objFileManager to refMe's NSFileManager's defaultManager()
set strDirPath to "/private/etc/apache2/users"
set ocidNSString to refMe's NSString's stringWithString:strDirPath
set ocidURLPath to refMe's NSURL's fileURLWithPath:ocidNSString
set ocidFileList to objFileManager's contentsOfDirectoryAtURL:ocidURLPath includingPropertiesForKeys:{refMe's NSURLNameKey} options:(refMe's NSDirectoryEnumerationSkipsHiddenFiles) |error|:(missing value)


repeat with objFiles in ocidFileList
  set ocidReadFile to ""
  set strFilePath to objFiles's |path|() as text
  
  #############################
  #############################
  ####読み込むファイル
  set ocidFilePath to (refMe's NSString's stringWithString:strFilePath)
  ###ファイルの内容を読み込む
  set listReadFile to (refMe's NSString's stringWithContentsOfFile:ocidFilePath encoding:(refMe's NSUTF8StringEncoding) |error|:(reference))
  set ocidReadFile to item 1 of listReadFile
  ###可変テキスト(置き換えするため)
  set ocidMutableString to (refMe's NSMutableString's stringWithCapacity:0)
(ocidMutableString's setString:ocidReadFile)
  
  
  #########################
  ###↑文字数を数える
  set numCntNSMutableString to ocidMutableString's |length|()
  ###↑文字数全部でレンジにする
  set ocidNsRange to {location:0, |length|:numCntNSMutableString}
  ###改行除去
(ocidMutableString's replaceOccurrencesOfString:("Options Indexes MultiViews\n") withString:("Options Indexes MultiViews FollowSymLinks\n") options:(refMe's NSRegularExpressionSearch) range:ocidNsRange)
  
  #########################
  ####内容を書き込む UTF8で書き込む
  set boolFileWrite to (ocidMutableString's writeToFile:ocidFilePath atomically:false encoding:(refMe's NSUTF8StringEncoding) |error|:(missing value))
  
  
end repeat



###設定変更の値を保存できるように一時的なアクセス権 を戻す
set strCommandText to "/usr/bin/sudo /bin/chmod 755 /private/etc/apache2"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 755 /private/etc/apache2/httpd.conf"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 755 /private/etc/apache2/extra"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 755 /private/etc/apache2/extra/httpd-userdir.conf"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 755 /private/etc/apache2/users"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod 755 /private/etc/apache2/users/*conf"
do shell script strCommandText with administrator privileges

###設定読み込んでlaunchctl
set strCommandText to "/usr/bin/sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist"
do shell script strCommandText with administrator privileges
###スタート
set strCommandText to "/usr/bin/sudo /usr/sbin/apachectl graceful"
do shell script strCommandText with administrator privileges
delay 1
tell application "Safari"
  activate
  make new document with properties {name:"localhost"}
  tell front window
    open location "http://localhost"
  end tell
  delay 1
  tell front window
    open location "http://localhost"
  end tell
end tell

|

【6】apachectl ログ削除


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions


set strCommandText to "sudo /usr/sbin/apachectl stop"
do shell script strCommandText with administrator privileges



set strCommandText to "/usr/bin/sudo /bin/mkdir -pm 775 /private/var/log/apache2"
do shell script strCommandText with administrator privileges

set strCommandText to "/usr/bin/sudo /bin/rm /private/var/log/apache2/error_log"
do shell script strCommandText with administrator privileges

set strCommandText to "/usr/bin/sudo /bin/rm /private/var/log/apache2/access_log"
do shell script strCommandText with administrator privileges

set strCommandText to "/usr/bin/sudo /bin/rm /private/var/log/apache2/combined_log"
do shell script strCommandText with administrator privileges

set strCommandText to "/usr/bin/sudo /usr/bin/touch /private/var/log/apache2/error_log"
do shell script strCommandText with administrator privileges

set strCommandText to "/usr/bin/sudo /usr/bin/touch /private/var/log/apache2/access_log"
do shell script strCommandText with administrator privileges

set strCommandText to "/usr/bin/sudo /usr/bin/touch /private/var/log/apache2/combined_log"
do shell script strCommandText with administrator privileges


set strCommandText to "sudo chown -Rf _www /private/var/log/apache2"
do shell script strCommandText with administrator privileges

set strCommandText to "sudo chmod 666 /private/var/log/apache2/error_log"
do shell script strCommandText with administrator privileges

set strCommandText to "sudo chmod 666 /private/var/log/apache2/access_log"
do shell script strCommandText with administrator privileges

set strCommandText to "sudo chmod 666 /private/var/log/apache2/combined_log"
do shell script strCommandText with administrator privileges



set strCommandText to "sudo /usr/sbin/apachectl graceful"
do shell script strCommandText with administrator privileges



|

【5】apachectl ディレクトリ関係 基本のアクセス権


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

####ローカルサイト
set strCommandText to "/usr/bin/sudo /bin/chmod 777 \"/Library/WebServer/Documents\""
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/chgrp www \"/Library/WebServer/Documents\""
do shell script strCommandText with administrator privileges

####共有サイトフォルダ作成
set strCommandText to "/usr/bin/sudo /bin/mkdir -p /Users/Shared/Sites"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /bin/chmod -Rf 755 /Users/Shared/Sites"
do shell script strCommandText with administrator privileges
set strCommandText to "/usr/bin/sudo /usr/bin/chgrp -Rf www /Users/Shared/Sites"
do shell script strCommandText with administrator privileges


########ローカルユーザー名取得
set strCommandText to "/usr/bin/dscl . list /Users | grep -v '^_' | grep -v 'daemon' | grep -v 'nobody' | grep -v 'root'"
set strLocalUser to do shell script strCommandText
set AppleScript's text item delimiters to "\r"
set listLocalUser to every text item of strLocalUser
set AppleScript's text item delimiters to ""
########ユーザーサイトフォルダ作成
repeat with itemLocalUser in listLocalUser
  set strLocalUser to itemLocalUser as text
  set strCommandText to "/usr/bin/sudo /bin/mkdir -p \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /usr/bin/touch \"/Users/" & strLocalUser & "/Sites/.localized\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /usr/sbin/chown -Rf " & strLocalUser & " \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /usr/bin/chgrp -Rf www \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  set strCommandText to "/usr/bin/sudo /bin/chmod 755 \"/Users/" & strLocalUser & "/Sites\""
  do shell script strCommandText with administrator privileges
  
end repeat





|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom