Ubuntu 16.04 环境安装部署(更新版)

环境版本

Ubuntu 16.04
Nginx 1.15.5
PHP 7.3.0
MySQL 5.7
Composer 1.7.2
Git 2.7.4

安装 Nginx

首先,添加 nginx_signing.key

$ wget http://nginx.org/keys/nginx_signing.key

$ wget http://nginx.org/keys/nginx_signing.key

添加 Nginx 官方源

$ echo "deb http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/sources.list

$ echo "deb http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/sources.list

如果你想安装Nginx1.9以上的版本可以在packages后添加/mainline,这是主线版本

$ echo "deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx" >> /etc/apt/sources.list

$ echo "deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx" >> /etc/apt/sources.list

更新源并安装 Nginx

$ sudo apt-get update

$ sudo apt-get install nginx

// 开启 nginx
$ /usr/sbin/nginx

Nginx配置

/etc/nginx/nginx.conf 文件中的第一行查看你的 Nginx 用户。

$ less /etc/nginx/nginx.conf

修改用户和组

PHP7 默认的用户和组是www-data。 如果你的 Nginx 用户名也是www-data,那么不需要做下面的修改。 如果你的 Nginx 用户名是 nginx,那么你可以在/etc/nginx/nginx.conf文件中将它修改成www-data.

$ sudo vi /etc/nginx/nginx.conf

重启 Nginx 服务

$ nginx -s reload

Laravel 项目 Nginx 配置

/etc/nginx/conf.d 添加一个新的配置即可,配置如下

server {
    listen 80;
    server_name {domain_name};

    charset utf-8;

    access_log  /var/log/nginx/{name}.access.log  main;
    error_log  /var/log/nginx/{name}.error.log warn;

    root   /var/www/{project_name}/public;
    index  index.php index.html index.htm;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/plain application/javascript application/x-javascript text/xml text/css;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_param HTTP_X_FORWARDED_FOR '';
        fastcgi_param HTTP_X_REAL_IP '';
        fastcgi_param HTTP_CLIENT_IP '';
        fastcgi_param HTTP_PROXY '';
        include fastcgi_params;
    }
}

{domain_name} - 替换成域名
{name} - 保存的日志名
{project_name} - 项目名字
root 是项目存放的地址,这个根据自己实际情况修改

配置好后重启 Nginx 服务

$ nginx -s reload

安装 PHP

添加 PPA

$ sudo apt-get install python-software-properties software-properties-common

$ sudo add-apt-repository ppa:ondrej/php

$ sudo apt-get update

安装 PHP7 以及所需的一些扩展

$ sudo apt-get install php7.3-fpm php7.3-mysql php7.3-common php7.3-curl php7.3-cli php7.3-mbstring php7.3-xml php7.3-bcmath

配置 PHP7

$ sudo vim /etc/php/7.3/fpm/php.ini

找到cgi.fix_pathinfo选项,去掉注释,然后将值设置为0

cgi.fix_pathinfo=0

重启 PHP7

$ sudo service php7.3-fpm restart

安装MySQL

$ sudo apt-get install mysql-server-5.7 mysql-client-5.7

途中会提示设置MySQL的密码,安装后运行:

$ mysql -uroot -p

安装 Git

$ sudo apt-get install git

安装 Composer

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

$ php composer-setup.php

$ php -r "unlink('composer-setup.php');"

$ sudo mv composer.phar /usr/bin/composer

安装 Certbot

$ sudo apt-get update

$ sudo apt-get install software-properties-common

$ sudo add-apt-repository ppa:certbot/certbot

$ sudo apt-get update

$ sudo apt-get install python-certbot-nginx 

给项目设置证书,此命令会自动设置 nginx 配置,无需手动设置。

$ sudo certbot --nginx

设置部署公钥

为了方便部署等,这一步必须要设置,首先生成 ssh-key

$ ssh-keygen -t rsa -b 4096

将对应的公钥复制,并在对应的项目仓库部署公钥处设置读权限

$ cat ~/.ssh/id_rsa.pub

安装 Redis

$ sudo apt-get install redis-server

使用

$ redis-cli

安装项目

下载项目

$ cd /var/www

$ git clone git@....

设置项目访问权限

$ chown -R www-data:www-data {project_directory}

切忌:不要将项目权限设置为 777,项目权限只能设置为 755

安装项目依赖

$ composer install -vvv

设置项目配置

$ cp .env.example .env
本作品采用《CC 协议》,转载必须注明作者和本文链接
Nothing is impossible. —— @Jiajian Chan
本帖由系统于 3年前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

服务器还是使用 deploy_key 会好点

3年前 评论

都用上PHP7.3 了

3年前 评论

能否介绍下 部署 HTTPS 的域名配置?

3年前 评论

执行验证composer安装包文件完整性时,php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

会返回 Installer corrupt , 并将安装包删除 是否存在问题

2年前 评论
laravel_denghy 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!