laravel项目mysql和redis_部署web项目的过程记录,包括laravel,redis,mongodb,workerman的配置过程...

系统LAMP基础环境是已经搭建好,记录要将web项目部署到线上的过程如下,方便后续部署新项目时参考:

laravel项目

ubuntu 16.04

php 7.0

克隆项目到服务器

(1)我们使用 your@email.com的账号来在服务器中git下来项目

在gitlab中要部署的项目加上your@email.com成员。

(2)在服务器上创建your@email.com账号ssh钥匙对。

如果服务器中该账号的钥匙对已经存在,并且已经将ssh key放到该账号的SSH Key gitlab设置中,可以跳过这一步。

$ sudo ssh-keygen -C "your@email.com" -t rsa

// 直接按下一步,如果想要为秘钥对更改名字,可以在这一步中做

$ sudo su

$ cd ~/.ssh

$ cat id_rsa.pub

// 复制公钥将其填入到gitlab的SSH Key中

配置apache

(3)进入到/var/www目录下,克隆项目,并更改相关的文件权限

$ cd /var/www

// 切回普通账号

$ su ubuntu

$ sudo git clone git@yourprojecturl.com/yourproject.git

$ cd yourproject

// laravel 需要更改storage文件夹的权限和bootstrap权限

$ sudo chmod -R 777 storage/

$ cd bootstrap/

$ sudo chmod -R 777 cache

(4)更改apache的DocumentRoot,将/var/www作为访问目录

$ cd /etc/apache2/sites-available

$ sudo vi 000-default.conf

// 修改 "DocumentRoot /var/www/html" 为 "DocumentRoot /var/www"

// 保存后重启apache

$ sudo service apache2 restart

(5)接下来,在浏览器中输入服务器ip地址,发现服务器可以显示目录文件,需要禁用目录列表,并且允许url重定向

$ sudo vi /etc/apache2/sites-available/000-default.conf

//增加禁用目录列表,并允许支持url rewirte,在DocumentRoot下增加如下配置

Options +Includes -Indexes

AllowOverride All

Order Deny,Allow

Allow from all

//开启apache rewrite 模块

$ sudo a2enmod rewrite

// 重启apache

$ sudo service apache2 restart

安装配置Redis

(6)由于项目用到redis,需要安装redis

由于使用redis做消息队列,稍后需要开启监听消息队列,下面再做说明。

// 安装redis

$ sudo apt-get install redis-server

// 查看是否安装成功

$ ps aux | grep redis

//配置远程登录,默认redis是不允许远程登录的,需要我们配置,

//但如果应用服务器和redis安装在同个服务器中,则不需要做这一步。

//编辑redis配置文件

$ sudo vi /etc/redis/redis.conf

//注释掉下面这一行。

# bind 127.0.0.1

//配置密码登录

//编辑redis配置文件

$ sudo vi /etc/redis/redis.conf

//找到下面这一行并去除注释

# requirepass foobared #未修改之前

//修改之后,123456是设置的redis密码

requirepass 123456

//重启redis server

sudo service redis-server restart

安装配置mongodb

(7)项目中使用了mongodb,需要安装mongodb和mongo扩展

// 导入 MongoDB public GPG Key

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

// Create a list file for MongoDB

$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

//Reload local package database

$ sudo apt-get update

//Install the MongoDB packages

$ sudo apt-get install -y mongodb-org

该系统的ubuntu版本为16.04,其他版本的可以查看

https://docs.mongodb.com/manu...

中的其他配置方法

安装完成后,mongodb的日志文件和配置文件分别在以下路径中

/var/log/mongodb

/etc/mongod.conf

先用不验证账号密码的方式开启mongodb,在mongodb中创建表和用户

//查看是否安装成功

$ mongod --version

//查询是否启动mongodb

$ ps aux | grep mongod

//没有相应的进程,则启动

$ sudo mongod --logpath=/var/log/mongodb/mongod.log --fork

//如果启动不成功,查看一下日志,发现提示exception in initAndListen: 29 Data directory /data/db not found.

//我们创建这个目录

$ sudo mkdir -p /data/db

//再重新启动mongo

我们需要创建相应的数据库数据表和用户

//登录mongodb

$ mongo 127.0.0.1:27017

//我们先在admin数据库创建一个账号

> use admin

//创建一个管理员账号

> db.createUser({user:"admin",pwd:"123456","customData":{description:"管理员用户"},roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

//可以用show users查看是否创建成功

> show users

//我们系统使用了yourdb数据库,切换yourdb数据库,为yourdb添加账号

> use yourdb

> db.createUser({user:"youruser",pwd:"12345678","customData":{description:"管理员用户"},roles:[{role:"dbOwner",db:"yourdb"}]})

//创建数据表(集合)

> db.createCollection("erp_records")

//查看是否创建成功

> show collections

为了安全,我们要开启mongodb用户验证,绑定指定的ip,不允许所有ip连接

// 编辑mongodb配置文件

$ sudo vi /etc/mongod.conf

//将文件中的相应内容更改,121.232.33.33这个是你自己要绑定的ip

bindIp: [127.0.0.1,121.232.33.33]

authorization:enabled

//保存配置文件

//关闭mongod进程,重新以验证的方式开启

$ sudo killall -9 mongod

$ sudo mongod --logpath=/var/log/mongodb/mongod.log --auth --fork

//这时候我们再测试登录

$ mongo 127.0.0.1:27017

> use yourdb

> show collections

// 如果提示没有验证,那么证明已经开启了验证,那么验证之前设置的账号密码是否正确

> db.auth("youruser","12345678")

// 如果显示1,代表验证通过

//退出登录

> exit

接下来,我们就要安装mongodb的php扩展

//我们是服务器是php7,如果不确定可以装什么扩展,可以用以下命令查看

$ sudo apt-cache search php7

$ sudo apt-get install php-mongodb

//重启apache2

$ sudo service apache2 restart

安装配置workerman

(8)项目有使用workerman,负责websocket连接监听推送消息。

该程序对于php环境的要求是:

php cli >= 5.4,可以运行命令 php -v查看版本

linux系统要求php安装了posix和pcntl扩展。

可以使用 curl -Ss http://www.workerman.net/chec... | php 来检测当前环境是否符合要求。如果不符合,需要根据提示安装必要的扩展。

如果支持更大的并发连接数,建议安装event扩展或者libevent扩展(二者作用相同,二选一即可),

我们的php版本为7.0,安装event

//如果没有pecl,需要先安装

$ sudo apt-get install php-pear php7.0-dev libevent-dev

//提示ERROR: `phpize' failed

$ pecl install event

// 当出现Include libevent OpenSSL support [yes] :时,输入no

//切换到root用户,添加event.so到php-cli的php-ini文件中。

$ sudo su

$ echo extension=event.so > /etc/php/7.0/cli/conf.d/event.ini

//切换回普通用户,切换到要保存项目的目录,clone web-msg-sender项目

$ su ubuntu

$ cd /var/www

$ git clone https://github.com/walkor/web-msg-sender.git

使用composer安装,如果没有安装composer,请先安装。

// 下载composer

$ curl -sS https://getcomposer.org/installer | php

// 设置全局

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

// 查看是否安装成功,如果有版本信息显示,则说明安装成功

$ composer -v

// 更新一下

$ composer self-update

// 进入到 web-msg-sender 项目中,使用composer进行安装

$ cd /var/www/web-msg-sender/

$ composer install

开启服务器监听

进入该项目文件,启动服务(以守护进程方式)

$ php start.php start -d

停止服务

$ php start.php stop

服务状态

$ php start.php status

==注意要将前端websoket的连接和应用程序curl workerman监听的服务的连接ip

更改为对应workerman所在的服务器ip中==

开启队列监听

(9)开启消息队列监听

我们的队列名称为GetAllPlatformOrder

//进入到项目下

$ cd /var/www/yourproject

$ php artisan queue:work --queue=GetAllPlatformOrder --daemon

queue:work --daemon 只要运行着,就能一直接受请求,不一样的地方是在这个运行模式下,当新的请求到来的时候,不重新加载整个框架,而是直接 fire 动作。

但是并不能做后台守护进程,关闭终端进程也会退出,需要再借助一些进程控制工具,譬如Supervisor。

//如果没有安装supervisor,要先安装,已经安装的跳过这一步

$ sudo apt-get install supervisor

$ cd /etc/supervisor/conf.d

//创建一个进程配置文件

$ sudo vi laravel_queue_order.conf

//内容如下:

[program:laravel_queue_order]

process_name=%(program_name)s_%(process_num)02d

command=php /var/www/yourproject/artisan queue:work --queue=GetAllPlatformOrder --daemon

directory=/var/www/yourproject

autostart=true

autorestart=true

numprocs=4

stdout_logfile=/var/www/yourproject/storage/logs/laravel_redis_queue.log

//进程数numprocs由自己确定

//开启进程

sudo service supervisor start

sudo supervisorctl update

sudo supervisorctl reread

sudo supervisorctl start laravel_queue_order

//可以使用htop查看进程是否正确运行中

$ htop

//如果有出现command为php /var/www/yourproject/artisan queue:work --queue=GetAllPlatformOrder --daemon的进程,代表进程启动成功

上线数据库

(10)数据库更新到线上。

后续再进行补充Supervisor做守护队列监听进程和git push自动部署到服务器的说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值