centOS
1.下载与安装
# 提前安装依赖
yum install libxml2-devel
yum install sqlite-devel
# 下载
cd /usr/local/src/
wget https://www.php.net/distributions/php-8.2.0.tar.gz
tar zvxf php-8.2.0.tar.gz
cd php-8.2.0
./configure --prefix=/home/oduyub/tools/php/source --enable-fastcgi --enable-debug --enable-fpm
./configure --prefix=/usr/local/php8 --with-config-file-path=/usr/local/php8/etc --with-fpm-user=www --with-fpm-group=www --with-curl --with-openssl --with-mysqli --with-pdo-mysql --with-iconv --with-mhash --with-zlib --enable-mbstring --enable-gd --enable-gd-jis-conv --enable-sockets --enable-fpm --enable- --enable-xml --enable-pdo --enable-cli --enable-pcntl --enable-soap --enable-opcache --enable-fileinfo --disable-rpath --enable-mysqlnd --with-zip --enable-simplexml --with-libxml --with-sqlite3 --with-pdo-sqlite --enable-phar --enable-tokenizer --enable-cgi
make
make install
2. 添加环境变量
# PATH=$PATH:/usr/local/php8/bin/
# export PATH
# :wq 保存并退出
> source /etc/profile # 立刻生效配置
> php -v # 获得如下信息
3、设置配置
cp /usr/local/src/php-8.2.0/php.ini-production /usr/local/php8/etc/php.ini
# 开机启动脚本
cp /usr/local/src/php-8.2.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
cp /usr/local/php8/etc/php-fpm.conf.default /usr/local/php8/etc/php-fpm.conf
cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf
4. 设置权限与启动
chmod +x /etc/init.d/php-fpm # 添加可执行权限
# 进入php文件夹
cd /usr/local/php
# 启动php服务
./sbin/php-fpm
# 检查
lsof -i:9000
# 查看进程
ps -aux |grep php-fpm
# 关闭
kill -INT 上面查询的id
# 重启
kill -USR2 上面查询的id
5.插件安装
php扩展mcrypt安装
wget http://pecl.php.net/get/mcrypt-1.0.1.tgz
tar xf mcrypt-1.0.1.tgz
cd mcrypt-1.0.1
phpize # 直接运行phpize ,一般docker里 安装在 /usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config && make && make install
# 在php.ini 底部 添加
extension=mcrypt.so
#重启
service php-fpm restart
mac
Xcode Command Line Tools
# 查看是否已安装
xcode-select -v
xcode-select -p
# 删除已安装
rm -rf /Library/Developer/CommandLineTools
# 安装
xcode-select --install
brew
注意下面地址的替换
- 老mac电脑,地址为/usr/local/opt/
- m1为/opt/homebrew/
应该根据自己电脑实际情况调整,如果是m1 需要把usr/bin 改成/opt/homebrew/bin
- usr/bin 改成 /opt/homebrew/bin
- usr/sbin 改成 /opt/homebrew/sbin
# 安装 Homebrew,官网 brew.sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 根据输出可能需要将一两句话追加到你的 ~/.zshrc 去,可能是 ~/.bash_profile
echo 'export PATH="usr/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="usr/sbin:$PATH"' >> ~/.zshrc
# 重新加载
source ~/.zshrc
# 查看版本
brew -v
# git
brew install git
which git
# 查看版本
git --version
nginx
brew install nginx
# 查看版本
nginx -v
# 启动 nginx 注意mac下不建议使用下面命令,
brew services start|stop|restart nginx # start 会使得 php-fpm 变为开机自启
# 推荐使用nginx 直接操作
nginx -s reload # 直接热加载
nginx -s reload # 直接热加载
# 一般生成的地址
nginx 配置地址 /usr/local/etc/nginx/
# 部署html地址
/opt/homebrew/var/www
# 配置部署路径
/opt/homebrew/etc/nginx/nginx.conf
/opt/homebrew/etc/nginx/servers/
# 其他启动命令
/opt/homebrew/opt/nginx/bin/nginx -g daemon off
系统修改host
# sudo vim /etc/hosts
127.0.0.1 test.my.com
127.0.0.1 test2.my.com
php
# 由于brew 的软件库内,PHP7.2 官方已不再维护 需第三方仓库加入brew
brew tap shivammathur/php
# 安装PHP
brew install shivammathur/php/php@7.2
# php@7.2 是一个 keg-only(可以理解成过旧) 的项目,可执行文件是不会自动加入到环境变量的
# 方案一
echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.zshrc
# 重新加载 profile 文件
source ~/.zshrc
# 方案二,强制链接
brew link php@7.2
# 查看版本
php -v
# 启动 php-fpm,start 会使得 php-fpm 变为开机自启
brew services start|stop|restart php@7.2
php 扩展
# 1. composer
brew install composer
composer --version
# 2. php 的扩展
# 2.1 几个前置扩展库
brew install libyaml # php 的 yaml 扩展会使用到 libyaml 的 lib 库
brew install libmemcached # php 的 memcached 扩展会使用到这个 lib 库;如果本地安装memcached,也会需要使用这个库
brew install zlib # php 的 memcached 扩展会使用到 这个 lib 库
# 2.2 php 的 yaml 扩展
pecl install yaml
# 过程中会需要输入 prefix of libyaml,输入 /usr/local/opt/libyaml 然后回车,这也是 brew --prefix --installed libyaml 的输出
php --ri yaml # 查看是否安装成功和版本
# 2.3 php 的 memcached 扩展
pecl install memcached
# 过程中会需要输入 libmemcached directory,输入 /usr/local/opt/libmemcached,回车
# 过程中会需要输入 zlib directory,输入 /usr/local/opt/zlib,回车
# 接下来还会需要一些输入,统统直接回车
php --ri memcached # 查看是否安装成功和版本
# 2.4 php 的 yaf 扩展
pecl install yaf-3.3.5
# 需要修改 php 的 yaf 扩展的配置,追加如下几行(位置随便)(php 的配置文件,可以通过 php --ini 来查到,其中的 Loaded Configuration File 行,应该在 /usr/etc/php/7.2/php.ini)
# 查看配置 地址
php --ini
/usr/local/etc/php/7.2/php.ini
yaf.environ=development
yaf.use_namespace=1
yaf.use_spl_autoload=1
# 查看是否安装成功和版本 和 被我们修改的配置是否正确
php --ri yaf
# 2.5 phalcon
# 销售站点会用到,但现在基本不开发
PHALCON_VERSION=3.4.5
curl -sSL "https://codeload.github.com/phalcon/cphalcon/tar.gz/v${PHALCON_VERSION}" | tar -xz
cd cphalcon-${PHALCON_VERSION}/build
./install
cp ../tests/_ci/phalcon.ini $(php-config --configure-options | grep -o "with-config-file-scan-dir=\([^ ]*\)" | awk -F'=' '{print $2}')
cd ../../
rm -r cphalcon-${PHALCON_VERSION}
# 查看是否安装成功和版本
php --ri phalcon
# 2.6 redis
pecl install redis
# 中间会需要一些输入,不用理会,全部回车
# 查看是否安装成功和版本
php --ri redis
# 3. 最终需要重启 php-fpm
brew services restart php@7.2
node
brew install node@16
# node@16 是一个 keg-only(可以理解成过旧) 的项目,可执行文件是不会自动加入到环境变量的
# 方案一,按照输出,需要配置环境变量
# 或者按照下面的几句
echo 'export PATH="/opt/homebrew/opt/node@16/bin:$PATH"' >> ~/.zshrc
# 重新加载 profile 文件
source ~/.zshrc
# 方案二,强制链接。但这个方案,brew安装了最新版本 和 旧版本的的情况下,link会有点问题,到时再说
brew link node@16
# 查看是否安装成功和版本
node -v
# node 自带了 npm
npm -v
# node 使用的 openssl 版本不同,导致一些老旧的加密函数不能使用,需要做特殊处理
# 将这几句话放在 profile 文件里,且重新加载 profile 文件
# 如果当前 node 使用 openssl 3,则启用 legacy-provider
unset NODE_OPTIONS
[[ $(node -p "process.versions.openssl") > "3" ]] && export NODE_OPTIONS=--openssl-legacy-provider
# 重新加载 profile 文件
source ~/.zshrc
node 扩展
# 有时前端的某些依赖,需要用到 python2.7 (比如 node-sass,会依靠一个二进制的执行文件,但该库未提供 mac m 版本的可执行文件,会从python源码开始编译,所以需要本地有python环境)
# 可以等用时遇到问题再安装
# brew 的软件库里,没有旧版本的 python
# 可以通过 pyenv 来安装和管理(以及切换)python ,这种方式类似于 node 里面的 v、jenv 等
# 或者去官网下载对应版本的pkg
brew install pyenv
# 配置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 重新加载 profile 文件
source ~/.zshrc
# 安装python 2.7.18
pyenv install 2.7.18
# 全局管理python版本,这种 pyenv 是有能力指定什么范围内使用什么版本,比如默认全局2.7,但某个项目用3
pyenv global 2.7.18
#检查版本
python --version
mysql redis
# mysql 5.7
brew install mysql@5.7 #
brew link mysql@5.7
# 启动
brew services start mysql@5.7
# memcached
brew install memcached
# 启动
brew services start memcached
# 测试连接
telnet 127.0.0.1 11211
# 没有telnet
brew install telnet
# redis
brew install redis
brew 命令
# brew 的各种自检,如果有问题,按照输出,可以解决掉很多问题
brew doctor
# brew 搜索、查看、安装、卸载 软件
brew search|info|install|uninstall XXX
# brew 查看安装的服务(服务是一种特殊的软件,可以被后台运行,开机自启,比如mysql、php-fpm
brew services list
# brew 启动、停止、重启 服务
brew service start|stop|resart php@7.2|mysql@5.7|nginx|memcached
# ps:不要使用sudo去启动服务,这样会导致用户是root,某些文件会没有权限写入,不是不能修,但是很麻烦,尽量不要
# /usr/local/opt/
# brew 管理的软件的配置目录,都在 /usr/local/etc/ 下
# nginx 的 config 目录 /usr/local/etc/nginx/
# php 的 config 目录 /usr/local/etc/php/7.2/
# brew 管理的软件的日志目录,都在 /usr/local/var/log/ 下
# nginx 的日志目录 /usr/local/var/log/nginx/
# php 的日志目录 /usr/local/var/log/php*
node 版本切换
#下载版本
https://github.com/nvm-sh/nvm/archive/refs/tags/v0.38.0.tar.gz
vi ~/.zshrc
# 在底部加入配置信息
export NVM_DIR="$HOME/nvm-0.38.0"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# 配置生效
source ~/.zshrc