Apple SiliconでNode.jsやAWSの環境を立ち上げる


Apple SiliconでNode.jsやAWSの環境を立ち上げるときに手間取ったところをまとめました。

行った作業

  • nvm / node.js
  • aws-cli
  • apache2

はじめに

コンソールで作業をする前にコンソールにRosettaを有効化します。

これをやらないと、インストールがうまくいきません。

homebrewのインストール

公式ページに書いてあるとおりにインストールできます。

nvmのインストール

gitレポジトリに書いてあるとおりにインストールできます。

aws-cliのインストール

AWSに書いてあるとおりにインストールしてもだめでした。結果からすると、Pythonのパスが異なっているようです。

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

試行錯誤する途中でPythonのサイトを見ると、Python3.9は早くもApple Silicon対応版も公開されています!!ということで、これをインストールしました。

スクリーンショット 2020-12-09 20.48.45

そして、順番にインストール
aws-cliを取得

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
sudo /usr/local/bin/python3.9 awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

無事に動作しました。

aws --version
aws-cli/1.18.192 Python/3.9.1 Darwin/20.1.0 botocore/1.19.32

Apache2

この辺の記事を見ながら/User/{username}/Sitesがlocalhostの設定をしたのですが、結局何をやってもターゲットのフォルダを参照してくれませんでした。

httpd.confのログを確認しても、原因がわからず最終手段でhttpd.confのDocumentRootを直接書き換えました。別の対策があったら教えて下さい。

DocumentRoot "/Users/{username}/Sites/"
<Directory "/Users/{username}/Sites/">
AllowOverride All
Options Indexes MultiViews
Options +FollowSymLinks
Require all granted
</Directory>

#DocumentRoot "/Library/WebServer/Documents"
#<Directory "/Library/WebServer/Documents">
    #
    # 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"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
#    Options FollowSymLinks Multiviews
#    MultiviewsMatch Any

    #
    # 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

    #
    # Controls who can get stuff from this server.
    #
#    Require all granted
#</Directory>