最近在ubuntu上部署php的开发环境花了不少时间,在安装成功后,又安装了一遍,在这做个日志,总结一下经验
加载依赖包:
sudo apt-get update
sudo apt-get install libxml2-dev
sudo apt-get install build-essential
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install make
sudo apt-get install curl
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libtool-bin
sudo apt-get install bison
sudo apt-get install zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libtool
sudo apt-get install libxml2-dev build-essential openssl libssl-dev make curl libcurl4-gnutls-dev libjpeg-dev libpng-dev libtool-bin bison zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libtool
编译安装nginx:
1、下载新版本,到官网复制下载链接
wget http://nginx.org/download/nginx-1.17.4.tar.gz
2、解压tar -zxvf nginx-1.17.4.tar.gz
3、编译安装
# 进入解压目录:
cd nginx-1.17.4.tar.gz
# 配置并编译安装nginx:
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-mail=dynamic
sudo make
sudo make install
# 启动nginx:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。
# 查看nginx进程:
ps -ef|grep nginx
# 建立软链接(由于/usr/local/bin包含于$PATH当中,这样就不需要额外的设置环境变量了,这意味着可以在其他路径下直接运行nginx命令)
#(创建链接)
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
编译选项说明:
--prefix=path 如果在编译的不指定安装位置,那么默认的位置/usr/local/nginx目录
--sbin-path=path 设置nginx执行脚本的位置,这里如果设置在path变量里面,就可以在bash环境下,任意使用nginx命令,默认位置prefix/sbin/nginx 注意这里的prefix是在配置文件里面配置的路径
--conf-path=path 配置nginx配置文件的路径,如果不指定这个选项,那么配置文件的默认路径就会是 prefix/conf/nginx.conf
--pid-path =path 配置nginx.pid file的路径,一般来说,进程在运行的时候的时候有一个进程id,这个id会保存在pid file里面,默认的pid file的放置位置是prefix/logs/nginx.pid
--error-log-path=path 设置错误日志的存放路径,如果不指定,就默认 prefix/logs/error.log
--http-log-path= path 设置http访问日志的路径,如果不指定,就默认 prefix/logs/access.log
--user=name 设置默认启动进程的用户,如果不指定,就默认 nobody
--group=name 设置这个用户所在的用户组,如果不指定,依然是nobody
--with-http_ssl_module 开启HTTP SSL模块,使NGINX可以支持HTTPS请求。需要安装了OPENSSL
--with-http_flv_module
--with-http_stub_status_module 启用 "server status" 页
--without-http_gzip_module 禁用 ngx_http_gzip_module. 如果启用,需要 zlib
--without-http_ssi_module 禁用 ngx_http_ssi_module
--without-http_referer_module 禁用 ngx_http_referer_module
--without-http_rewrite_module 禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。
--without-http_proxy_module 禁用 ngx_http_proxy_module
--without-http_fastcgi_module 禁用 ngx_http_fastcgi_module
--without-http_memcached_module 禁用 ngx_http_memcached_module
--without-http_browser_module 禁用 ngx_http_browser_module
--http-proxy-temp-path=PATH 设置路径到the http proxy temporary files
--http-fastcgi-temp-path=PATH 设置路径到Set path to the http fastcgi temporary files
--without-http 禁用 HTTP server
--with-mail 启用 IMAP4/POP3/SMTP 代理模块
--with-mail_ssl_module 启用ngx_mail_ssl_module
--with-openssl=DIR 设置路径到OpenSSL library sources
--with-stream 用来实现四层协议的转发、代理或者负载均衡等
自动启动nginx:
编译安装需要自己进行设置方可自动启动
# 设置nginx自启动,在/lib/systemd/system/ 目录下创建一个服务文件
vim /lib/systemd/system/nginx.service
内容如下:
[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
文件说明
[Unit]部分
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务
[Service]部分
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令(需要根据路径适配)
ExecReload为重启命令(需要根据路径适配)
ExecStop为停止命令(需要根据路径适配)
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]部分
服务安装的相关设置,可设置为多用户
# 设置了自启动后,任意目录下执行
systemctl enable nginx.service
# 启动nginx服务
systemctl start nginx.service
# 设置开机自动启动
systemctl enable nginx.service
# 停止开机自动启动
systemctl disable nginx.service
# 查看状态
systemctl status nginx.service
# 重启服务
systemctl restart nginx.service
# 查看所有服务
systemctl list-units --type=service
PHP编译安装
1.下载、解压
#版本根据自身需求下载
wget http://am1.php.net/distributions/php-7.2.12.tar.gz
sudo tar-zxvf php-7.2.12.tar.gz
cd php-7.2.12/
2.查看安装帮助,执行配置脚本来进行编译预处理
./configure --help
#不添加 --with-gd ,添加的 --with-gd将无法安装jpeg的扩展
./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip
编译预处理可能会出现一些error,一般是缺少依赖包的原因,根据提示安装即可
特别强调一个错误,编译预处理出现include/curl 不存在错误,但是明明已经安装了curl,可能出现的问题是所需的curl目录信息不在include目录下,
错误:configure: error: Cannot find OpenSSL's libraries
原文:https://blog.csdn.net/qq_16399991/article/details/73604324
apt-get install build-essential libexpat1-dev libgeoip-dev libpng-dev libpcre3-dev libssl-dev libxml2-dev rcs zlib1g-dev libmcrypt-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libwebp-dev pkg-config
找到curl的目录夹所在,将curl目录文件复制到include中(遇到时使用的方法)或创建软连接
已安装crul却一直出现include/curl 不存在错误,curl的版本与php扩展的curl不兼容,下载更的php版本(php7.2)
4.预处理通过之后就可以make编译了
sudo make
sudo make install
5.配置php
编译安装成功后,一般可以在usr/local找到安装的php/
/php.ini
# cp php.ini-development /usr/local/php/lib/php.ini
//php-fpm
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
# cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm 或cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
需要注意的是php7中www.conf这个配置文件配置phpfpm的端口号等信息,如果你修改默认的9000端口号需在这里改,再改nginx的配置
6.启动
#cd /usr/local/php/etc/php-fpm.d/
#sudo vim www.conf
//修改
user = www
group = www
#adduser www
# /etc/init.d/php-fpm start //或者
#sudo /usr/local/php/sbin/php-fpm
nginx配置
server{ listen 80;
server_name www.test.com;
root "/var/www/html/test/public";
index index.php index.htm index.html;
charset UTF-8;
location / {
if (!-e $request_filename) {
#rewrite ^(.*)$ /index.php?s=/$1 last; #//tp隐藏index.php
#break;
rewrite ^.*$ /index.php;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
安装php7.3编译扩展报错
问题:configure.ac:20: error: Autoconf version 2.68 or higher is required
下载更高版本的autoconf,2.68及以上
#sudo ./configure --with-php-config=/usr/local
#sudo make && make install
安装Gd库扩展
因为php编译安装直接使用--with gd没有安装jpeg图片处理扩展,所以在这里手动编译安装
进入php安装包ext/gd
make clean
apt-get install libfreetype6-dev
./configure --with-php-config=/usr/local/php/bin/php-config --with-png-dir --with-freetype-dir --with-jpeg-dir --with-zlib-dir --with-gd
make
make install
php.ini 添加extension=gd.so
安装yaf扩展
1.下载yaf扩展
#wget http://pecl.php.net/get/yaf-3.0.8.tgz
#tar -zxvf yaf-3.0.8.tgz
#cd yaf-3.0.7/
#sudo /usr/local/php/bin/phpize
#sudo ./configure --with-php-config=/usr/local/php/bin/php-config
#sudo make && make install
在php.ini中加入
[yaf]
yaf.library = NULL
yaf.cache_config = 0
yaf.name_suffix = 1
yaf.name_separator = ""
yaf.forward_limit = 5
yaf.use_namespace = 1
yaf.use_spl_autoload = 0
extension=yaf.so
安装redis服务、redis扩展
1.下载redis服务,解压并安装:
#sudo tar -zxvf redis-4.0.9.tar.gz
#cd redis-4.0.9/
#sudo make
#sudo make install
2.下载安装redis扩展,并编译安装
#wget http://pecl.php.net/get/redis-4.3.0.tgz
#sudo tar -zxvf redis-4.3.0.tgz
#cd redis-4.3.0/
#sudo /usr/local/php/bin/phpize
#sudo ./configure --with-php-config=/usr/local/php/bin/php-config
#sudo make
#sudo make install
3.最后老样子,在php.ini加上:
extension=redis.so