一、搭建項目環境
1.在Ubuntu中安裝Docker
更新ubuntu的apt源索引
sudo apt-get update
安裝包允許apt通過HTTPS使用倉庫
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
設置Docker穩定版倉庫
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
添加倉庫后,更新apt源索引
sudo apt-get update
安裝最新版Docker CE(社區版)
sudo apt-get install docker-ce
檢查Docker CE是否安裝正確
sudo docker run hello-world
出現如下信息,表示安裝成功
為了避免每次命令都輸入sudo,可以設置用戶權限,注意執行后須注銷重新登錄
sudo usermod -a -G docker $USER
啟動docker
sudo service docker start
2.安裝Docker-compose
1.進入https://github.com/docker/compose/releases 查看最新版本,當前版本為1.23.1
sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2.設置權限
sudo chmod +x /usr/local/bin/docker-compose
3.查看是否安裝成功
docker-compose --version
如果報 [12147] Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg 應該是包沒下載完整,1、2、3步驟再來一遍。
3.下載后台鏡像
http://git.internal.taqu.cn/dev-tools/docker
將鏡像放進ubuntu系統中,解壓到docker目錄下 ,就會產生下面5個文件(長方形中)
cd ~/docker/
4.運行sh腳本,提取鏡像文件
bash make_xy.sh XXX 8888 ~/touch_code/bbs ~/logs
XXX就是你的項目名 我的是項目名是grow_score
bash make_xy.sh grow_score 8888 ~/touch_code/bbs ~/logs
就會自動生成圖上剩余文件夾
進入你建立的項目,修改yaml文件中的路徑
- /home/liugang/touch_code/grow_score:/data/html/grow_score - /home/liugang/touch_code/xyframework:/data/html/xyframework - /home/liugang/logs/php-fpm:/data/logs/php-fpm - /home/liugang/logs/sfpm:/data/logs/sfpm - /home/liugang/logs/scli:/data/logs/scli
關閉Nginx中的數據加密,在www.conf中添加 gzip off;
打開控制台,執行框架
sudo make run
makefile文件中有項目執行指令
sudo make stop停止項目等等
5.git拉取xy框架和項目空框架
項目空框架:http://git.internal.taqu.cn/common/privilege/tree/branch_52week_191224
xy框架:http://git.internal.taqu.cn/framework/xy
將兩個框架內部文件分別對應文件名放置到 ~ 文件夾中的touch_code中
此時會生成如下兩圖
包名就是項目名要,跟yaml配置一致
1代表版本v1
config是配置文件
service是代碼放置的地方

<?php class GrowScoreService extends BaseService { public function getLevel(){ return '1'; } }
6.更改ms中網管配置
ifconfig
查看虛擬機ip
{ "addrs": [{ "url": "http://10.10.30.161:8888/", "env": 0, "protocol": "json", "stop": false }], "type": "php", "name": "grow_score" }
7.前端調用
網址直接調用 :host:port/v1/Soa/jService?service=xxx&method=xxx&form=xxx
-
form是soa的參數的base64
-
soa參數是json數組的格式
-
比如add(1,2) 參數是[1,2]
http://10.10.30.161:8888/v1/Soa/jService?service=growScore&method=getLevel
PS:注意php文件名大小寫要和路徑一致
二、連接數據庫
1.安裝mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
安裝成功后可以通過下面的命令測試是否安裝成功:
sudo netstat -tap | grep mysql
現在設置mysql允許遠程訪問,首先編輯文件/etc/mysql/mysql.conf.d/mysqld.cnf:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注釋掉bind-address = 127.0.0.1
保存退出,然后進入mysql服務,執行授權命令:
進入數據庫,默認密碼123456
mysql -uroot -p
grant all on *.* to root@'%' identified by '你的密碼' with grant option;
flush privileges;
然后執行quit命令退出mysql服務,執行如下命令重啟mysql:
service mysql restart
這樣,我們的數據庫就可以被遠程連接了。
2.修改php.ini
sudo docker ps
找到docker中運行的php
1d778593e84d = xxxxxxxx
docker exec -it xxxxxxxxxx /bin/bash
cd app/program/php-7.1.8/conf/
修改php.ini中的default.socket
查詢default.socket相當於Ctrl+F,按N下一行
/default.socket
pdo_mysql.default.socket =/var/run/mysqld/mysqld.sock
mysqli.default_socket =/var/run/mysqld/mysqld.sock
將擴展打開 去掉這5個前邊的分號
保存退出。
在數據庫中運行這兩個即可連接數據庫
$ sudo mysql -u root # I had to use "sudo" since is new installation mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart
$ sudo mysql -u root # I had to use "sudo" since is new installation mysql> USE mysql; mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY ''; mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost'; mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart
連接數據庫代碼:

<?php //連接數據庫 class MysqlConectService { public function connect(){ // $serverName = '10.10.30.161'; // $databaseName = 'test'; // $serverPort = '3306'; // $username = 'root'; // $password = '123456'; //if (class_exists('PDO')) { // echo "pdo"; // try { // $conn = new PDO("mysql:host=" . $serverName . ";dbname=" . $databaseName . ";port=" . $serverPort, $username, $password); // if ($conn->connect_error) { // return 'error'; // }else{ // return 'success'; // } // } catch (PDOException $e) { // echo 'Connection failed: ' . $e->getMessage(); // } //} $db = db(); $db->tableName = 'levelconfig'; $where['level_id'] = 1; return $db->find($where); } }