系統LAMP基礎環境是已經搭建好,記錄要將web項目部署到線上的過程以下,方便後續部署新項目時參考:php
laravel項目
ubuntu 16.04
php 7.0html
在gitlab中要部署的項目加上your@email.com成員。前端
若是服務器中該帳號的鑰匙對已經存在,而且已經將ssh key放到該帳號的SSH Key gitlab設置中,能夠跳過這一步。linux
$ sudo ssh-keygen -C "your@email.com" -t rsa // 直接按下一步,若是想要爲祕鑰對更更名字,能夠在這一步中作 $ sudo su $ cd ~/.ssh $ cat id_rsa.pub // 複製公鑰將其填入到gitlab的SSH Key中
$ 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
$ cd /etc/apache2/sites-available $ sudo vi 000-default.conf // 修改 "DocumentRoot /var/www/html" 爲 "DocumentRoot /var/www" // 保存後重啓apache $ sudo service apache2 restart
$ sudo vi /etc/apache2/sites-available/000-default.conf //增長禁用目錄列表,並容許支持url rewirte,在DocumentRoot下增長以下配置 <Directory "/var/www"> Options +Includes -Indexes AllowOverride All Order Deny,Allow Allow from all </Directory> //開啓apache rewrite 模塊 $ sudo a2enmod rewrite // 重啓apache $ sudo service apache2 restart
因爲使用redis作消息隊列,稍後須要開啓監聽消息隊列,下面再作說明。laravel
// 安裝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 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...
中的其餘配置方法git
安裝完成後,mongodb的日誌文件和配置文件分別在如下路徑中github
/var/log/mongodbweb
/etc/mongod.confredis
先用不驗證帳號密碼的方式開啓mongodb,在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
該程序對於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中==
咱們的隊列名稱爲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的進程,表明進程啓動成功
後續再進行補充Supervisor作守護隊列監聽進程和git push自動部署到服務器的說明。