摘要:如果服務(wù)器中該賬號(hào)的鑰匙對(duì)已經(jīng)存在,并且已經(jīng)將放到該賬號(hào)的設(shè)置中,可以跳過(guò)這一步。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。后續(xù)再進(jìn)行補(bǔ)充做守護(hù)隊(duì)列監(jiān)聽(tīng)進(jìn)程和自動(dòng)部署到服務(wù)器的說(shuō)明。
系統(tǒng)LAMP基礎(chǔ)環(huán)境是已經(jīng)搭建好,記錄要將web項(xiàng)目部署到線上的過(guò)程如下,方便后續(xù)部署新項(xiàng)目時(shí)參考:
laravel項(xiàng)目
ubuntu 16.04
php 7.0
在gitlab中要部署的項(xiàng)目加上your@email.com成員。
如果服務(wù)器中該賬號(hào)的鑰匙對(duì)已經(jīng)存在,并且已經(jīng)將ssh key放到該賬號(hào)的SSH Key gitlab設(shè)置中,可以跳過(guò)這一步。
$ sudo ssh-keygen -C "your@email.com" -t rsa // 直接按下一步,如果想要為秘鑰對(duì)更改名字,可以在這一步中做 $ sudo su $ cd ~/.ssh $ cat id_rsa.pub // 復(fù)制公鑰將其填入到gitlab的SSH Key中配置apache (3)進(jìn)入到/var/www目錄下,克隆項(xiàng)目,并更改相關(guān)的文件權(quán)限
$ cd /var/www // 切回普通賬號(hào) $ su ubuntu $ sudo git clone git@yourprojecturl.com/yourproject.git $ cd yourproject // laravel 需要更改storage文件夾的權(quán)限和bootstrap權(quán)限 $ sudo chmod -R 777 storage/ $ cd bootstrap/ $ sudo chmod -R 777 cache(4)更改apache的DocumentRoot,將/var/www作為訪問(wèn)目錄
$ cd /etc/apache2/sites-available $ sudo vi 000-default.conf // 修改 "DocumentRoot /var/www/html" 為 "DocumentRoot /var/www" // 保存后重啟apache $ sudo service apache2 restart(5)接下來(lái),在瀏覽器中輸入服務(wù)器ip地址,發(fā)現(xiàn)服務(wù)器可以顯示目錄文件,需要禁用目錄列表,并且允許url重定向
$ sudo vi /etc/apache2/sites-available/000-default.conf //增加禁用目錄列表,并允許支持url rewirte,在DocumentRoot下增加如下配置安裝配置Redis (6)由于項(xiàng)目用到redis,需要安裝redisOptions +Includes -Indexes AllowOverride All Order Deny,Allow Allow from all //開(kāi)啟apache rewrite 模塊 $ sudo a2enmod rewrite // 重啟apache $ sudo service apache2 restart
由于使用redis做消息隊(duì)列,稍后需要開(kāi)啟監(jiān)聽(tīng)消息隊(duì)列,下面再做說(shuō)明。
// 安裝redis $ sudo apt-get install redis-server // 查看是否安裝成功 $ ps aux | grep redis //配置遠(yuǎn)程登錄,默認(rèn)redis是不允許遠(yuǎn)程登錄的,需要我們配置, //但如果應(yīng)用服務(wù)器和redis安裝在同個(gè)服務(wù)器中,則不需要做這一步。 //編輯redis配置文件 $ sudo vi /etc/redis/redis.conf //注釋掉下面這一行。 # bind 127.0.0.1 //配置密碼登錄 //編輯redis配置文件 $ sudo vi /etc/redis/redis.conf //找到下面這一行并去除注釋 # requirepass foobared #未修改之前 //修改之后,123456是設(shè)置的redis密碼 requirepass 123456 //重啟redis server sudo service redis-server restart安裝配置mongodb (7)項(xiàng)目中使用了mongodb,需要安裝mongodb和mongo擴(kuò)展
// 導(dǎo)入 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
該系統(tǒng)的ubuntu版本為16.04,其他版本的可以查看
https://docs.mongodb.com/manu...
中的其他配置方法
安裝完成后,mongodb的日志文件和配置文件分別在以下路徑中
/var/log/mongodb
/etc/mongod.conf
先用不驗(yàn)證賬號(hào)密碼的方式開(kāi)啟mongodb,在mongodb中創(chuàng)建表和用戶
//查看是否安裝成功 $ mongod --version //查詢是否啟動(dòng)mongodb $ ps aux | grep mongod //沒(méi)有相應(yīng)的進(jìn)程,則啟動(dòng) $ sudo mongod --logpath=/var/log/mongodb/mongod.log --fork //如果啟動(dòng)不成功,查看一下日志,發(fā)現(xiàn)提示exception in initAndListen: 29 Data directory /data/db not found. //我們創(chuàng)建這個(gè)目錄 $ sudo mkdir -p /data/db //再重新啟動(dòng)mongo
我們需要?jiǎng)?chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)數(shù)據(jù)表和用戶
//登錄mongodb $ mongo 127.0.0.1:27017 //我們先在admin數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)賬號(hào) > use admin //創(chuàng)建一個(gè)管理員賬號(hào) > db.createUser({user:"admin",pwd:"123456","customData":{description:"管理員用戶"},roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) //可以用show users查看是否創(chuàng)建成功 > show users //我們系統(tǒng)使用了yourdb數(shù)據(jù)庫(kù),切換yourdb數(shù)據(jù)庫(kù),為yourdb添加賬號(hào) > use yourdb > db.createUser({user:"youruser",pwd:"12345678","customData":{description:"管理員用戶"},roles:[{role:"dbOwner",db:"yourdb"}]}) //創(chuàng)建數(shù)據(jù)表(集合) > db.createCollection("erp_records") //查看是否創(chuàng)建成功 > show collections
為了安全,我們要開(kāi)啟mongodb用戶驗(yàn)證,綁定指定的ip,不允許所有ip連接
// 編輯mongodb配置文件 $ sudo vi /etc/mongod.conf //將文件中的相應(yīng)內(nèi)容更改,121.232.33.33這個(gè)是你自己要綁定的ip bindIp: [127.0.0.1,121.232.33.33] authorization:enabled //保存配置文件 //關(guān)閉mongod進(jìn)程,重新以驗(yàn)證的方式開(kāi)啟 $ sudo killall -9 mongod $ sudo mongod --logpath=/var/log/mongodb/mongod.log --auth --fork //這時(shí)候我們?cè)贉y(cè)試登錄 $ mongo 127.0.0.1:27017 > use yourdb > show collections // 如果提示沒(méi)有驗(yàn)證,那么證明已經(jīng)開(kāi)啟了驗(yàn)證,那么驗(yàn)證之前設(shè)置的賬號(hào)密碼是否正確 > db.auth("youruser","12345678") // 如果顯示1,代表驗(yàn)證通過(guò) //退出登錄 > exit
接下來(lái),我們就要安裝mongodb的php擴(kuò)展
//我們是服務(wù)器是php7,如果不確定可以裝什么擴(kuò)展,可以用以下命令查看 $ sudo apt-cache search php7 $ sudo apt-get install php-mongodb //重啟apache2 $ sudo service apache2 restart安裝配置workerman (8)項(xiàng)目有使用workerman,負(fù)責(zé)websocket連接監(jiān)聽(tīng)推送消息。
該程序?qū)τ趐hp環(huán)境的要求是:
php cli >= 5.4,可以運(yùn)行命令 php -v查看版本
linux系統(tǒng)要求php安裝了posix和pcntl擴(kuò)展。
可以使用 curl -Ss http://www.workerman.net/chec... | php 來(lái)檢測(cè)當(dāng)前環(huán)境是否符合要求。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。
如果支持更大的并發(fā)連接數(shù),建議安裝event擴(kuò)展或者libevent擴(kuò)展(二者作用相同,二選一即可),
我們的php版本為7.0,安裝event
//如果沒(méi)有pecl,需要先安裝 $ sudo apt-get install php-pear php7.0-dev libevent-dev //提示ERROR: `phpize" failed $ pecl install event // 當(dāng)出現(xiàn)Include libevent OpenSSL support [yes] :時(shí),輸入no //切換到root用戶,添加event.so到php-cli的php-ini文件中。 $ sudo su $ echo extension=event.so > /etc/php/7.0/cli/conf.d/event.ini //切換回普通用戶,切換到要保存項(xiàng)目的目錄,clone web-msg-sender項(xiàng)目 $ su ubuntu $ cd /var/www $ git clone https://github.com/walkor/web-msg-sender.git
使用composer安裝,如果沒(méi)有安裝composer,請(qǐng)先安裝。
// 下載composer $ curl -sS https://getcomposer.org/installer | php // 設(shè)置全局 $ sudo mv composer.phar /usr/local/bin/composer // 查看是否安裝成功,如果有版本信息顯示,則說(shuō)明安裝成功 $ composer -v // 更新一下 $ composer self-update // 進(jìn)入到 web-msg-sender 項(xiàng)目中,使用composer進(jìn)行安裝 $ cd /var/www/web-msg-sender/ $ composer install
開(kāi)啟服務(wù)器監(jiān)聽(tīng)
進(jìn)入該項(xiàng)目文件,啟動(dòng)服務(wù)(以守護(hù)進(jìn)程方式) $ php start.php start -d 停止服務(wù) $ php start.php stop 服務(wù)狀態(tài) $ php start.php status
==注意要將前端websoket的連接和應(yīng)用程序curl workerman監(jiān)聽(tīng)的服務(wù)的連接ip
更改為對(duì)應(yīng)workerman所在的服務(wù)器ip中==
我們的隊(duì)列名稱為GetAllPlatformOrder
//進(jìn)入到項(xiàng)目下 $ cd /var/www/yourproject $ php artisan queue:work --queue=GetAllPlatformOrder --daemon
queue:work --daemon 只要運(yùn)行著,就能一直接受請(qǐng)求,不一樣的地方是在這個(gè)運(yùn)行模式下,當(dāng)新的請(qǐng)求到來(lái)的時(shí)候,不重新加載整個(gè)框架,而是直接 fire 動(dòng)作。
但是并不能做后臺(tái)守護(hù)進(jìn)程,關(guān)閉終端進(jìn)程也會(huì)退出,需要再借助一些進(jìn)程控制工具,譬如Supervisor。
//如果沒(méi)有安裝supervisor,要先安裝,已經(jīng)安裝的跳過(guò)這一步 $ sudo apt-get install supervisor $ cd /etc/supervisor/conf.d //創(chuàng)建一個(gè)進(jìn)程配置文件 $ sudo vi laravel_queue_order.conf //內(nèi)容如下: [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 //進(jìn)程數(shù)numprocs由自己確定 //開(kāi)啟進(jìn)程 sudo service supervisor start sudo supervisorctl update sudo supervisorctl reread sudo supervisorctl start laravel_queue_order //可以使用htop查看進(jìn)程是否正確運(yùn)行中 $ htop //如果有出現(xiàn)command為php /var/www/yourproject/artisan queue:work --queue=GetAllPlatformOrder --daemon的進(jìn)程,代表進(jìn)程啟動(dòng)成功上線數(shù)據(jù)庫(kù) (10)數(shù)據(jù)庫(kù)更新到線上。
后續(xù)再進(jìn)行補(bǔ)充Supervisor做守護(hù)隊(duì)列監(jiān)聽(tīng)進(jìn)程和git push自動(dòng)部署到服務(wù)器的說(shuō)明。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/19075.html
摘要:如果服務(wù)器中該賬號(hào)的鑰匙對(duì)已經(jīng)存在,并且已經(jīng)將放到該賬號(hào)的設(shè)置中,可以跳過(guò)這一步。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。后續(xù)再進(jìn)行補(bǔ)充做守護(hù)隊(duì)列監(jiān)聽(tīng)進(jìn)程和自動(dòng)部署到服務(wù)器的說(shuō)明。 系統(tǒng)LAMP基礎(chǔ)環(huán)境是已經(jīng)搭建好,記錄要將web項(xiàng)目部署到線上的過(guò)程如下,方便后續(xù)部署新項(xiàng)目時(shí)參考: laravel項(xiàng)目ubuntu 16.04php 7.0 克隆項(xiàng)目到服務(wù)器 (1)我們使用 your@e...
摘要:背景最近在一些項(xiàng)目需要用到實(shí)時(shí)推送給分組的用戶,前端需要傳輸給后端的信息比較少,通過(guò)多方考慮選擇了通過(guò)框架基于搭建微服務(wù)。擁有定時(shí)器異步客戶端異步異步異步異步消息隊(duì)列等眾多高性能組件。配合的定時(shí)器,也可以定時(shí)推送數(shù)據(jù)。 背景 最近在一些項(xiàng)目需要用到Websocket實(shí)時(shí)推送給分組的用戶,前端需要傳輸給后端的信息比較少,通過(guò)多方考慮選擇了通過(guò)GatewayWorker框架(基于Worke...
摘要:年開(kāi)發(fā)者應(yīng)該熟練使用,并且知道版本更新內(nèi)容。對(duì)開(kāi)發(fā)和運(yùn)維人員來(lái)說(shuō),最希望的就是一次性創(chuàng)建或配置,可以在任意地方正常運(yùn)行。是標(biāo)準(zhǔn)規(guī)范,是開(kāi)發(fā)的實(shí)踐標(biāo)準(zhǔn)。對(duì)開(kāi)發(fā)者來(lái)說(shuō)語(yǔ)言推薦和,全棧的選擇非常多,推薦熱門的 前言 在前天(2018-08-02)已經(jīng)發(fā)布了PHP 7.3.0.beta1 Released 如果你還沒(méi)有使用 PHP7 ,那真的很遺憾。2018年P(guān)HP開(kāi)發(fā)者應(yīng)該熟練使用 PHP7...
閱讀 1087·2021-11-22 14:56
閱讀 1527·2019-08-30 15:55
閱讀 3371·2019-08-30 15:45
閱讀 1664·2019-08-30 13:03
閱讀 2876·2019-08-29 18:47
閱讀 3339·2019-08-29 11:09
閱讀 2647·2019-08-26 18:36
閱讀 2622·2019-08-26 13:55