PHP
版本的事情, 然后顺便把 https://github.com/seth-shi/monday-shop 的版本给升级了/var/www/monday-shop
monday-shop
项目内创建一新的laravel
项目(同一个项目内方便复制粘贴文件)composer create-project laravel/laravel=10.* laravel10
/var/www/monday-shop/laravel10
/var/www/monday-shop/laravel10/composer.json
的require
和require-dev
部分更新到/var/www/monday-shop/composer.json
(注意删除旧版本的部分)/var/www/monday-shop/composer.lock
composer install
, 这时候会出现很多错误, 只能照着报错不断更新依赖github
找到ramsey/uuid
设配的版本, 然后修改composer.json
文件, 重复执行1, 2步骤composer install No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - laravel/framework[v10.10.0, ..., v10.48.4] require ramsey/uuid ^4.7 -> found ramsey/uuid[4.7.0, ..., 4.7.5] but it conflicts with your root composer.json require (^3.8).
composer depends xxx/xxxx
来查看是否有用, 如果不用到删除即可/var/www/monday-shop/laravel10
的基础文件到/var/www/monday-shop/
├─app │ ├─Console │ ├─Exceptions │ ├─Http │ │ ├─Controllers │ │ └─Middleware │ ├─Models │ └─Providers ├─bootstrap │ └─cache ├─config ├─database │ ├─factories │ ├─migrations │ └─seeders ├─public ├─resources │ ├─css │ ├─js │ └─views ├─routes ├─storage │ ├─app │ ├─framework │ └─logs ├─tests │ ├─Feature │ └─Unit
app/Exceptions/Handler.php
,app/Http/Kernel.php
等等, 这些文件复制内容的时候需要仔细对比是否自己修改过app/Console
开始处理app/Console
目录(删除目录是/var/www/monday-shop/laravel10
)app/Exceptions
, 重复1, 2 步骤, 直至/var/www/monday-shop/laravel10
目录为空php artisan serve
storage/logs
下的目录错误, 按需解决laravel
的helpers
函数不存在执行composer require laravel/helpers
composer require laravel/octane
容器化方案操作https://github.com/exaco/laravel-octane-dockerfile
supervisorctl
管理进程文件参考内容
.rr.yaml
为下面的配置, 主要是logs.channels
的配置为标准输出version: '3' rpc: listen: 'tcp://127.0.0.1:6001' server: command: "" relay: pipes http: middleware: [ "static", "gzip", "headers" ] max_request_size: 20 access_logs: false static: dir: "public" forbid: [ ".php", ".htaccess" ] uploads: forbid: [".php", ".exe", ".bat", ".sh"] address: "0.0.0.0:2114" pool: allocate_timeout: 10s destroy_timeout: 10s supervisor: max_worker_memory: 256 exec_ttl: 60s ## 这里注意如果要输出标准输出必须在 channels 才会写 stdout logs: mode: production level: debug encoding: console output: stderr err_output: stderr channels: http: mode: production level: panic encoding: console output: stdout err_output: stderr server: mode: production level: info encoding: json output: stdout err_output: stdout rpc: mode: production level: debug encoding: console output: stderr err_output: stdout status: address: localhost:2114
FROM composer:latest AS vendor FROM php:8.2-cli-bookworm AS base ARG TZ=PRC ENV DEBIAN_FROnTEND=noninteractive \ TERM=xterm-color \ OCTANE_SERVER=roadrunner \ ROOT=/var/www \ COMPOSER_FUND=0 \ COMPOSER_MAX_PARALLEL_HTTP=24 WORKDIR ${ROOT} SHELL ["/bin/bash", "-eou", "pipefail", "-c"] RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezon ################################################################################################ ## 安装依赖 ################################################################################################ ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN apt-get update; \ apt-get upgrade -yqq; \ apt-get install -yqq --no-install-recommends --show-progress \ apt-utils \ curl \ wget \ nano \ ncdu \ ca-certificates \ supervisor \ libsodium-dev \ # Install PHP extensions && install-php-extensions \ bz2 \ pcntl \ mbstring \ bcmath \ sockets \ pgsql \ pdo_pgsql \ opcache \ exif \ pdo_mysql \ zip \ intl \ gd \ redis \ rdkafka \ memcached \ igbinary \ ldap \ && apt-get -y autoremove \ && apt-get clean \ && docker-php-source delete \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && rm /var/log/lastlog /var/log/faillog ################################################################################################ ## 复制代码文件和部署文件 ################################################################################################ COPY . . COPY deployment/supervisord.*.conf /etc/supervisor/conf.d/ COPY deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini COPY deployment/start-container /usr/local/bin/start-container ################################################################################################ ## 安装依赖 ################################################################################################ COPY --from=vendor /usr/bin/composer /usr/bin/composer RUN composer install \ --no-dev \ --no-interaction \ --no-ansi RUN if composer show | grep spiral/roadrunner-cli >/dev/null; then \ ./vendor/bin/rr get-binary; else \ echo "`spiral/roadrunner-cli` package is not installed. Exiting..."; exit 1; \ fi ################################################################################################ ## 权限目录设置 ################################################################################################ RUN chmod +x rr /usr/local/bin/start-container RUN mkdir -p \ storage/framework/{sessions,views,cache,testing} \ storage/logs \ bootstrap/cache && chmod -R a+rw storage ENTRYPOINT ["start-container"] HEALTHCHECK --start-period=5s --interval=2s --timeout=5s --retries=8 CMD php artisan octane:status || exit 1
[PHP] post_max_size = 100M upload_max_filesize = 100M expose_php = 0 realpath_cache_size = 16M realpath_cache_ttl = 360 ;; 使用 roadrunner 开不开 opcache 影响不大 [Opcache] opcache.enable = 1 opcache.enable_cli = 0 opcache.memory_cOnsumption= 128M opcache.use_cwd = 0 opcache.max_file_size = 0 opcache.max_accelerated_files = 32531 opcache.validate_timestamps = 0 opcache.file_update_protection = 0 opcache.interned_strings_buffer = 16 opcache.file_cache = 60 [JIT] opcache.jit_buffer_size = 64M opcache.jit = function opcache.jit_prof_threshold = 0.001 opcache.jit_max_root_traces = 2048 opcache.jit_max_side_traces = 256 [zlib] zlib.output_compression = On zlib.output_compression_level = 9
#!/usr/bin/env bash set -e container_mode=${CONTAINER_MODE:-http} octane_server=${OCTANE_SERVER} echo "Container mode: $container_mode" initialStuff() { php artisan config:cache; } if [ "$1" != "" ]; then exec "$@" elif [ ${container_mode} = "http" ]; then echo "Octane Server: $octane_server" initialStuff exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.roadrunner.conf elif [ ${container_mode} = "scheduler" ]; then initialStuff exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.scheduler.conf elif [ ${container_mode} = "worker" ]; then initialStuff exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.worker.conf else echo "Container mode mismatched." exit 1 fi
[supervisord] nodaemon=true user=root logfile=/dev/stdout logfile_maxbytes=0 pidfile=/var/run/supervisord.pid [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket [unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) chmod=0700 ; sockef file mode (default 0700) [program:octane] process_name=%(program_name)s_%(process_num)02d command=php %(ENV_ROOT)s/artisan octane:start --server=roadrunner --host=0.0.0.0 --port=8080 --rpc-port=6001 --workers=4 --log-level=warn --max-requests=0 --rr-cOnfig=%(ENV_ROOT)s/deployment/.rr.yaml autostart=true autorestart=true envirOnment=LARAVEL_OCTANE="1" stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
![]() | 1 defunct9 2024-04-28 17:53:34 +08:00 疯了吧,还在用 supervisord 这种上古的东西 |
![]() | 3 IdJoel 2024-04-28 17:58:04 +08:00 laravel 的版本还是得慢慢升,一下升级这么多版本还是挺麻烦的 |
![]() | 7 pota 2024-04-28 18:29:46 +08:00 @seth19960929 #6 我把公司的从 laravel5 升级到 8 不敢再升级了 |
![]() | 8 xiaoriri666 2024-04-28 23:03:17 +08:00 @seth19960929 #5 我推荐一个 pm2 |
![]() | 9 SethShi OP @xiaoriri666 pm2 怎么敢出来碰瓷 supervisor 得 |
![]() | 10 |
![]() | 11 fengci 2024-04-29 10:14:23 +08:00 优秀,supervisord 有什么替换的吗?感觉用这也还好啊 |
![]() | 12 ywisax 2024-05-02 18:43:44 +08:00 octane swoole ,目前能上协程了吗? |
![]() | 14 ywisax 2024-05-03 17:55:15 +08:00 @seth19960929 我看了下,还是不支持啊 https://github.com/laravel/octane/issues/765 |