Laravel 项目部署到云服务器(CentOS 7 系统)
手头有一台买来搭梯子的搬瓦工云服务器,系统是Centos 7,正好拿来练习下部署Laravel项目。这里使用XShell链接到云主机,并且所有操作都在root账号下操作,非root账号时终端命令前面需添加
sudo
。
LNMP 环境搭建
参考本论坛大牛的这篇:Laravel 之道特别篇一: yum 安装 LNMP 环境 。
我的云主机已经是Centos 7,所以不用安装Centos 7 的步骤。期间可能会遇到nginx配置好了,访问主机IP却没有效果的问题,这时候可以尝试重启nginx:systemctl restart nginx
。
安装和配置git
-
开启 Wandisco GIT 源,这样能保证下载到较新版本的git。开启方法:
- 云主机终端输入以下代码:
vi /etc/yum.repos.d/wandisco-git.repo
这样就在
/etc/yum.repos.d/
目录新建了一个 yum 源文件wandisco-git.repo
。
按键盘上的i
或o
进入编辑模式,复制粘贴以下代码:[wandisco-git] name=Wandisco GIT Repository baseurl=http://opensource.wandisco.com/centos/7/git/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
按
esc
键退出编辑模式,输入:wq
保存并退出 vi/vim 编辑器。 - 导入GPG keys
rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
- 安装git
yum install git
- 查看版本号
git --version
我这里安装的版本是2.18.0 。
- 云主机终端输入以下代码:
-
配置git
运行以下命令:git config --global user.name "Your Name" git config --global user.email "youremail@yourdomain.com"
用户名和邮箱改为你自己的。
-
生成密钥对
密钥对生成后,将公钥 id_rsa.pub
的内容拷贝添加到你的github上,添加地址: https://github.com/settings/keys 。
安装Composer
Composer 依赖 php-cli,该应用已经在搭建LNMP环境的时候安装了,这里不需要再次安装。Composer 安装步骤依次如下:
yum -y update
cd /tmp
curl -sS https://getcomposer.org/installer | php
让composer全局可用:
mv composer.phar /usr/local/bin/composer
安装redis
依次运行以下命令:
yum install epel-release
yum install redis -y
systemctl start redis.service
systemctl enable redis
检查运行状态:
systemctl status redis.service
如看到Active: active (running) ...
则表示redis已在运行中。
测试redis:
redis-cli ping
如输出PONG
,则表示redis已经可以连通。
Laravel项目安装
拉取github上的Laravel项目代码
cd /www/wwwroot
git clone git@github.com:Your-User-Name/larabbs.git larabbs
将clone后面的地址替换成你自己的github上的项目地址。
安装依赖
cd larabbs
composer install
安装过程中,如果缺少相关php扩展,会有报错。从报错信息中,将所有缺少的扩展记录下来,逐个安装。
如,缺少pdo
扩展,则运行yum -y install php72w-pdo
,依此类推,安装xxx扩展,则运行yum -y install php72w-xxx
。
安装后重启nginx和php-fpm,依次运行:systemctl restart nginx
和systemctl restart php-fpm
。
配置环境变量
- 在项目目录
larabbs
下复制.env.example
为.env
cp .env.example .env
- 生成APP_KEY
php artisan key:generate
- 打开
.env
进行配置vi ./.env
- 需更改的配置如下,依照备注进行修改
APP_NAME=你的APP名字 APP_ENV=production # 这里设为生成环境 APP_KEY=base64:前面生成的key不用改 APP_DEBUG=false # 关闭调试模式 APP_URL=你的主机地址 LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=larabbs DB_USERNAME=root DB_PASSWORD=你的数据库密码 BROADCAST_DRIVER=log CACHE_DRIVER=redis # 这里使用redis SESSION_DRIVER=file SESSION_LIFETIME=120 QUEUE_DRIVER=redis # 这里使用redis . . . MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=25 MAIL_USERNAME=你的QQ邮箱 MAIL_PASSWORD=你的smtp服务的密码 MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=你的邮箱地址 MAIL_FROM_NAME=LaraBBS . . . BAIDU_TRANSLATE_APPID=你的百度翻译APPID BAIDU_TRANSLATE_KEY=你的百度翻译KEY
数据库和数据表创建
登录数据库后运行以下命令创建数据库:
CREATE DATABASE larabbs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
接着进行数据表迁移:
php artisan migrate
如出现这样的报错:could not find driver ...,可能缺少了pdo_mysql扩展,运行
yum -y install php72w-pdo_mysql
安装。安装后同样重启 nginx 和 php-fpm 。
Nginx配置
在 /etc/nginx/conf.d 下面新建 larabbs.conf nginx配置文件,输入下列内容:
server {
listen 80;
server_name localhost;
root /www/wwwroot/larabbs;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
root /www/wwwroot/larabbs;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
注意
conf.d
的其他配置文件,如有listen 80
,需把端口改为其他的,以免跟本配置冲突。
Crontab配置
由于程序中使用到了计划任务,需要在系统中配置Crontab。运行以下命令:
export EDITOR=vi && crontab -e
在打开的文件中,复制粘贴以下代码:
* * * * * php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1
按esc
键并输入:wq
保存退出。
遇到的一些问题
-
运行
composer update
后输出Killed
原因:系统内存不足
解决方法:- 在本地环境运行
composer update
- 上传新的
composer.lock
文件到服务器 - 服务器上运行
composer install
这样就解决的依赖包更新的问题。
- 在本地环境运行
-
运行 composer 时提示:Do not run Composer as root/super user...
虽然有提示,但还是可以正常运行,暂时不用解决。 -
文件写入权限问题
storage、uploads等文件/文件夹没有写入权限会报错,这时需要给他们足够的权限。运行chmod -R 777 /path/to/filename
授权。 -
更改配置后注意重启 nginx 和 php-fpm 。
-
使用yum直接安装 php、mysql 等软件,版本都很低, 需要重新配置yum源。
结尾
在这过程中,感觉centos 7 的 yum 不是很好用,仓库老旧,需要重新配置yum源,不知道这是什么历史遗留问题。
最后,骄傲地贴一下本次折腾的成果吧:http://144.34.151.40/ 。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: