Laravel --- 部署Laravel项目到vps主要步骤以及遇到的问题记录
买了一个国外的vps,然后搭建环境并且跑了下laravel,折腾了一天半左右,遇到的问题和操作在此记录下:
1.我把本地的代码用git方式上传到github,然后在vps用git下载代码,步骤如下
---本地上传代码
git init # 初始化本地仓库 git add * # 添加所有文件 git commit -m "注释" # 提交 git remote rm origin #如果无法执行git remote add origin xxx可用这条命令解除关联 origin是仓库名 git remote -v #可以查看当前项目连接的是哪个远程仓库地址 git remote add origin https://github.com/894021573/blog.git #把本地仓库和github上的项目关联 git push -u origin master #本地仓库代码推送到github上
注:本地文件有更新,也是按照上面的步骤操作(从git add * 开始),git会自动跳过未修改的文件
---vps下载代码
git clone https://github.com/894021573/blog.git
git pull # 用于更新代码
注:在非空目录下 git clone 项目时会提示错误信息:fatal: destination path '.' already exists and is not an empty directory,解决如下:
---进入非空目录,假设是 /dir/jk1
---git clone --no-checkout https://git.oschina.net/jankerli/test.git tmp
---mv tmp/.git .
---rm -rf tmp
---git reset --hard HEAD
2.vps上的环境是用lnmp一键安装,在修改项目文件权限的时候,报错,chmod: changing permissions of `.user.ini': Operation not permitted
原因:执行lsattr /xxx/blog.cn/.user.ini 可以看到.user.ini文件有一个i的权限
解决:去掉i权限 chattr -i /xxx/blog.cn/.user.ini
3.在laravel下配置nginx的重写规则
配了虚拟主机,直接修改vhost.conf文件,新增了两行,其他未改动
server { listen 80; server_name la.cn ; root "G:/WWW/blog/public"; // 新增行,此处加了public,访问ip的时候就不需要再加public了
// 新增---
location / { index index.html index.htm index.php; #autoindex on; try_files $uri $uri/ /index.php$is_args$query_string; # 主要是这行 }
// 新增---
location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
4.lnmp安装包配置的环境,远程连接数据库
问题:即使修改了host为%也无法连接到数据库
解决:lnmp为了安全默认禁止远程连接
---查看已有的iptables规则,以序号显示:iptables -L -n --line-numbers
---删除对应的DROP规则:iptables -D INPUT 5