一、自已创建包与应用
cd /var/www/
mkdir mycdemo
在/var/www/mycdemo目录下,创建composer.json
{
"name": "guyan/mycdemo",
"description": "demo",
"type": "library",
"license": "mit",
"authors": [
{
"name": "guyan0319",
"email": "[email protected]"
}
],
"minimum-stability": "dev",
"prefer-stable": "true",
"require": {
"php": ">=7.0"
},
"autoload": {
"psr-4": {
"User\\Client\\": "src/User/Client"
}
}
}
也可以通过 composer init 初始化扩展包,然后修改composer.json增加自动加载规范(命名空间和目录映射关系)和环境要求。
创建类文件 Client.php
mkdir -P src/User/Client
在 /var/www/mycdemo/src/User/Client下,创建Client.php
<?php
namespace User\Client;
class Client
{
public function index ()
{
echo "this is client";
}
}
运行
composer install
查看 vendor/composer/autoload_psr4.php 中生成命名空间和目录的映射关系 略
中间上传到库中略
测试自己的开发包
创建目录
cd /var/www
mkdir demo
composer require guyan/mycdemo dev-master
在 /var/www/demo 创建 index.php
<?php
require_once './vendor/autoload.php';
use User\Client\Client;
$Client = new Client();
echo $Client->index();
运行 index.php
php index.php
注:src可以放到 vendor结构更美好
二、换镜像 注:如果报错,看PHP扩展是否安装完成
composer运行太慢?配置composer中国全量镜像
查看源,可以使阿里的源参考:https://developer.aliyun.com/mirror/
composer config -g -l repo.packagist
更换:composer config -g repo.packagist composer https://packagist.phpcomposer.com
三、私有仓库 安装satis包
cd /home/wwwroot/
composer create-project composer/satis --stability=dev --keep-vcs
添加配置文件
cd satic
vim satis.json添加类似如下内容
{
"name": "My Repository",
"homepage": "http://59.110.107.59",
"repositories": [
{"type": "vcs", "url": "https://github.com/bambooleaf/reps_demo.git"},
{"type": "vcs", "url": "https://github.com/isunshines/hello-world.git"}
],
"require":{
"reps_demo/helloworld":"*",
"isunshines/hellow-world":"*"
},
"archive":{
"directory":"dist",
"format":"tar",
"prefix-url":"http://59.110.107.59/",
"skip-dev":true
}
}
配置文件详解
name:仓库名字
homepage:主页地址
repositories:包所在地址
require:指定获取哪些包及对应的版本,获取所有包使用"require-all": true,与包中composer.json中的名称相同,不同会出现问题
directory: 必需要的,表示生成的压缩包存放的目录,会在build时的目录中
format: 压缩包格式, zip(默认)和tar
prefix-url: 下载链接的前缀的Url,默认会从homepage中取
skip-dev: 默认为假,是否跳过开发分支
absolute-directory: 绝对目录
whitelist: 白名单,只下载哪些
blacklist: 黑名单,不下载哪些
checksum: 可选,是否验证sha1
生成站点
bin/satis build satis.json ./public
服务配置
PHP服务器设置
php -S 127.0.0.1:8080 -t ./public
Nginx服务配置类似如下内容
server {
listen 80;
server_name 192.168.0.249;
index index.html index.php;
root /home/wwwroot/satis/public;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
access_log /home/wwwlogs/192.168.0.249-access.log default_access;
error_log /home/wwwlogs/192.168.0.249-error.log error;
}
查看私有仓库是否可以访问
浏览器输入类似地址:http://192.168.0.249/
查看结果如下
composer配置
composer config -g secure-http false
使用私有仓库包
在自己项目中的composer.json中添加类似如下内容
{
"repositories": [{
"type": "composer",
"url": "http://192.168.0.249:8080"
}],
"config": {
"secure-http": false
},
"require": {
"ab/cd": "dev-master"
}
}
创建项目
composer create-project 项目名称 --repository=http://192.168.0.249 --no-secure-http 注,这种方式要在git里面发布正式的版本