Linux ubuntu 16.04 LTS
,下载地址Nginx nginx-1.12.0
,下载地址PHP php-7.1.4
,下载地址MySQL mysql-5.7.18
,下载地址php
在运行全部命令以前,请执行 apt-get update
html
因为采用源码包编译安装,因此须要一个 c
编译器,若是提示为找到 c
编译器,那么请执行 sudo apt-get install gcc
命令安装 c compiler
。可是你可能会碰到仍然找不到 c compiler cc
的状况,请执行:apt-get install build-essential
mysql
编译安装所须要的软件包,须要 make
依赖:linux
sudo apt-get install make
nginx
依赖的环境包:Pcre pcre-8.40
,下载地址(有可能出现安装了也仍然提示未找到,apt-get install libpcre3-dev
,详情请看)Pcre2 pcre2-10.23
,下载地址zLib zlib-1.2.11
,下载地址nginx
php
依赖的环境包:libssl-dev
,安装方法:apt-get install libssl-dev
libxml2-dev
,安装方法:apt-get install libxml2-dev
libcurl4-gnutls-dev
,安装方法:sudo apt-get install libcurl4-gnutls-dev
libzip-dev
安装方法:apt install libzip-dev
web
php gd
库须要的依赖:redis
libpng-dev
(apt-get install libpng-dev
)libjpeg-dev
(apt-get install libjpeg-dev
)libxpm-dev
(apt-get install libxpm-dev
)apt-get install libfreetype6-dev
另外,若是缺乏什么 .h
这类的头文件,请根据错误提示,例如 apt-get install libfreetype*
或 *freetype*
这样安装解决!sql
系统升级到 ubuntu 17.07 php 升级到 php-7.1.8 这个时候会报错:libcurl 问题 find /usr -iname '*curl*' // 建立一个软链接(系统升级致使 curl 默认路径改了,php 找不到了.....) ln -s /usr/include/x86-linux-...../curl /usr/include/curl
php 编译安装扩展 phpize 命令
依赖的依赖包m4
,安装方法:apt-get install m4
autoconf
,安装方法:apt-get install autoconf
thinkphp
mysql
依赖的包:libaio1
,安装方法:apt-get install libaio1
ubuntu
若是出现 libpcre.so.1
找不到的错误,请手动连接:sudo ln -s /usr/local/lib/libpcre.so.1 /lib/libpcre.so.1
sudo tar -zxvf nginx-1.12.0.tar.gz cd nginx-1.12.0 sudo ./configure # 这个目录要本身事先建立好 --prefix=/usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0 # 支持 tcp/udp 负载均衡 --with-stream sudo make sudo make install
// 修改运行用户 user root; // 修改日志文件路径 error_log logs/error.log; http { // 加大上传文件大小限制 client_max_body_size 2048M; // 加大 nginx 等待 php cgi响应的时间 fastcgi_read_timeout 3600s; // 新增自定义配置文件路径(省得在默认配置文件中新增数据) include 'vhost/*.conf'; }
而后在 vhost
目录下,建立 www.conf
配置文件:
server { server_name test.com; listen 80; index index.html; root /myself/web/test; location / { autoindex on; } }
cd /usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0/conf sudo gedit nginx.conf # 修改配置文件,添加 域名(具体看 windows 下 nginx.conf 配置文件) sudo gedit /etc/hosts # 修改 hosts 文件,添加相应域名 cd ../sbin sudo ./nginx # 便可!不要 sudo start ./nginx ,他会提示报错的。
浏览器打开域名查看结果。
tar -zxvf php-7.1.4.tar.gz cd php-7.1.4 sudo ./configure // php 主体文件所在目录 --prefix=/usr/local/WebEnv/php-7.1.4 // 默认配置文件在 ./lib 目录下 // 注意这里是目录!! // 请不要使用这个编译选项,php 安装完成后,请使用 php --ini // 查看配置文件路径,而后修改。即推荐使用默认路径 // --with-config-file-path=/usr/local/webEnv/php-7.1.4 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with-gd --with=swoole // 注意如下四个选项,须要提早安装相关依赖! // 最后 freetype 这个选项,请使用 find / -iname 'freetype*' 来查找具体位置 // 如下注释掉的 php 编译选项再也不须要,php 会自动查找 // --with-png-dir=/usr/lib // --with-jpeg-dir=/usr/lib // --with-xmp-dir=/usr/lib // --with-freetype-dir=/usr/local/include/freetype2 --enable-mbstring --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-zip --enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm sudo make sudo make install 简化版命令(可直接运行): ./configure --prefix=/usr/local/WebEnv/php-7.1.4 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with-gd --with=swoole --enable-mbstring --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-zip --enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm && make && make install
须要复制 php
压缩包解压后的 php.ini-production
到 /usr/local/WebEnvironment/PHP-7.2.0/lib/php.ini
// 增长上传文件大小 post_max_size = 2048M // 单个上传文件的最大大小 upload_max_filesize = 10M // 单次最大上传文件数量 max_file_uploads = 200 // 设置扩展路径 extension_dir = "/usr/local/WebEnvironment/PHP-7.2.0/extensions" // 添加自定义扩展 extension = redis.so // php 事件扩展 extension = ev.so extension = gd.so // 设置时区 date.timezone = PRC // 设置 php 最大占用内存 memory_limit = 512M // 打开错误提示 display_errors = On
基本 ok。
如下方式非源码编译安装,没法指定安装目录!若是须要指定安装目录,请查看 mysql-8.x 源码编译安装
tar -zxvf mysql-5.7.18.tar.gz mv mysql-5.7.18 /usr/local/mysql cd /usr/local // 它自己没有 data 目录,须要自行建立(更高版本已经有 data 目录,无需重复建立) sudo mkdir -m 755 data cd bin // 初始化 Data 目录内容 sudo ./mysqld --initialize-insecure // 启动,必须以 root 身份启动 sudo ./mysqld --user=root ----------- 另行启动一个 terminal --------------------------------- // 设置密码 sudo ./mysqladmin -u root password 123456 // 登陆测试 mysql -u root -p // 配置文件(本身建立 my.cnf,默认文件名,配置文件路径:etc 目录下,能够是 /etc,也能够是 /usr/local/mysql/etc) sudo mkdir - m 755 /usr/local/mysql/etc // 编辑配置文件 sudo gedit /usr/local/mysql/etc/my.cnf // 配置文件内容(设置编码) [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8
nginx.conf
中设置的 include vhost/*
路径
cd conf/vhost sudo vim vhost.conf // 添加以下内容,保存 server { server_name test.com; root /var/Website/Test; index index.php index.html; charset utf-8; location / { // 这边配置成单一入口访问(例如你用的PHP框架是 Laravel 就要求要单一路口) // 这边的含义是: // $uri 若是是一个文件,直接返回 // $uri/ 若是是一个目录,直接返回 // 最后一个参数表示重定向! // 不然返回 /index.php?$query_string; try_files $uri $uri/ /index.php?$query_string; } location ~ \.php(.*) { // php 处理程序监听的 tcp 端口 fastcgi_pass 127.0.0.1:9000; // 肯定脚本名称 # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; // 传递请求参数 # fastcgi_param QUERY_STRING $query_string; // 必需要包含 fastcgi_params 预约义参数 include fastcgi_params; } } server { server_name pma.com; root /var/Website/TestOther; index index.html; charset utf-8; location / { } # 静态资源处理 # 例如:http://test.com/test.jpg # 他会从 /data 目录下获取,而不是从 /var/Website/TestOther 目录下获取 # 注意匹配顺序,正则优先,而后 前缀 location ~ \.(gif|jpg|png)$ { root /data; } }
参考文章
cgi、fastcgi、php-cgi、php-fpm 之间的联系和区别
配置文件路径:
// php-fpm 配置文件 etc/php-fpm.conf.default // 进程池配置文件路径 etc/php-fpm.d/www.conf.default // php.ini 配置文件(要从解压出来的压缩包根目录下拷贝重命名) etc/php.ini
注意了,php-fpm.conf
配置文件是 php-fpm
程序的配置文件,www.conf
是 php-fpm.conf
配置文件的一部分(扩展),只是 php
将其独立出来了。他们是一个总体,这边修改的是 www.conf
:
user = root # 这边能够新建立用户,也能够直接使用 root 用户(省事,我就 root 用户了) group = root # 同上 listen = 127.0.0.1:9000 # 只能有一个 listen(我被坑的最惨的部分!觉得能够 listen 多个!实际上不能!)
sudo ln -s /path/to/php/sbin/php-fpm /bin/php-fpm sudo ln -s /path/to/nginx/sbin/nginx /bin/nginx sudo ln -s /path/to/mysql/bin/mysqld /bin/mysqld
Nginx
// windows 下启动 start nginx // linux 下启动 sudo nginx # 启动 sudo nginx -s reload # 从新启动(重载配置文件) sudo nginx -s stop # 快速中止 sudo nignx -s quite # 优雅中止 sudo nginx -s reopen # 从新打开日志文件(要在 nginx 启动的状态下执行才有效)
PHP
:
// 指定配置文件启动 // -c 指定 php 运行时配置文件 // -y 指定 php-fpm 运行时配置文件 // -R 可选,运行 root 身份运行 php-fpm sudo php-fpm -c php.ini -y php-fpm.conf -R // 一般的启动方式应该以下: sudo php-fpm -R
mysql
sudo mysqld --user=root