当前位置: 首页 > 后端技术 > PHP

部署web项目的过程记录,包括laravel、redis、mongodb、workerman的配置过程

时间:2023-03-29 20:19:47 PHP

系统LAMP的基础环境已经搭建完成。将web项目部署到线上的过程记录如下,方便以后部署新项目时参考:Laravel项目ubuntu16.04php7.0将项目克隆到服务器(1)我们使用your@email.com将服务器中的项目git下来,并将your@email.com成员添加到要部署到gitlab的项目中。(2)在服务器上创建your@email.com帐户ssh密钥对。如果账户的密钥对已经存在于服务器中,并且sshkey已经放在账户的SSHKeygitlab设置中,则可以跳过这一步。$sudossh-keygen-C"your@email.com"-trsa//直接下一步,如果要更改密钥对的名称,可以这样做$sudosu$cd~/.ssh$在这一步catid_rsa.pub//复制公钥填入gitlab的SSHKey配置apache(3)进入/var/www目录,克隆项目,更改相关文件权限$cd/var/www//切换回普通账户$suubuntu$sudogitclonegit@yourprojecturl.com/yourproject.git$cdyourproject//laravel需要更改存储文件夹权限和引导权限$sudochmod-R777storage/$cdbootstrap/$sudochmod-R777cache(4)更改apache的DocumentRoot,以/var/www为访问目录$cd/etc/apache2/sites-available$sudovi000-default.conf//修改"DocumentRoot/var/www/html"Savefor"DocumentRoot/var/www"//并重启apache$sudoserviceapache2restart(5)接下来在浏览器中输入服务器ip地址,发现服务器可以显示目录文件。您需要禁用目录列表并允许url重定向$sudovi/etc/apache2/sites-available/000-default.conf//添加禁用目录列表,并允许支持urlrewirte,在DocumentRoot下添加以下配置Options+Includes-IndexesAllowOverrideAllOrderDeny,AllowAllowfromall//启用apache重写模块$sudoa2enmodrewrite//重启apache$sudo服务apache2restart安装配置redis(六)由于项目中使用了redis,所以需要安装redis。由于使用redis作为消息队列,后面需要开始监听消息队列。下面会说明//安装redis$sudoapt-getinstallredis-server//查看是否安装成功$psaux|grepredis//配置远程登录,默认redis是不允许远程登录的,我们需要配置,//但是如果应用服务器和redis安装在同一台服务器上,则不需要做这一步。//编辑redis配置文件$sudovi/etc/redis/redis.conf//注释掉下面一行。#bind127.0.0.1//配置密码登录//编辑redis配置文件$sudovi/etc/redis/redis.conf//找到下面一行,去掉注释#requirepassfoobared#Unmodifiedbefore//修改后为123456Thesetredispasswordrequirepass123456//restartredisserversudoserviceredis-serverrestart安装配置mongodb(7)项目中使用了mongodb,需要安装mongodb和mongoextension//importMongoDBpublicGPGKey$sudoapt-keyadv--keyserverhkp://keyserver.ubuntu.com:80--recv0C49F3730359A14518585931BC711F9BA15703C6//为MongoDB创建一个列表文件$echo"deb[arch=amd64,arm64]http://repo.mongodb.org/apt/ubuntuxenial/mongodb-org/3.4multiverse”|sudotee/etc/apt/sources.list.d/mongodb-org-3.4.list//重新加载本地包数据库$sudoapt-getupdate//安装MongoDB包$sudoapt-getinstall-ymongodb-org本系统的ubuntu版本为16.04。其他版本可以在https://docs.mongodb.com/manu查看其他配置方式...安装完成后mongodb的日志文件和配置文件分别在如下路径/var/log/mongodb/etc/mongod.conf先不验证账号密码打开mongodb,在mongodb中创建表和用户//检查是否安装成功$mongod--version//查询是否启动了mongodb$psaux|grepmongod//如果没有对应的进程,则启动$sudomongod--logpath=/var/log/mongodb/mongod.log--fork//如果启动不成功,查看日志,在initAndListen中发现exception:29Datadirectory/data/dbnotfound.//我们创建这个目录$sudomkdir-p/data/db//重启mongo,我们需要创建对应的数据库数据表和用户//loginmongodb$mongo127.0.0.1:27017//我们先在admin数据库中创建一个账号>使用admin//创建管理员帐户>db.createUser({user:"admin",pwd:"123456","customData":{description:"adminuser"},roles:[{role:"userAdminAnyDatabase",db:"admin"}]})//可以使用showusers查看是否创建成功>showusers//我们系统使用yourdb数据库,切换yourdb数据库,为yourdb添加一个账号>useyourdb>db.createUser({user:"youruser",pwd:"12345678","customData":{description:"adminuser"},roles:[{role:"dbOwner",db:"yourdb"}]})//创建数据表(集合)>Db。createCollection("erp_records")//查看是否创建成功>showcollections为了安全,我们需要开启mongodb用户认证,绑定指定ip,不允许所有ip连接//编辑mongodb配置文件$sudovi/等/蒙神。conf//更改文件中的相应内容,121.232.33.33是你自己要绑定的ipbindIp:[127.0.0.1,121.232.33.33]authorization:enabled//保存配置文件//关闭mongod进程,重新authenticate开启方式$sudokillall-9mongod$sudomongod--logpath=/var/log/mongodb/mongod.log--auth--fork//此时我们测试登录$mongo127.0.0.1:27017>useyourdb>showcollections//如果提示没有通过验证,则证明已开启验证,然后验证之前设置的账号密码是否正确?db.auth("youruser","12345678")//如果显示1,表示验证通过//注销>退出接下来我们安装mongodb的php扩展//我们的服务器是php7。如果不确定可以安装哪些扩展,可以使用以下命令查看$sudoapt-cachesearchphp7$sudoapt-getinstallphp-mongodb//restartapache2$sudoserviceapache2restartinstallconfigurationworkerman(8)项目有使用workerman来监控websocket连接和推送消息。程序对php环境的要求是:phpcli>=5.4,可以运行命令php-v查看版本。linux系统要求php安装有posix和pcntl扩展。您可以使用curl-Sshttp://www.workerman.net/chec...|php查看当前环境是否符合要求。如果没有,则需要根据提示安装必要的扩展。如果支持更大的并发连接数,建议安装event扩展或者libevent扩展(两者效果一样,可以二选一),我们的php版本是7.0,安装event//如果有是没有pecl,需要先安装$sudoapt-getinstallphp-pearphp7.0-devlibevent-dev//提示ERROR:`phpize'failed$peclinstallevent//当IncludelibeventOpenSSLsupport[yes]:出现,输入no//切换到root用户,在php-cli的php-ini文件中添加event.so。$sudosu$echoextension=event.so>/etc/php/7.0/cli/conf.d/event.ini//切换回普通用户,切换到你要保存项目的目录,cloneweb-msg-senderproject$suubuntu$cd/var/www$gitclonehttps://github.com/walkor/web-msg-sender.git使用composer安装,如果没有安装composer请先安装。//下载作曲家$curl-sShttps://getcomposer.org/installer|php//设置全局$sudomvcomposer.phar/usr/local/bin/composer//查看是否安装成功,如果有显示版本信息,则表示安装成功$composer-v//update$composerself-update//进入web-msg-sender项目,使用composer安装$cd/var/www/web-msg-sender/$composerinstallopen服务器监听并进入项目文件,启动服务(在daemonmode)$phpstart.phpstart-d停止服务$phpstart.phpstopservicestatus$phpstart.phpstatus==注意前端websoket的连接和应用监听的服务的连接ip将程序curlworkerman改为workerman所在的对应服务器ip==启用队列监控(9)启用消息队列监控我们的队列名称为GetAllPlatformOrder//进入项目$cd/var/www/yourproject$phpartisanqueue:work--queue=GetAllPlatformOrder--daemonqueue:work--daemon总是可以接受请求,只要它正在运行。不同的是,在这种运行模式下,当有新的请求到来时,它不会重新启动,而是直接加载整个框架,直接触发动作。但是不能作为后台守护进程使用,终端关闭时进程也会退出。需要用到一些进程控制工具,比如Supervisor。//如果没有安装supervisor,先安装,如果已经安装则跳过这一步$sudoapt-getinstallsupervisor$cd/etc/supervisor/conf.d//创建进程配置文件$sudovilaravel_queue_order.conf//内容如下:[program:laravel_queue_order]process_name=%(program_name)s_%(process_num)02dcommand=php/var/www/yourproject/artisanqueue:work--queue=GetAllPlatformOrder--daemondirectory=/var/www/yourprojectautostart=trueautorestart=truenumprocs=4stdout_logfile=/var/www/yourproject/storage/logs/laravel_redis_queue.log//进程数numprocs自己定//开启进程sudoservicesupervisorstartssudosupervisorctlupdatesudosupervisorctlrereadsudosupervisorctlstartlaravel_queue_order//可以使用htop查看进程是否正确运行$htop//如果有进程命令为php/var/www/yourproject/artisanqueue:work--queue=GetAllPlatformOrder--daemon,表示该过程开始成功并上线数据库(10)数据库更新上线。后续会补充说明Supervisor作为守护队列监控进程以及gitpush自动部署到服务器。