在 ubuntu 下安装 php7.1 、7.2 、5.5.9 等多个版本 nginx

在 ubuntu 下安装 php7.1 、7.2 、5.5.9 等多个版本

由于 ubuntu 默认的 php 镜像是 php5.5.9 所以需要添加 php7 镜像

1. 添加源

$ sudo apt-get update #更新源
$ sudo apt-get install -y language-pack-en-base 
$ local-gen en_US.UTF-8

$ sudo apt-get install software-properties-common
$ sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
$ sudo apt-get update

2. installl

$ sudo apt-get install php7.1-fpm #安装 php-fpm
$ sudo apt-get install php7.1-xml #安装per依赖
# 安装 php php-pear apachemod php-mysql
$ sudo apt-get install php7.1 php-pear libapache2-mod-php7.1 php7.1-mysql
# 这个地方 php 已经安装成功

# 我也不知道这个配置什么意思,后面有机会再深究
# 将cgi.fix_pathinfo=1这一行去掉注释,将1改为0
$ sudo vim /etc/php/7.1/fpm/php.ini  
#查看版本
$ php -v
#下面这个错误的解决办法 可能会遇到
#php: symbol lookup error: php: undefined symbol: pcre_jit_exec
$ apt-get install apt-cache policy libpcre3
#The apt show libpcre3 doesn't actually show which libpcre3 package is installed on your system, so yeah apt-cache policy libpcre3 is needed.Upgrade your libpcre3 library to version from the repository.

3. php 版本切换

# 开启不同版本 apache2.x
$ sudo a2dismod php5.6 #停用 php5.6
$ sudo a2enmod php7.1 #启用 php7.1
$ sudo service apache2 restart #重启 apache
$ sudo update-alternatives --set php /usr/bin/php7.1
## 至此已经由 php5.6 切换至 php7.1

4. Install PHP Modoules

# 添加源 ppa 在另外一个地方看到的,不知道跟上面的换源那个是不是一样的都是 ppa
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
# 安装
$ sudo apt-cache search php7-* #搜索 php modouls
$ sudo apt-install install php7-*

4. install composer

# 下载 composer.phar
$ wget https://getcomposer.org/composer.phar
# 或者
$ curl -sS https://getcomposer.org/installer | php
# 添加执行权限
$ sudo chmod +x composer.phar
# 全局安装并重新命名为 composer
$ sudo mv composer.phar /usr/local/bin/composer
#可以使用 composer 命令
$ composer
# 可能会缺少相应扩展,缺什么就装什么
$ sudo apt-get install php7.0-zip
$ sudo apt-get install php7.0-mbstring
$ sudo apt-get install php-xml
# 安装结束

5. Composer Install Laravel

# 配置 composer 国内全量镜像
$ composer config -g repo.packagist composer https://packagist.phpcomposer.com #php composer
$ composer config -g repo.packagist composer https://packagist.laravel-china.org # laravel china org
# 使用 composer 下载 laravel 安装包 全局
composer global require "laravel/installer"
$ laravel -v #查看 laravel 版本
$ laravel new demo # 创建一个 laravel 项目

6. Install Nginx

# 安装 build 所需要的
$ sudo apt-get install build-essential
$ sudo apt-get install libtool
# 安装 pcre zlib 前者为了重写rewrite,后者为了gzip压缩
$ cd /usr/local/src
$ sudo wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
$ tar -zxvf pcre-8.40.tar.gz
cd pcre-8.40
./configure
make
make install
#
cd /usr/local/src
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
# 安装 nginx
$ cd /usr/local/src
$ sudo wget http://nginx.org/download/nginx-1.12.2.tar.gz
$ sudo tar -zxvf http//nginx.org/download/nginx-1.12.2.tar.gz
$ cd nginx-1.12.2
# 这个地方我没有配置是直接 ./configure 的,不知道有没有什么影响
$ ./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/opt/app/openet/oetal1/chenhe/pcre-8.37 \
--with-zlib=/opt/app/openet/oetal1/chenhe/zlib-1.2.8 \
--with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t
# --with-pcre=/usr/src/pcre-8.34 指的是pcre-8.34 的源码路径。
# --with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。
$ make
$ make install
#常用命令
#启动nginx:
$ sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。
$ sudo /usr/local/nginx/sbin/nginx -t #检查配置文件
$ sudo /usr/local/nginx/sbin/nginx -s reload #重启
$ sudo /usr/local/nginx -s stop #停止
#查看nginx进程:
$ ps -ef|grep nginx

7. Nginx php-fpm 安装配置

1.配置文件位置

/etc/php/7.2/fpm/php.ini
/usr/local/nginx/conf/nginx.conf
  1. 配置 nginx
vim /usr/local/nginx/conf/nginx.conf
#配置文件说明 去掉了顶部上面的几行配置
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;

    server {
        listen       80;
    #root   /var/www/html;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/web;  #web项目根目录
            index  index.php index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
       # }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        # 这里很重要,php-fpm 必须配置
        location ~ \.php$ {
            #include snippets/fastcgi-php.conf;
        root           /var/www/web; #web项目根目录
#下面这两个地方需要对应 php-fpm 的/etc/php/7.2/fpm/pool.d/www.conf 的
#listen=127.0.0.1:9000
#listen=/run/php/php7.2-fpm.sock
            fastcgi_pass   127.0.0.1:9000; # 使用 TCP 链接
       # fastcgi_pass   unix:/run/php/php7.2-fpm.sock; #使用套接字链接
            fastcgi_index  index.php;
#这个地方的默认必须改,不然会报错
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
  1. 配置 php-fpm
$ vim /etc/php/7.2fpm/pool.d/www.conf
[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]
  1. 重新加载
$ sudo service php7.2-fpm reload
$ sudo /usr/local/nginx/sbin/nginx -s reload
# ok
  1. 注意事项
    • 注意目录权限,最好将 项目目录所有者设置为 nginx 用户组

7. Nginx 配置 https

8. Apache 配置 https

你可能感兴趣的:(lamp配置,php)