ubuntu下搭建lnmp及避坑指南

踩了一些坑,给自己做个记录,以免重复跳坑

0x00 期望环境描述

  • ubuntu18.04(阿里云服务器所以不用安装了)
  • php 7.2
  • Nginx 1.14.0
  • MySql 5.7.30
  • laravel 5.5

0x01 安装Nginx

// 更新包
sudo apt-get update
// 安装nginx
sudo apt-get install nginx
// 启动nginx服务
sudo service nginx start
// 重启
sudo service nginx restart
// 停止
sudo service nginx stop
// 查看nginx版本
nginx -v

0x02 安装PHP

// 更新包(可以没有
// sudo apt-get update
// 安装php
sudo apt-get install php7.2
// 安装php的一些扩展
sudo apt-get install php7.2-mysql php7.2-fpm php7.2-curl php7.2-xml php7.2-gd php7.2-mbstring php-memcached php7.2-zip
// 查看php版本
php -v

0x03 安装MySQL

// 安装mysql,安装过程中记得设置密码
sudo apt-get install mysql-server mysql-client
// 查看mysql版本,登陆mysql之后执行
select version();

0x03 修改nginx配置并启动服务

修改nginx的默认配置文件 /etc/nginx/sites-available/default,修改前可做备份

// 配置文件 /etc/nginx/sites-available/default
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # 将入口设定到laravel项目的public文件夹下
        root /var/www/html/laravel/public;

        # Add index.php to the list if you are using PHP
        # 这里是需要修改的
        index index.php index.html index.htm;
        
        # 本地或公网访问不需要修改,有域名的话要改掉
        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                # try_files $uri $uri/ =404;
                try_files $uri $uri/ /index.php?$query_string;
        }

        # pass PHP scripts to FastCGI server
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;

                # With php-fpm (or other unix sockets):
                #fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # 默认可能会是7.0或其他,要找到自己当前的fpm版本并修改
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
                # With php-cgi (or other tcp sockets):
                #fastcgi_pass 127.0.0.1:9000;
        }
}

给php-fpm赋权限

chmod 777 /run/php/php7.2-fpm.sock

启动各服务

// nginx
sudo service nginx start
// fpm
sudo service php7.2-fpm start
// mysql
sudo service mysql start

0x05 部署Laravel项目

没有git先安装git,安装完了记得配置user.name和user.email

sudo apt-get install git

如果要用ssh访问,生成后进入~/.ssh/id_rsa.pub查看公钥

ssh-keygen -C 'you email address@gmail.com' -t rsa
cat ~/.ssh/id_rsa.pub

安装composer

//下载composer
wget  https://getcomposer.org/composer.phar
// 增加可执行权限
chmod +x composer.phar
// 移动到安装目录
mv composer.phar /usr/local/bin/composer
// 测试composer安装是否成功
composer
// composer换个源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

拉取项目,进入项目文件夹,更新或是安装composer
修改项目文件夹下storage和bootstrap/cache文件夹的权限

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache

配置好数据库 .gitignore和.env后就可以正常访问项目了

0x06 部署过程中踩的坑

0x06.1 php文件无法解析

一般情况下nginx解析不了php文件就是fpm的配置出了问题
首先查看nginx配置的fpm路径是否正确

vim /etc/nginx/sites-available/default

其次查看fpm的配置是否正确

sudo vim /etc/php5/fpm/pool.d/www.conf

排除了这两者之后,就要考虑目录权限的问题了

// 给php-fpm赋权限
chmod 777 /run/php/php7.2-fpm.sock

如果修改了相关服务的配置,需要重启服务
在本次配置的过程中,最终是发现由于sock文件没有权限,所以给了权限之后就可以正常解析了。不过在走弯路的过程中,还尝试了将nginx请求交给9000端口处理,即在nginx配置中设置"fastcgi_pass 127.0.0.1:9000;",同时修改了fpm的配置文件,但是仍然没有解决问题。虽然监听9000端口是windows下使用的比较多,但是linux没道理不可以...

0x06.2 mysql root@localhost没有权限访问

root用户没有权限,那就给他权限

// 登陆进mysql后查看用户权限
use mysql;
// mysql 5.6及其一下版本,将authentication_string换成password
select user,host,authentication_string from user;
// 给root所有权限
// grant privileges on databasename.tablename to 'username'@'host' identified by 'password';
grant all on *.* to 'root'@'%' identified by 'password';
// 刷新权限
flush privileges;
// 如果是修改root权限,还需要将root多余的权限删除
drop user 'username'@'ip';

我碰到的情况就是给root加了权限还是一直无法使用,后来灵机一动删了多余的权限,才发现root具有的多余的无用权限也得删除...

0x06.3 laravel storage没有权限访问

修改项目文件夹下storage和bootstrap/cache文件夹的权限

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache

一开始看到报错之后,就直接给了storage和bootstrap/cache 777权限,但是没能解决问题。后来发现要先改文件所有者,再给它设置权限,感谢这位博主解决了这个头疼问题...

参考文献

  1. ubuntu安装php7.2 https://www.zhaokeli.com/article/8496.html
  2. 如何修复laravel.log无法打开? https://cloud.tencent.com/developer/ask/170024
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361