Ubuntu下PHP开发环境搭建指南
基于Ubuntu的PHP开发环境搭建
1.基础设施
操作系统版本:Ubuntu 17.10
约定:所有的依赖库都放在~/src
目录下,所有的项目放在~/project
目录下,我的主目录"~"
是/home/yurisa
安装前准备
git
,wget
安装方式
# -- install git
$: sudo apt-get install git
# -- install wget
$: sudo apt-get install wget
2.依赖包安装
-
安装方式
本地安装
# -- package(依赖包名称) $: sudo dpkg -i package
从源安装
$: sudo apt-get install package # -- 提示,如果找不到可使用搜索功能然后下载安装相关的依赖包即可 # -- 例如搜索"libpng"为名的包 $: sudo apt-cache search libpng
安装之前必须先安装gcc
sudo apt-get install gcc g++
,Ubuntu默认已经安装gcc7,使用gcc -v
查看即可
需要安装的依赖包列表 |
---|
imagemagick_6.9.7.4+dfsg-16ubuntu2_amd64.deb |
iptraf_1.1.4-6_all.deb |
libbison-dev_3.0.4.dfsg-1+b1_amd64.deb |
libcurl3_7.55.1-1ubuntu2_amd64.deb |
libcurl4-openssl-dev_7.55.1-1ubuntu2_amd64.deb |
libedit-dev_3.1-20170329-1_amd64.deb |
libevent-dev_2.1.8-stable-4_amd64.deb |
libfreetype6_2.6.3-3.2_amd64.deb |
libjpeg-dev_8c-2ubuntu8_amd64.deb |
libmcrypt-dev_2.5.8-3.3_amd64.deb |
libmhash-dev_0.9.9.9-7_amd64.deb |
libmhash2_0.9.9.9-7_amd64.deb |
libpng-dev_1.6.34-1_amd64.deb |
libreadline-dev_7.0-3_amd64.deb |
libxml2-dev_2.9.4+dfsg1-4ubuntu1_amd64.deb |
re2c_1.0.1-1_amd64.deb |
依赖包下载(本地安装下载地址在后文给出)
然后先安装上述依赖包
3.Nginx安装
安装前安装相应的依赖包
依赖包名称 | 版本号 | 用途 |
---|---|---|
gcc | 7.1 | C/C++编译器 |
zlib | 1.2.11 | 对Http包做gzip压缩 |
pcre | 8.41 | 正则表达式库 |
openssl | 1.0.2n | 用于支持Https协议 |
nginx-stick | nginx module |
安装pcre
# -- 解压pcre-8.41.tar.gz
$: tar -zxf pcre-8.41.tar.gz
# -- 进入目录
$: cd pcre-8.41.tar.gz
# -- 安装
$: ./configure
$: make
$: sudo make install
安装zlib
# -- 解压
$: tar -zxf zlib-1.2.11.tar.gz
# -- 进入目录
$: cd zlib-1.2.11
# -- 安装
$: ./configure
$: make
$: sudo make install
安装openssl
# -- 解压
$: tar -zxf openssl-1.0.2n.tar.gz
# -- 进入目录
$: cd openssl-1.0.2n
# -- 安装
$: ./config --prefix=/usr/local --openssldir=/usr/local/ssl
$: make
$: sudo make install
$: ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
$: make clean
$: make && make
解压缩Nginx Module
# -- 解压("."表示当前目录)
$: unzip -o -d . nginx-goodies-nginx-stick-module-ng.zip
安装Nginx
我的主目录~
是/home/yurisa
# -- 解压
$: tar -zxf nginx-1.13.tar.gz
# -- 进入目录
$: cd nginx-1.13
# -- 安装
$: ./configure \
> --sbin-path=/usr/local/nginx/nginx \
> --with-http_ssl_module \
> --with-pcre=/home/yurisa/src/pcre-8.41 \
> --with-zlib=/home/yurisa/src/zlib-1.2.11 \
> --with-openssl=/home/yurisa/src/openssl-1.0.21 \
> --add-module=/home/yurisa/src/nginx-sticky-moudle-ng
$: make
$: sudo make install
# -- 将nginx移动到sbin目录下
$: cp /usr/local/nginx/nginx /usr/local/sbin/
# -- 将nginx加入环境变量
$: sudo vim ~/.profile
# -- 在".profile"文件中添加
export PATH=/usr/local/sbin:$PATH
# -- 使用source命令生效
$: source ~/.profile
# -- 启动nginx
$: sudo nginx -c /usr/local/nginx/conf/nginx.conf
# -- 浏览器访问, 地址栏输入(127.0.0.1:80)
# -- 关闭nginx
$: sudo nginx -s stop
# -- 重启nginx
$: sudo nginx -s reload
关于nginx的配置在后文给出
4.PostgreSQL数据库安装
单独安装PostgreSQL之前必须安装的依赖库
依赖包名称 |
---|
zlib |
readline |
开始安装
$ :cd ~/src
# -- 安装包会在后文给出,也可自行使用 wget下载,安装包位置统一放在"~/src"目录下
$ :wget https://ftp.postgresql.org/pub/source/v9.3.5/postgresql-9.3.5.tar.gz
$ :tar -zxf postgresql-9.3.5.tar.gz
$ :cd postgresql-9.3.5
$ :./configure
$ :make
$ :sudo make install
# -- 数据库的相关设置
# -- 配置环境变量
$ :vim ~/.profile
# -- 在.profile文件中加入
export PGDATA=/home/yurisa/postgresql/data
export PATH=/usr/local/pgsql/bin:$PATH
# -- PATH生效
$ :source ~/.profile
# -- 初始化数据库
$ :initdb
# -- 启动数据库
$ :pg_ctl start
# -- 创建数据库用户postgres
$ :createuser postgres -s(创建最高权限用户,类似mysql的root)
# -- 进入数据库客户端
$ :psql -U postgres
# -- 数据库常用命令(注意要加"\")
$ :\l #显示所有数据(L小写)
$ :\c dataname #连接dataname数据库
$ :\q #退出客户端
$ :\d #所有当前库的所有表
$ :\d tablename#查看tablename的表字段
5.PHP安装
安装之前必须先将依赖包安装完毕
开始安装
# -- 进入"src"安装目录
$: cd ~/src
# -- 解压php安装包
$: tar -zxf php-7.1.12.tar.gz
# -- 进入php目录
$: cd php-7.1.12
# -- 编译
$: ./configure \
> --with-pgsql \
> --with-pdo-pgsql \
> --with-openssl \
> --with-mcrypt \
> --enable-zip \
> --enable-mbstring \
> --enable-fpm \
> --enable-opcache \
> --with-curl \
> --with-readline \
> --enable-pcntl \
> --enable-sysvmsg \
> --with-zlib \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-freetype-dir
# -- 安装
$: make
$: sudo make install
PHP相关配置
# -- 复制php.ini文件到"/usr/local/lib"目录下
$: sudo cp php.ini-production /usr/local/lib/php.ini
# -- 编辑php.ini文件
# -- 查找"timezone"修改
date.timezone = "Asia/Shanghai"
always_populate_raw_post_data = -1
# -- 查找max_execution_time修改执行时间
max_execution_time = 300
安装”fpm“(nginx通过fpm管理php).
下面需要修改的文件并不是所有的都能搜索到,如果搜索不到,直接在文件最底部加入即可
# -- 在源代码目录("~/src/php-7.1.12")目录执行
$: sudo cp sapi/fpm/php-fpm.conf /usr/local/etc/
$: sudo cp sapi/fpm/php-fpm /usr/local/bin/
# -- 修改fpm配置
$: sudo vim /usr/local/etc/php-fpm.conf
# -- 修改用户和所属组(通过命令"whoami"查看,"yurisa"是我自己的)
user = yurisa
group = yurisa
# -- 查找"clear_env"修改
clear_env=no
# -- 查找"request_terminate_timeout"修改
request_terminate_timeout=300
# -- 打开PHP错误日志,查找"catch_workers_output",修改
catch_worker_output=yes
在”/usr/local/sbin”文件夹下新建一个名为”fpm”的文件,通过”fpm”管理php-fpm
# -- 新建fpm
$: touch fpm
将以下脚本拷贝至”fpm”文件中
#!/bin/bash
USER=`whoami`
PHP_CGI=/usr/local/sbin/php-fpm
PHP_CGI_NAME=`basename $PHP_CGI`
RETVAL=0
start() {
echo -n "Starting PHP FPM: "
$PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FPM: "
killall -QUIT -u $USER php-fpm
RETVAL=$?
echo "$PHP_CGI_NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: fpm {start|stop|restart}"
exit 1
;;
esac
exit $RETVA
# -- 更改权限
$: chmod 777 fpm
# -- 确保fpm在环境变量中,测试
$: php -v
# -- 如果没有结果则需要将其加入环境变量,同"nginx"一样
# -- 启动fpm
$: sudo fpm start
# -- 重启
$: sudo fpm restart
# -- 关闭
$: sudo fpm stop
环境变量更改必须重启fpm方可生效,配置文件会在后文给出
安装包后文的链接中已经给出,可自行下载,也可使用wget/git下载,安装包放置src目录下面
6.Redis安装步骤
$ :cd ~/src
$ :wget http://download.redis.io/releases/redis-3.0.2.tar.gz
$ :tar -zxf redis-3.0.2.tar.gz
$ :cd redis-3.0.2
$ :make
$ :sudo make install
# --redis配置
$ :cd ~
$ :mkdir redis
# --把~/src/redis-3.0.2/redis.conf复制到~/redis/
$ :cp ~/src/redis-3.0.2/redis.conf ~/redis/
# --修改redis.conf,修改daemonize yes
# --后台启动redis
$ :redis-server redis.conf &
# --启动redis client
$ :redis-cli -p 6379
7.SSDB安装步骤
$ :cd ~/src
$ :wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
$ :unzip master
$ :cd ssdb-master
$ :make clean
$ :make
# --ssdb默认的安装路径在(/usr/local/ssdb)
$ :sudo make install
# --配置环境变量
$ :vim ~/.bash_profile
# --将ssdb加入环境变量
export PATH=/usr/local/ssdb:$PATH
# --环境变量生效
$ :source ~/.profile
# --ssdb启动配置
$ :cd ~
$ :mkdir ssdb
# --复制ssdb.conf到~/ssdb/目录
$ :cp ~/src/ssdb-master ~/ssdb
# --在~/ssdb目录下创建var文件夹
$ :mkdir ~/ssdb/var
# --ssdb基础命令(需要在ssdb.conf所在的目录执行)
# --start ssdb-server
$ :ssdb-server -d ssdb.conf
# --start ssdb-client
$ :ssdb-cli -p 8888
# --stop ssdb-server
$ :ssdb-server ssdb.conf -s stop
8.Phalcon框架安装
$ :cd ~/src
$ :wget https://github.com/phalcon/cphalcon/archive/v3.1.2.tar.gz -O cphalcon-3.1.2.tar.gz
$ :tar -zxvf cphalcon-3.1.2.tar.gz
$ :cd cphalcon-3.1.2/build
$ :sudo ./install
# --php添加phalcon框架
$ :vim /usr/local/lib/php.ini
# --添加
extension=phalcon.so
9.Php添加Redis扩展
$ :cd ~/src
$ :git clone https://github.com/phpredis/phpredis.git
$ :cd phpredis/
$ :phpize # --检查php环境
$ :./configure
$ :make
$ :sudo make isntall
# --添加
$ :vim /usr/local/lib/php.ini
extension = redis.so
10.Php添加SSDB扩展
$ :cd ~/src
$ :git clone https://github.com/jonnywang/phpssdb.git
# --切换分支
$ :git checkout php7
$ :phpize
$ :./configure
$ :make
$ :sudo make install
# --添加
$ :vim /usr/local/lib/php.ini
extension = ssdb.so
# --重启fpm
$ :fpm restart
11.swoole安装
# -- 编译安装
$: cd swoole
$: phpize
$: ./configure
$: make
$: sudo make install
# -- 添加
$ :vim /usr/local/lib/php.ini
extension = swoole.so
12.Nginx相关配置
为方便多个站点的管理,统一将站点文件放在”vhost”目录下。
在/usr/local/nginx/conf目录下新建vhost文件夹
# -- 新建vhost文件夹
$: cd /usr/local/nginx/conf
$: mkdir vhost
更改nginx.conf里面的文件内容为(其它多余的配置放入站点文件)
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 站点文件的加载路径
include vhost/*.conf;
}
新建一个站点文件”hello.com.conf”
访问路径自己建立对应的文件夹结构即可
server {
listen 80; # 端口
server_name hello.com; # 站点名称
index index.html index.htm index.php;
set $root_path '/home/yurisa/projects/Hello_Php/'; # 访问路径
root $root_path;
try_files $uri $uri @rewrite;
client_max_body_size 50m;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000; #fpm
#fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
}
location ~ /\.ht {
deny all;
}
}
将站点加入host文件以访问
$: sudo vim /etc/hosts
# -- 加入以下内容
127.0.0.1 hello.com
测试配置是否成功
# -- 根据访问路径(/home/yurisa/projects/Hello_Php/),在访问路径下面新建"Test"目录
$: mkdir Test
# -- 在Test目录下新建测试文件"index.php"
$: touch index.php
在”index.php”文件中加入一段php脚本以供测试
<?php
echo "+++++---<i love>---++++++";
?>
更改配置文件之后必须重启nginx方可生效
在浏览器中访问
hello.com/Test/index.php
当新开一个项目需要配置新的站点的时候,假设新的站点取名”world.com”
文件必须以”.conf”结尾
# -- 1.复制一份之前的"hello.com"
$: cp hello.com.conf world.com.conf
# -- 更改文件配置中的站点名称以及站点访问位置
server_name world.com; # 站点名称
set $root_path '/home/yurisa/projects/World_Php/'; # 访问路径
# -- 建立对应的访问路径目录结构
# -- 在"World_Php"目录下新建"test.php"测试文件
$: touch test.php
在“test.php”文件中加入php测试脚本
<?php
echo "+++++---<i love you>---++++++";
?>
将站点加入host文件以访问
$: sudo vim /etc/hosts
# -- 加入以下内容
127.0.0.1 world.com
配置文件更改,重启nginx
$: sudo nginx -s reload
在浏览器中访问
world.com/test.php
13.常见问题以及解决
1.nginx启动失败(如果配置文件没问多半是权限问题)
# -- 查看nginx错误信息
$: cd /usr/local/nginx/logs
$: tail -f error.log
fpm启动失败,注意启动权限以及fpm启动可能会访问的目录的权限
如果使用sudo fpm start
启动失败请留意报错信息查看php已安装的扩展
$: php -m
查看php.ini的位置
$: php -i | grep php.ini
14.依赖包以及配置文件下载地址
由于上传文件受到限制,所以分了两个压缩包
15.结语
如有不足请及时指正,谢谢~.
推荐阅读
-
Windows 8.1 下配置 Nginx + PHP 开发环境
-
Ubuntu下PHP开发环境搭建指南
-
Ubuntu16.04搭建php5.6Web服务器环境
-
php+mongodb开发环境搭建(linux+apache+mongodb+php)
-
Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结
-
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
-
基于window下的jenkins php集成环境搭建分享(2)
-
CENTOS7 下配置PHP + MySQL + Nginx开发环境
-
Eclipse+php插件+Xdebug筹建PHP完美开发/调试环境指南
-
如何使用ESXi,vagrant,docker,virtualbox搭建php,mysql开发测试环境