2. 맥북m1(Big Sur)으로 AMP(apache, mysql, php) 개발 환경 설정하기

msi753·2021년 6월 2일
1

https://getgrav.org/blog/macos-bigsur-apache-multiple-php-versions
참고한 블로그이고
아래 내용은 거의 위의 내용을 직접해본거라고 생각하면된다
정리가 너무 잘되어 있다... 세상에...
한글로 검색한 글이 나오는데...
그것보다 훨씬 낫다! 추천추천

완료 후 개발환경
M1 MacBook Air
macOS Big Sur 11.4
apache 2.4.46
php 7.3.24
mysql 5.6
homebrew 3.1.9

맥에 이미 내장되어 있는 아파치와 php

# 아파치 설치 버전 확인
$ httpd -v
# php 설치 버전 확인
$ php -v
WARNING: PHP is not recommended
PHP is included in macOS for compatibility with legacy software.
Future versions of macOS will not include PHP.
PHP 7.3.24-(to be removed in future macOS) (cli) (built: May  8 2021 09:40:34) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.24, Copyright (c) 1998-2018 Zend Technologies

Xcode 커멘드라인 툴 설치

홈브루가 Xcode 커멘드라인 툴을 사용하기때문이다
$ xcode-select --install
$ xcode-select --version //확인

homebrew 설치

https://docs.brew.sh/Installation
얘는 git 설치에 필요했어서 이미 있다

# homebrew 설치 버전 확인
$ brew -v
Homebrew 3.1.9
Homebrew/homebrew-core (git revision 886a30f1ca; last commit 2021-06-03)
# homebrew 설치
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

This script installs Homebrew to its preferred prefix (/usr/local for macOS Intel, /opt/homebrew for Apple Silicon) so that you don’t need sudo when you brew install.
애플 실리콘에서 Homebrew를 설치하면 /opt/homebrew 경로로 설치되어 sudo 명령어가 더 이상 필요하지 않게 된다

wget 패키지 설치 및 심볼릭 링크 설정

얘는 했다가 심링크는 끊고 그냥
$ brew update
$ brew install wget
까지만 실행했다

# 패키지 검색하기
$ brew search wget
==> Formulae
wget                                     wgetpaste
# Homebrew는 Apple(또는 Linux 시스템)에서 제공하지 않는 유용한 패키지 관리자를 설치합니다.
$ brew install wget
# 설치된 패키지 목록
$ brew list
==> Formulae
gettext		libidn2		openssl@1.1	wget
git		libunistring	pcre2
# Homebrew는 전용 디렉토리에 패키지를 설치하고 /opt/homebrew 위치로 심볼릭 링크를 연결합니다. (윈도우에서 바로가기 설정을 하는 것과 비슷합니다.) 무슨 말이냐면... alternatives처럼 사용하는데, test2.2 와 test3.3 식으로 test라는 프로그램의 2.2버전과 3.3버전 바이너리를 모두 가지고 있을 때, 사용하고자하는 버전 바이너리의 심볼릭 링크를 test 라는 이름으로 만들어서 쓰는 겁니다.
# Homebrew 는 설치되는 패키지를 기본적으로 /opt/homebrew/Cellar 디렉터리에서 관리합니다. 
$ cd /opt/homebrew
$ find Cellar
Cellar/wget/1.21.1
Cellar/wget/1.21.1/bin/wget
Cellar/wget/1.21.1/share/man/man1/wget.1

# ls 원본파일경로 생성할링크경로
# 원래 /opt/homebrew/bin/wget 이렇게 경로가 있고
/opt/homebrew/Cellar/wget/1.21.1/bin/wget 이렇게 wget을 brew로 설치한 상황이다. 심볼릭 링크를 생성해준다.
# 
$ ls -l /opt/homebrew/bin/wget ../Cellar/wget/1.21.1/bin/wget
ls: ../Cellar/wget/1.21.1/bin/wget: No such file or directory
lrwxr-xr-x  1 immyeongsim  admin  30  6  4 13:44
/opt/homebrew/bin/wget -> ../Cellar/wget/1.21.1/bin/wget

brew 명령어

  • brew -v: 버전을 보여준다
  • brew list: 설치된 목록을 보여준다
  • brew search 패키지명: 다운받을 수 있는 패키지를 보여준다
  • brew doctor: 문제가 있으면 보여준다
  • brew install/ uninstall: 설치/ 삭제
  • brew tap/ untap 패키지명: 저장소 만들기/ 제거하기
  • brew unlink 패키지명: 페이지 링크 삭제하기

아파치 실행

내장되어 있는 아파치에서 만들다보니 sudo 명령어를 쓴다... (brew로 설치 안한 상태이다)
$ sudo apachectl start
localhost

아파치 설정

$ sudo vi /etc/apache2/httpd.conf

여기서 설정한 사항이 적용이 안된다... 왜 그러지...

https://shallwestudy.tistory.com/13
이 블로그처럼 순정 아파치를 쓰고 싶었는데 안된다😇

homebrew로 아파치 설치

참고 블로그
https://getgrav.org/blog/macos-bigsur-apache-multiple-php-versions

# 아파치 중지 및 자동 실행 스크립트 삭제
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

/System/Library/LaunchDaemons/org.apache.httpd.plist의 내용

<plist version="1.0">
<dict>
        <key>Disabled</key>
        <true/>
        <key>Label</key>
        <string>org.apache.httpd</string>
        <key>EnvironmentVariables</key>
        <dict>
                <key>XPC_SERVICES_UNAVAILABLE</key>
                <string>1</string>
                <key>OBJC_DISABLE_INITIALIZE_FORK_SAFETY</key>
                <string>YES</string>
        </dict>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/sbin/httpd-wrapper</string>
                <string>-D</string>
                <string>FOREGROUND</string>
        </array>
        <key>OnDemand</key>
        <false/>
</dict>
</plist>
# 아파치 설치하기
$ brew install httpd
==> Summary
🍺  /opt/homebrew/Cellar/httpd/2.4.48: 1,660 files, 31.9MB
==> Caveats
==> httpd
DocumentRoot is /opt/homebrew/var/www.

The default ports have been set in /opt/homebrew/etc/httpd/httpd.conf to 8080 and in
/opt/homebrew/etc/httpd/extra/httpd-ssl.conf to 8443 so that httpd can run without sudo.

To start httpd:
  brew services start httpd
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/httpd/bin/httpd -D FOREGROUND
# 아파치 시작하기
$ brew services start httpd

localhost에 연결이 되었다

아파치 설정하기

시작 전에 파일 복사해두기
$ cp /opt/homebrew/etc/httpd/httpd.conf /opt/homebrew/etc/httpd/httpd.conf.ori

#Listen 8080
Listen 80

#DocumentRoot "/opt/homebrew/var/www"
#<Directory "/opt/homebrew/var/www">
DocumentRoot /Users/your_user/Sites
<Directory "/Users/immyeongsim/Sites">

None에서 All로 변경
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All

#LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
주석제거
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

#ServerName www.example.com:8080
ServerName localhost

User your_user
Group staff

mkdir ~/Sites
echo "<h1>My User Web Root</h1>" > ~/Sites/index.html

brew services stop httpd
brew services start httpd

안된다면
$ httpd -t
로 문법이 맞는지 체크해보고 오타는 없었는지 살펴보자
:294 이렇게 하면 294번째 라인으로 이동이 가능하다

아파치의 파일 접근 권한 변경하기
아파치 도큐먼트 루트(Document root)를 변경합니다. 이 폴더는 아파치가 파일을 찾는 곳입니다.
<Directory "/Library/WebServer/Documents">로 되어있음...
/<Directory 검색해서 아래와 같이 변경한다
서버의 파일시스템에 대한 접근은 막고, 웹 콘텐츠 디렉토리에 대한 접근만 허용해야합니다.
1. 루트 디렉토리 "/"에 대해
2. .htaccess파일의 오버라이드를 허용한다
3. 모든 액세스 허용

<Directory />	//1
    #AllowOverride none
    #Require all denied
    AllowOverride All	//2
    Require all granted	//3
</Directory>
형식의미
Require all granted모든 액세스 허용
Require all denied모든 액세스 거부
Require ip ip주소해당 ip 주소 허용
Require not ip ip주소해당 ip 주소 거부
Require host 호스트해당 호스트 허용
Require not host 호스트해당 호스트 거부

.htaccess파일에 대한 정보
https://blog.naver.com/msi753/221581197947

mod_rewrite 활성화하기
.htaccess 파일의 RewriteEngine을 사용할 수 있게 해준다.
주석 해제
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

아파치 재시작
$ brew services restart httpd

php 설치하기

Up until the end of March 2018, all PHP related brews were handled by Homebrew/php tab, but that has been deprecated, so now we use what's available in the Homebrew/core package.

tab은 저장소를 의미하는데
Homebrew/php 저장소는 더 이상 사용되지 않고
Homebrew/core로 옮겼다고 한다

설치 가능한 것들의 종류는 아래와 같은데
$ brew search php
==> Formulae
brew-php-switcher php-cs-fixer php@7.3 phplint phpstan
php php-cs-fixer@2 php@7.4 phpmd phpunit
php-code-sniffer php@7.2 phpbrew phpmyadmin

shivammathur 저장소에 다양한 버전의 php가 있다
https://github.com/shivammathur/homebrew-php

# 5.6과 7.3이 필요하므로 shivammathur 저장소를 추가한다
$ brew tap shivammathur/php 


# php 설치하기
$ brew install shivammathur/php/php@5.6

==> Summary
🍺  /opt/homebrew/Cellar/php@5.6/5.6.40: 498 files, 60.9MB
==> Caveats
==> php@5.6
To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php5_module /opt/homebrew/opt/php@5.6/lib/httpd/modules/libphp5.so

    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:
    /opt/homebrew/etc/php/5.6/

php@5.6 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.

If you need to have php@5.6 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/php@5.6/bin:$PATH"' >> ~/.zshrc
  echo 'export PATH="/opt/homebrew/opt/php@5.6/sbin:$PATH"' >> ~/.zshrc

For compilers to find php@5.6 you may need to set:
  export LDFLAGS="-L/opt/homebrew/opt/php@5.6/lib"
  export CPPFLAGS="-I/opt/homebrew/opt/php@5.6/include"


To start shivammathur/php/php@5.6:
  brew services start shivammathur/php/php@5.6
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/php@5.6/sbin/php-fpm --nodaemonize
  
$ brew install shivammathur/php/php@7.3

==> Summary
🍺  /opt/homebrew/Cellar/php@7.3/7.3.28: 517 files, 75.5MB
==> Caveats
==> php@7.3
To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php7_module /opt/homebrew/opt/php@7.3/lib/httpd/modules/libphp7.so

    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:
    /opt/homebrew/etc/php/7.3/

php@7.3 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.

If you need to have php@7.3 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/php@7.3/bin:$PATH"' >> ~/.zshrc
  echo 'export PATH="/opt/homebrew/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc

For compilers to find php@7.3 you may need to set:
  export LDFLAGS="-L/opt/homebrew/opt/php@7.3/lib"
  export CPPFLAGS="-I/opt/homebrew/opt/php@7.3/include"


To start shivammathur/php/php@7.3:
  brew services start shivammathur/php/php@7.3
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/php@7.3/sbin/php-fpm --nodaemonize

여기서 터미널 한 번 종료하고 다시 시작하자!
경로가 꼬이는 오류가 있다고 한다
$ exit

# php 연결하기
$ brew link --overwrite --force php@7.3

# php 버전 바꿔주기
$ brew unlink php
$ brew link --overwrite --force php@5.6

# 아파치 재시작하기
$ brew services restart httpd

# php 버전 확인하기
$ php -v

php 세팅하기

$ vi /opt/homebrew/etc/httpd/httpd.conf

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

바로 아래에 추가해주기
한 번에 하나의 php모듈만 사용가능하므로 5.6은 주석처리하고
7.3만 사용할 수 있도록 하였다

#LoadModule php5_module /opt/homebrew/opt/php@5.6/lib/httpd/modules/libphp5.so
LoadModule php7_module /opt/homebrew/opt/php@7.3/lib/httpd/modules/libphp7.so

첫 번째 부분은 아파치에서 폴더에 접근해서 가장 먼저 실행시킬 파일의 이름이다
두 번째 부분은 '.html .php3' 와 같은 확장자가 붙은 파일은 PHP 스크립트 파일로 생각하고 PHP 엔진을 통해서 해석한 다음 클라이언트에 그 결과를 전송하라라는 뜻 입니다.

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<IfModule dir_module>
    DirectoryIndex main.php index.php index.html
</IfModule>

<FilesMatch \.(php|html)$>
    SetHandler application/x-httpd-php
</FilesMatch>

아파치 설정을 변경한 후에는 재시작해줘야 합니다.

$ brew services stop httpd
$ brew services start httpd

http://localhost/info.php

mysql 설치하기

https://mariadb.com/kb/en/installing-mariadb-on-macos-using-homebrew/
https://formulae.brew.sh/formula/mysql 홈브루 공식사이트 mysql 설명
https://dazemonkey.tistory.com/101 버전별 차이
https://gist.github.com/benlinton/d24471729ed6c2ace731 버전 바꾸는 방법

$ brew search mysql
==> Formulae
automysqlbackup              mysql-client                 mysql-sandbox                mysql@5.7
mysql                        mysql-client@5.7             mysql-search-replace         mysqltuner
mysql++                      mysql-connector-c++          mysql@5.6                    qt-mysql

$ brew install mysql@5.6
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (shivammathur/php and homebrew/core).
==> Updated Formulae
Updated 5 formulae.

Warning: mysql@5.6 has been deprecated because it is not supported upstream!
Error: mysql@5.6: no bottle available!
You can try to install from source with:
  brew install --build-from-source mysql@5.6
Please note building from source is unsupported. You will encounter build
failures with some formulae. If you experience any issues please create pull
requests instead of asking for help on Homebrew's GitHub, Twitter or any other
official channels.

다운받아졌나 확인
$ brew list 
안됐다

# 5.7 버전 다운로드
$ brew install mysql@5.7
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

mysql@5.7 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.

If you need to have mysql@5.7 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

For compilers to find mysql@5.7 you may need to set:
  export LDFLAGS="-L/opt/homebrew/opt/mysql@5.7/lib"
  export CPPFLAGS="-I/opt/homebrew/opt/mysql@5.7/include"


To have launchd start mysql@5.7 now and restart at login:
  brew services start mysql@5.7
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/mysql@5.7/bin/mysql.server start
==> Summary
🍺  /opt/homebrew/Cellar/mysql@5.7/5.7.34: 319 files, 234.0MB


# mysql 시작하기
$ brew services start mysql@5.7
==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

# 비밀번호 설정하기
$ mysql_secure_installation
zsh: command not found: mysql_secure_installation
오류가 발생했다

환경변수에 추가했는데도 안된다
$ echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

# mysql 종료하기
$ brew services stop mysql@5.7

# 다음날 해봤는데 되네?
안될 땐 터미널에서 exit한 다음
다시 켜보는 것도 방법인 거 같다
$ mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.

비밀번호 설정하기

비밀번호를 복잡하게 할래? no

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: no
Please set the password for root here.

New password:

Re-enter new password:

익명의 사용자 제거할래? y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Yes 일 경우 : -u(user) 옵션 필요 ex) mysql -u root -p
No 일 경우 : -u(user) 옵션 필요 없음 ex) mysql

루트의 원격 접근을 허용하지 않을래? y

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

test 데이터베이스를 지울래? no -> y

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.

실제 환경에서는 사용하지 않아서 y로 하려고 했는데... 왜 no 눌렀지?ㅋㅋ

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : no

... skipping.

변경된 테이블 권한을 적용할래? y (중요)

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

mysql -u root -p

gui 다운로드

TablePlus 로고 귀여운거 봐...
https://tableplus.com

아파치 가상호스트 설정하기

http://httpd.apache.org/docs/2.4/vhosts/

$ vi /opt/homebrew/etc/httpd/httpd.conf

주석 해제하기

LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so

# Virtual hosts
Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

그 전에 카피 하나 해두고
$ cp /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf.ori

$ /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

<VirtualHost *:8080>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/homebrew/opt/httpd/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/opt/homebrew/var/log/httpd/dummy-host.example.com-error_log"
    CustomLog "/opt/homebrew/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:8080>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/opt/homebrew/opt/httpd/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/opt/homebrew/var/log/httpd/dummy-host2.example.com-error_log"
    CustomLog "/opt/homebrew/var/log/httpd/dummy-host2.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "/Users/immyeongsim/Sites"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/your_user/Sites/grav-admin"
    ServerName grav-admin.test
</VirtualHost>

$ sudo apachectl -k stop
$ sudo apachectl start
$ sudo apachectl graceful

아파치 문법체크
문제가 없으면 재시작하면된다^^
% httpd -t
Syntax OK

Dnsmasq

도메인 이름 시스템 캐싱, 동적 호스트 구성 프로토콜 서버, 라우터 알림 및 네트워크 부팅 기능을 제공하는 무료 소프트웨어

모든 .dev 도메인을 Chrome63에서 SSL을 사용하도록 하면서 도메인을 .loc로 만들어보자.

ServerName이 grav-admin.test일 때
/etc/hosts에 일일히 추가해줘야 한다
dnsmasq를 사용하면 *.test를 localhost (127.0.0.1)로 forward 해준다.
DocumentRoot [/Users/your_user/Sites/grav-admin] 이랬을 때
grav-admin.test
DocumentRoot [/Users/your_user/Sites/grav-other.test] 이랬을 때
grav-other.test 이렇게 사용할 수 있게 된다는 말이다

# dnsmasq 설치하기
$ brew install dnsmasq

# 호스트 설정하기
$ echo 'address=/.test/127.0.0.1' > /opt/homebrew/etc/dnsmasq.conf

# 나중에 자동으로 dnsmasq로 시작하기
$ sudo brew services start dnsmasq
Warning: Taking root:admin ownership of some dnsmasq paths:
  /opt/homebrew/Cellar/dnsmasq/2.85/sbin
  /opt/homebrew/Cellar/dnsmasq/2.85/sbin/dnsmasq
  /opt/homebrew/opt/dnsmasq
  /opt/homebrew/opt/dnsmasq/sbin
  /opt/homebrew/var/homebrew/linked/dnsmasq
This will require manual removal of these paths using `sudo rm` on
brew upgrade/reinstall/uninstall.

# DNS의 클라이언트인 resolver 설정하기
# sudo mkdir -v /etc/resolver
# sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test'

$ ping bogus.test
PING bogus.test (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.118 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.045 ms

종료하려면 컨트롤 + c

-v: verbose

http://m7.dev.etoday.loc

403 Forbidden 에러가 발생했다
$ vi /opt/homebrew/etc/httpd/httpd.conf
아까 했던 곳 밖에 있는 곳의 설정을 변경했다

<Directory />
    AllowOverride All
    Require all granted
    Allow from All
</Directory>

그 외 php.ini(php) 및 httpd.conf(아파치)설정하기


date.timezone = Asia/Seoul
display_errors = On

이미지 서버 크로스 도메인 가능하게 설정

.htaccess 여기서 설정하려면??

관리자 명령

https://support.apple.com/ko-kr/guide/terminal/apd5b0b6259-a7d4-4435-947d-0dff528912ba/mac

sudo 명령어 를 사용하기 위해 su 관리자이름 으로 로그인하기

Root 사용자 또는 Root 권한이 있는 관리자만 실행할 수 있는 명령어의 경우
수퍼 사용자 권한으로 명령어를 실행하려면 sudo 명령을 사용하십시오.
sudo는 superuser do의 약자입니다.
% sudo 명령어
현재 사용자의 암호를 입력하라는 대화상자가 나타납니다.
관리자만 sudo 명령어를 사용할 수 있습니다. 관리자로 로그인하지 않은 경우 다음 명령어를 입력하여 관리자로 전환할 수 있으며 adminUsername은 관리자 이름입니다.
% su adminUsername
adminUsername의 암호를 입력하라는 요청이 나타나며 암호를 입력하면 해당 사용자로 새로운 셸이 열립니다.

요약

$ su adminUsername
암호 입력
$ sudo 명령어

su 는 root 사용자로 전환하는 경우

Root 사용자로 전환해야하는 명령어의 경우 su를 사용하여 Root 사용자로 전환할 수 있습니다. 꼭 필요한 경우에만 Root 사용자로 로그인하십시오.

profile
👶 Back-End Developer -> 👩‍💻 iOS Developer

0개의 댓글