摘要:如果服務(wù)器中該賬號的鑰匙對已經(jīng)存在,并且已經(jīng)將放到該賬號的設(shè)置中,可以跳過這一步。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。后續(xù)再進(jìn)行補(bǔ)充做守護(hù)隊(duì)列監(jiān)聽進(jìn)程和自動部署到服務(wù)器的說明。
系統(tǒng)LAMP基礎(chǔ)環(huán)境是已經(jīng)搭建好,記錄要將web項(xiàng)目部署到線上的過程如下,方便后續(xù)部署新項(xiàng)目時參考:
laravel項(xiàng)目
ubuntu 16.04
php 7.0
在gitlab中要部署的項(xiàng)目加上your@email.com成員。
如果服務(wù)器中該賬號的鑰匙對已經(jīng)存在,并且已經(jīng)將ssh key放到該賬號的SSH Key gitlab設(shè)置中,可以跳過這一步。
$ sudo ssh-keygen -C "your@email.com" -t rsa // 直接按下一步,如果想要為秘鑰對更改名字,可以在這一步中做 $ 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 // 切回普通賬號 $ 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作為訪問目錄
$ cd /etc/apache2/sites-available $ sudo vi 000-default.conf // 修改 "DocumentRoot /var/www/html" 為 "DocumentRoot /var/www" // 保存后重啟apache $ sudo service apache2 restart(5)接下來,在瀏覽器中輸入服務(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 //開啟apache rewrite 模塊 $ sudo a2enmod rewrite // 重啟apache $ sudo service apache2 restart
由于使用redis做消息隊(duì)列,稍后需要開啟監(jiān)聽消息隊(duì)列,下面再做說明。
// 安裝redis $ sudo apt-get install redis-server // 查看是否安裝成功 $ ps aux | grep redis //配置遠(yuǎn)程登錄,默認(rèn)redis是不允許遠(yuǎn)程登錄的,需要我們配置, //但如果應(yīng)用服務(wù)器和redis安裝在同個服務(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)證賬號密碼的方式開啟mongodb,在mongodb中創(chuàng)建表和用戶
//查看是否安裝成功 $ mongod --version //查詢是否啟動mongodb $ ps aux | grep mongod //沒有相應(yīng)的進(jìn)程,則啟動 $ sudo mongod --logpath=/var/log/mongodb/mongod.log --fork //如果啟動不成功,查看一下日志,發(fā)現(xiàn)提示exception in initAndListen: 29 Data directory /data/db not found. //我們創(chuàng)建這個目錄 $ sudo mkdir -p /data/db //再重新啟動mongo
我們需要創(chuàng)建相應(yīng)的數(shù)據(jù)庫數(shù)據(jù)表和用戶
//登錄mongodb $ mongo 127.0.0.1:27017 //我們先在admin數(shù)據(jù)庫創(chuàng)建一個賬號 > use admin //創(chuàng)建一個管理員賬號 > db.createUser({user:"admin",pwd:"123456","customData":{description:"管理員用戶"},roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) //可以用show users查看是否創(chuàng)建成功 > show users //我們系統(tǒng)使用了yourdb數(shù)據(jù)庫,切換yourdb數(shù)據(jù)庫,為yourdb添加賬號 > 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
為了安全,我們要開啟mongodb用戶驗(yàn)證,綁定指定的ip,不允許所有ip連接
// 編輯mongodb配置文件 $ sudo vi /etc/mongod.conf //將文件中的相應(yīng)內(nèi)容更改,121.232.33.33這個是你自己要綁定的ip bindIp: [127.0.0.1,121.232.33.33] authorization:enabled //保存配置文件 //關(guān)閉mongod進(jìn)程,重新以驗(yàn)證的方式開啟 $ sudo killall -9 mongod $ sudo mongod --logpath=/var/log/mongodb/mongod.log --auth --fork //這時候我們再測試登錄 $ mongo 127.0.0.1:27017 > use yourdb > show collections // 如果提示沒有驗(yàn)證,那么證明已經(jīng)開啟了驗(yàn)證,那么驗(yàn)證之前設(shè)置的賬號密碼是否正確 > db.auth("youruser","12345678") // 如果顯示1,代表驗(yàn)證通過 //退出登錄 > exit
接下來,我們就要安裝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)聽推送消息。
該程序?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 來檢測當(dāng)前環(huán)境是否符合要求。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。
如果支持更大的并發(fā)連接數(shù),建議安裝event擴(kuò)展或者libevent擴(kuò)展(二者作用相同,二選一即可),
我們的php版本為7.0,安裝event
//如果沒有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] :時,輸入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安裝,如果沒有安裝composer,請先安裝。
// 下載composer $ curl -sS https://getcomposer.org/installer | php // 設(shè)置全局 $ sudo mv composer.phar /usr/local/bin/composer // 查看是否安裝成功,如果有版本信息顯示,則說明安裝成功 $ composer -v // 更新一下 $ composer self-update // 進(jìn)入到 web-msg-sender 項(xiàng)目中,使用composer進(jìn)行安裝 $ cd /var/www/web-msg-sender/ $ composer install
開啟服務(wù)器監(jiān)聽
進(jìn)入該項(xià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)聽的服務(wù)的連接ip
更改為對應(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)行著,就能一直接受請求,不一樣的地方是在這個運(yùn)行模式下,當(dāng)新的請求到來的時候,不重新加載整個框架,而是直接 fire 動作。
但是并不能做后臺守護(hù)進(jìn)程,關(guān)閉終端進(jìn)程也會退出,需要再借助一些進(jìn)程控制工具,譬如Supervisor。
//如果沒有安裝supervisor,要先安裝,已經(jīng)安裝的跳過這一步 $ sudo apt-get install supervisor $ cd /etc/supervisor/conf.d //創(chuàng)建一個進(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由自己確定 //開啟進(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)程啟動成功上線數(shù)據(jù)庫 (10)數(shù)據(jù)庫更新到線上。
后續(xù)再進(jìn)行補(bǔ)充Supervisor做守護(hù)隊(duì)列監(jiān)聽進(jìn)程和git push自動部署到服務(wù)器的說明。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/25770.html
摘要:如果服務(wù)器中該賬號的鑰匙對已經(jīng)存在,并且已經(jīng)將放到該賬號的設(shè)置中,可以跳過這一步。如果不符合,需要根據(jù)提示安裝必要的擴(kuò)展。后續(xù)再進(jìn)行補(bǔ)充做守護(hù)隊(duì)列監(jiān)聽進(jìn)程和自動部署到服務(wù)器的說明。 系統(tǒng)LAMP基礎(chǔ)環(huán)境是已經(jīng)搭建好,記錄要將web項(xiàng)目部署到線上的過程如下,方便后續(xù)部署新項(xiàng)目時參考: laravel項(xiàng)目ubuntu 16.04php 7.0 克隆項(xiàng)目到服務(wù)器 (1)我們使用 your@e...
摘要:背景最近在一些項(xiàng)目需要用到實(shí)時推送給分組的用戶,前端需要傳輸給后端的信息比較少,通過多方考慮選擇了通過框架基于搭建微服務(wù)。擁有定時器異步客戶端異步異步異步異步消息隊(duì)列等眾多高性能組件。配合的定時器,也可以定時推送數(shù)據(jù)。 背景 最近在一些項(xiàng)目需要用到Websocket實(shí)時推送給分組的用戶,前端需要傳輸給后端的信息比較少,通過多方考慮選擇了通過GatewayWorker框架(基于Worke...
摘要:年開發(fā)者應(yīng)該熟練使用,并且知道版本更新內(nèi)容。對開發(fā)和運(yùn)維人員來說,最希望的就是一次性創(chuàng)建或配置,可以在任意地方正常運(yùn)行。是標(biāo)準(zhǔn)規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。對開發(fā)者來說語言推薦和,全棧的選擇非常多,推薦熱門的 前言 在前天(2018-08-02)已經(jīng)發(fā)布了PHP 7.3.0.beta1 Released 如果你還沒有使用 PHP7 ,那真的很遺憾。2018年P(guān)HP開發(fā)者應(yīng)該熟練使用 PHP7...
閱讀 4133·2021-11-22 13:52
閱讀 2500·2021-11-22 13:52
閱讀 3671·2021-11-19 09:59
閱讀 1173·2021-11-17 09:33
閱讀 2435·2019-08-30 10:53
閱讀 1189·2019-08-29 17:28
閱讀 1295·2019-08-29 17:03
閱讀 3087·2019-08-26 11:31