返回首页

macOS编译安装NMPP网站环境

注:Mac mini测试通过。

一、安装homebrew

详见homebrew官网

二、brew安装基础软件

brew install wget zstd

#自动安装依赖openssl@3/gettext等

三、编译安装redis

wget http://download.redis.io/releases/redis-7.4.2.tar.gz
tar xvf redis-7.4.2.tar.gz
cd redis-7.4.2
make -j10
sudo make PREFIX=/usr/local/redis install
sudo ln -sf /usr/local/redis/bin/* /usr/local/bin/
sudo cp redis.conf /usr/local/redis/
sudo mkdir -p /usr/local/redis/db
sudo chown $(id -un):admin /usr/local/redis/db
sudo mkdir -p /usr/local/redis/log
sudo chown $(id -un):admin /usr/local/redis/log
sudo touch /usr/local/redis/log/redis.log
sudo chown $(id -un):admin /usr/local/redis/log/redis.log
sudo sed -i "" "s/# unixsocket \/run\/redis.sock/unixsocket \/tmp\/redis.sock/g" /usr/local/redis/redis.conf
sudo sed -i "" "s/# unixsocketperm 700/unixsocketperm 666/g" /usr/local/redis/redis.conf
sudo sed -i "" "s/dir .\//dir \/usr\/local\/redis\/db\//g" /usr/local/redis/redis.conf
sudo sed -i "" "s/logfile \"\"/logfile \"\/usr\/local\/redis\/log\/redis.log\"/g" /usr/local/redis/redis.conf

启动/停止脚本

echo "/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf --daemonize yes" | sudo tee /usr/local/bin/redisstart
echo "/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown" | sudo tee /usr/local/bin/redisstop
sudo chmod +x /usr/local/bin/redisstart
sudo chmod +x /usr/local/bin/redisstop

四、编译安装postgresql

wget https://ftp.postgresql.org/pub/source/v17.2/postgresql-17.2.tar.bz2
tar xvf postgresql-17.2.tar.bz2
cd postgresql-17.2
./configure --prefix=/usr/local/pgsql --with-system-tzdata=/usr/share/zoneinfo --disable-debug --enable-spinlocks --with-icu --without-gssapi --with-pam --without-perl --without-python --with-readline --without-tcl --with-libxml --with-libxslt --with-zlib
make -j10
sudo make install
sudo ln -sf /usr/local/pgsql/bin/* /usr/local/bin/
sudo ln -sf /usr/local/pgsql/include/* /usr/local/include/
cd /usr/local/pgsql
sudo mkdir -p log
sudo mkdir -p data
sudo touch log/postgresql.log
sudo chown $(id -un):admin data
sudo chown $(id -un):admin log/postgresql.log
bin/initdb -D data -E 'UTF8' --locale='zh_CN.UTF-8'
sed -i "" "s/#log_destination = 'stderr'/log_destination = 'csvlog'/g" /usr/local/pgsql/data/postgresql.conf
sed -i "" "s/#logging_collector = off/logging_collector = on/g" /usr/local/pgsql/data/postgresql.conf
sed -i "" "s/#log_directory =/log_directory =/g" /usr/local/pgsql/data/postgresql.conf
sed -i "" "s/#log_filename =/log_filename =/g" /usr/local/pgsql/data/postgresql.conf
sed -i "" "s/#log_rotation_age = 1d/log_rotation_age = 1d/g" /usr/local/pgsql/data/postgresql.conf
sed -i "" "s/#log_rotation_size = 10MB/log_rotation_size = 100MB/g" /usr/local/pgsql/data/postgresql.conf
sed -i "" "s/#log_min_messages = warning/log_min_messages = info/g" /usr/local/pgsql/data/postgresql.conf
bin/pg_ctl -D data -l log/postgresql.log start
createuser -U $(id -un) -s -P admin
createdb -U admin test

#启动脚本(重启/停止用restart/stop替换start即可)

echo "/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/postgresql/log/postgresql.log start" | sudo tee /usr/local/bin/pgsqlstart
sudo chmod +x /usr/local/bin/pgsqlstart

五、编译安装php

brew install openssl freetype gettext webp libpng libiconv oniguruma libzip autoconf libsodium
wget http://www.php.net/distributions/php-8.4.3.tar.xz
tar xvf php-8.4.3.tar.xz
cd php-8.4.3
./configure --prefix=/usr/local/php --enable-fpm --with-pear --with-fpm-user=$(id -un) --with-fpm-group=admin --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/lib/php/extensions --enable-opcache --enable-mbstring --with-curl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-phpdbg --with-zlib --enable-calendar --enable-exif --enable-ftp --enable-soap --enable-bcmath --enable-sockets --with-openssl --with-pgsql --with-pdo-pgsql --with-zip --enable-gd --with-webp --with-jpeg --with-freetype --with-openssl --enable-pcntl --with-iconv=/opt/homebrew/opt/libiconv --with-gettext=/opt/homebrew/opt/gettext --with-sodium 
make -j10
sudo make install
sudo ln -sf /usr/local/php/bin/* /usr/local/bin/
sudo cp sapi/fpm/www.conf /usr/local/php/etc/php-fpm.d/
sudo cp sapi/fpm/php-fpm.conf /usr/local/php/etc/
sudo cp php.ini-development /usr/local/php/php.ini
sudo sed -i "" "s/;zend_extension=opcache/zend_extension=opcache/" /usr/local/php/php.ini
sudo sed -i "" "s/;opcache.enable=0/opcache.enable=1/" /usr/local/php/php.ini
sudo sed -i "" "s/;opcache.enable=1/opcache.enable=1/" /usr/local/php/php.ini
sudo sed -i "" "s/;opcache.enable_cli=0/opcache.enable_cli=1/" /usr/local/php/php.ini
sudo sed -i "" "s/;opcache.file_cache=/opcache.file_cache=\/tmp/" /usr/local/php/php.ini
sudo sed -i "" "s/max_execution_time = 30/max_execution_time = 60/" /usr/local/php/php.ini
sudo sed -i "" "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /usr/local/php/php.ini
sudo sed -i "" "s/post_max_size = 8M/post_max_size = 20M/" /usr/local/php/php.ini
sudo sed -i "" "s/;date.timezone =/date.timezone = Asia\/Shanghai/" /usr/local/php/php.ini
sudo sed -i "" "s/display_errors = Off/display_errors = On/" /usr/local/php/php.ini
sudo sed -i "" "s/expose_php = On/expose_php = Off/" /usr/local/php/php.ini
echo "opcache.jit=1235" | sudo tee -a /usr/local/php/php.ini
echo "opcache.jit_buffer_size=64M" | sudo tee -a /usr/local/php/php.ini
sudo pear update-channels pear.php.net
sudo pear upgrade-all
sudo pecl install redis
echo "extension=redis" | sudo tee -a /usr/local/php/lib/php/extensions/ext.ini
sudo chown $(id -un):admin /usr/local/php/var/log
sudo sed -i "" "s/^user =/;user =/" /usr/local/php/etc/php-fpm.d/www.conf
sudo sed -i "" "s/^group =/;group =/" /usr/local/php/etc/php-fpm.d/www.conf
sudo sed -i "" "s/;listen = 127.0.0.1:9000/listen = \/tmp\/php-fpm.sock/" /usr/local/php/etc/php-fpm.d/www.conf
sudo sed -i "" "s/;listen.owner/listen.owner/" /usr/local/php/etc/php-fpm.d/www.conf
sudo sed -i "" "s/;listen.group/listen.group/" /usr/local/php/etc/php-fpm.d/www.conf
sudo sed -i "" "s/;listen.mode = 0660/listen.mode = 0666/" /usr/local/php/etc/php-fpm.d/www.conf

#启动脚本

echo "/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.conf" | sudo tee /usr/local/bin/phpstart
sudo chmod +x /usr/local/bin/phpstart

六、编译安装openresty

brew install unix2dos pcre
git clone https://github.com/openresty/openresty
cd openresty
make
cd openresty-1.27.1.2
./configure --prefix=/usr/local/nginx --user=$(id -un) --group=admin --error-log-path=/usr/local/nginx/log/error.log --http-log-path=/usr/local/nginx/log/access.log --pid-path=/tmp/nginx.pid --lock-path=/tmp/nginx.lock --http-client-body-temp-path=/tmp/client --http-proxy-temp-path=/tmp/proxy --http-fastcgi-temp-path=/tmp/fastcgi --http-uwsgi-temp-path=/tmp/uwsgi --http-scgi-temp-path=/tmp/scgi --with-http_v2_module --with-http_v3_module --with-http_realip_module --with-http_stub_status_module --with-stream_realip_module --with-http_postgres_module --conf-path=/usr/local/nginx/conf/nginx.conf --sbin-path=/usr/local/nginx/sbin/nginx
make -j10
sudo make install
sudo ln -sf /usr/local/nginx/sbin/nginx /usr/local/bin/
sudo ln -sf /usr/local/nginx/luajit/bin/luajit /usr/local/bin/
sudo mkdir /usr/local/nginx/log
sudo chown $(id -un):admin /usr/local/nginx/log
wget https://luarocks.github.io/luarocks/releases/luarocks-3.11.1.tar.gz
tar xvf luarocks-3.11.1.tar.gz
cd luarocks-3.11.1
./configure --prefix=/usr/local/nginx --with-lua=/usr/local/nginx/luajit --with-lua-include=/usr/local/nginx/luajit/include/luajit-2.1 --with-lua-lib=/usr/local/nginx/lualib
make -j10
sudo make install

#启动脚本

echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/etc/nginx.conf" | sudo tee /usr/local/bin/nginxstart
sudo chmod +x /usr/local/bin/nginxstart

七、编译安装mysql

brew install cmake
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.44.tar.gz
tar xvf mysql-boost-5.7.44.tar.gz
cd mysql-5.7.44
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DINSTALL_MYSQLDATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_UNIT_TESTS=OFF -DINSTALL_MYSQLTESTDIR= -DWITH_SSL=system -DWITH_BOOST=boost -DWITH_EMBEDDED_SERVER=OFF
#mysql-8.4.4
#wget https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz
#tar xvf bison-3.8.2.tar.xz
#cd bison-3.8.2
#cmake . -DCMAKE_INSTALL_PREFIX=../bison
#camke --build .
#camke --install .
#cd ..
#wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.4.tar.gz
#tar xvf mysql-8.4.4.tar.gz
#cd mysql-8.4.4
#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DINSTALL_MYSQLDATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_UNIT_TESTS=OFF -DINSTALL_MYSQLTESTDIR= -DWITH_SSL=system -DFORCE_INSOURCE_BUILD=1 -DBISON_EXECUTABLE=../bison/bin/bison 
make -j10
sudo make install
sudo ln -sf /usr/local/mysql/bin/* /usr/local/bin/
sudo cat > /tmp/my.cnf << "EOF"
[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

log-error=/usr/local/mysql/log/mysqld.log
slow_query_log=1
slow_query_log_file=/usr/local/mysql/log/mysql-slow.log
long_query_time=3
log_output=FILE

[mysqldump]
quick

[mysql]
port=3306
socket=/tmp/mysql.sock
EOF
sudo mv /tmp/my.cnf /usr/local/mysql/
sudo mkdir -p /usr/local/mysql/data
sudo mkdir -p /usr/local/mysql/log
sudo touch /usr/local/mysql/log/mysql-slow.log
sudo touch /usr/local/mysql/log/mysqld.log
sudo chown $(id -un):admin /usr/local/mysql/data
sudo chown $(id -un):admin /usr/local/mysql/log
sudo chown $(id -un):admin /usr/local/mysql/log/mysqld.log
sudo chown $(id -un):admin /usr/local/mysql/log/mysql-slow.log
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf  --initialize-insecure
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --daemonize --pid-file=/tmp/mysqld.pid
mysqladmin -uroot password "新密码"

#启动脚本

echo "/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --daemonize --pid-file=/tmp/mysqld.pid" | sudo tee /usr/local/bin/mysqlstart
sudo chmod +x /usr/local/bin/mysqlstart

返回首页

© 2016-2025 清风的个人笔记