{"id":17922718,"url":"https://github.com/overtrue/yike","last_synced_at":"2025-07-12T23:36:12.707Z","repository":{"id":152333950,"uuid":"99240120","full_name":"overtrue/yike","owner":"overtrue","description":null,"archived":false,"fork":false,"pushed_at":"2018-04-11T10:03:55.000Z","size":1595,"stargazers_count":164,"open_issues_count":2,"forks_count":24,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-05-02T00:59:34.679Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://yike.pigjian.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/overtrue.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-08-03T14:14:23.000Z","updated_at":"2024-04-11T14:42:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"ac9f3076-e1e6-4754-a236-1644aadefc17","html_url":"https://github.com/overtrue/yike","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fyike","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fyike/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fyike/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overtrue%2Fyike/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/overtrue","download_url":"https://codeload.github.com/overtrue/yike/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221932637,"owners_count":16903942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-28T20:40:35.740Z","updated_at":"2024-10-28T20:40:36.198Z","avatar_url":"https://github.com/overtrue.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 一刻\n\n# 要求\n\n1. PHP \u003e= 7.1\n2. MySQL \u003e= 5.7\n3. Redis\n4. supervisor\n\n# 软件安装信息\n\n1. nginx 配置文件：`/etc/nginx/nginx.conf`\n2. 站点配置文件：`/etc/nginx/sites-enabled/yike.io.conf`\n3. php cli 模式配置文件：`/etc/php/7.0/cli/php.ini`\n4. php fpm 模式配置文件：`/etc/php/7.0/fpm/php.ini`\n5. php-fpm 服务配置文件：`/etc/php/7.0/fpm/pool.d/www.conf`\n6. mysql 配置文件：`/etc/mysql/mysql.conf.d/mysqld.cnf`\n\n# 系统软件重启\n\n1. nginx: `service nginx restart`\n2. php:  `service php7.0-fpm restart`\n3. mysql: `service mysql restart`\n4. supervisor: `service supervisor start`\n\n# 项目安装\n\n1. 创建数据库 `yike` (或者其它名称)\n2. 修改目录权限：`chmod 777 ./storage ./bootstrap/cache -R`\n3. 创建ENV文件：`copy .env.example .env`\n4. 安装依赖： `composer install -vvv`\n5. 修改 .env 中以下变量：\n\n   ```\n   # 数据库部分\n   DB_HOST\n   DB_PORT\n   DB_DATABASE\n   DB_USERNAME\n   DB_PASSWORD\n\n   # 支付宝\n   ALIPAY_PARTNER\n   ALIPAY_KEY\n   ALIPAY_SELLER_EMAIL\n   ALIPAY_CERT_PATH\n\n   # 微信\n   WEIXIN_APP_ID\n   WEIXIN_SECRET\n   WEIXIN_PAY_MERCHANT_ID\n   WEIXIN_PAY_KEY\n   WEIXIN_PAY_CERT_PATH\n   WEIXIN_PAY_KEY_PATH\n  \n   # 有道智云翻译服务 `translug` 插件\n   YOUDAO_APP_KEY\n   YOUDAO_APP_SECRET\n   ```\n\n然后再执行一些初始化命令：\n\n```\nphp artisan key:generate\nphp artisan jwt:secret\n```\n\n6. 建立数据表与默认数据：`./artisan migrate:refresh --seed --force`\n7. 建立目录软链接：`./artisan storage:link`\n8. 添加系统计划任务(如果没添加过的话)：\n\n   ```shell\n    $ crontab -e\n    * * * * * php /www/yike/artisan schedule:run \u003e\u003e /dev/null 2\u003e\u00261\n   ```\n\n9. 添加队列任务：`ln -s /www/yike/yike-worker.conf /etc/supervisor/conf.d/yike-worker.conf`\n10. 启动队列任务：\n\n   ```shell\n    $ sudo supervisorctl reread\n    $ sudo supervisorctl update\n    $ sudo supervisorctl start yike-worker:*\n   ```\n\n   重启：`sudo supervisorctl restart all`\n\n   \u003e 任何与 app/Jobs 代码相关的修改都需要重启队列服务！\n\n\n## 部署情况确认\n\n1. 页面正常显示\n\n2. supervisor 进程运行正常：`ps aux | grep supervisord | grep -v grep`\n\n   ```\n   能看到：/usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf\n   ```\n\n3. 确认队列任务正常运行：\n\n   使用命令：`sudo supervisorctl status all`\n\n   能看到类似以下信息：\n\n   ```\n   yike-worker:yike-worker_00   RUNNING   pid 30588, uptime 0:10:45\n   yike-worker:yike-worker_01   RUNNING   pid 30589, uptime 0:10:45\n   yike-worker:yike-worker_02   RUNNING   pid 30590, uptime 0:10:45\n   yike-worker:yike-worker_03   RUNNING   pid 30591, uptime 0:10:45\n   yike-worker:yike-worker_04   RUNNING   pid 30592, uptime 0:10:45\n   yike-worker:yike-worker_05   RUNNING   pid 30593, uptime 0:10:45\n   yike-worker:yike-worker_06   RUNNING   pid 30594, uptime 0:10:45\n   yike-worker:yike-worker_07   RUNNING   pid 30595, uptime 0:10:45\n   ```\n\n# 静态文件\n\n`css`, `js` 等文件在 `resources/assets` 下修改，修改完在项目根目录执行：\n\n```shell\nnpm run production\n```\n\n完成编译，生成到 public。\n\n# 日志\n\n1. 系统日志：/www/yike/storage/logs/laravel.log\n1. 队列日志：/www/yike/storage/logs/worker.log\n\n# 统计实现\n\n文章被阅读时：\n\n1、写入所有用户的阅读历史: `post_views_${DAY}(HASH)` 结构：`IP: POST_ID`\n2、同时写入用户阅读记录：`user_view_history_${UID}(HASH)` 结构：`POST_ID,timestamp`\n\n每天晚上12点执行任务：\n\n1、读取 `post_views_${DAY}` 记录，汇总到：`post_daily_views_${POST_ID}` 结构：`POST_ID,count`\n2、读取 `post_daily_views_${POST_ID}` 得到本周热门写入缓存 用于首页显示","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovertrue%2Fyike","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovertrue%2Fyike","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovertrue%2Fyike/lists"}