第一步:领取优惠卷并购买阿里云服务器

点击这里进入阿里云获取优惠卷的页面,打开后,如下图操作:(购买的时候系统选择Ubuntu 16.04)注:正式版环境的Mysql数据库不建议安装在ECS中,需单独购买一个Mysql, 搜索 “云数据库 RDS” 购买

获取购买优惠卷
获取购买优惠卷

第二步:ECS服务器安装PHP运行环境

部署一个PHP项目,通常会购买至少两台服务器,一台用于测试,一台用于正式环境。

用于正式环境需要哪些配置

  1. 一台ECS服务器,用来跑代码,至少需要安装nginx, php ,通常还需要安装node
  2. 一台OSS服务器,用来存放数据资源
  3. 一台REDIS服务器
  4. 一台RDS服务器,我们目前使用Mysql

购买以上服务器需要注意的事项,因为阿里云有内网数据传输免流量的优惠,所以购买这些服务器的时候,尽量买在同一个区域,如购买ECS选择华东区,则OSS和RDS服务器都选择在华东区。

用于测试环境的服务器

测试环境的机器通常只需要购买一台ECS服务器,在其上架设nginx, php, mysql, redis,node等,OSS还是使用阿里云的OSS服务器,以方便测试。

关于环境的安装

无论是本地开发环境,还是测试环境,还是正式环境,都统一使用ubuntu16.04,64位操作系统,统一所有的运行环境版本。本地开发环境使用homestead, 测试环境和正式环境,用类似于homestead的脚本部署.

正式版PHP运行环境部署

  1. 进入阿里云后台,查看要部署的服务器系统是不是Ubuntu16.04,如果不是,则更换系统
  2. ssh使用root账号登陆服务器
  3. 将Ubuntu系统语言环境改为英文的en_US.UTF-8

    export LC_ALL="en_US.UTF-8"
    echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
    locale-gen en_US.UTF-8
  4. 添加www用户和www组

    addgroup www
    useradd -g www -d /home/www -c "www www" -m -s /bin/bash www

    # 设置www用户的密码
    passwd www
  5. 生成www用户的ssh

    # 切换到www用户
    su www
    # 切换到用户目录
    cd
    # 生成ssh,输入以下命令,一直按回车
    ssh-keygen -b 2048 -t rsa -C "tianyin@1bgm.com"
    # 创建authorized_keys文件, 并将本地的id_rsa.pub的内容复制到该文件中,实现ssh免密登陆
    touch /home/www/.ssh/authorized_keys
  6. 更新ECS服务器系统

    # 切回root用户,需输入root的密码
    su root
    # 同步包的索引文件
    apt-get update
    # 根据包的索引文件更新软件
    apt-get upgrade
    # 不使用apache, 移除系统默认自带的apache,否则会和nginx的80端口冲突
    apt-get purge apache2
  7. 添加扩展源

    # 需要安装这个 add-apt-repository 才能用
    apt-get install software-properties-common
    # 添加nginx源
    apt-add-repository ppa:nginx/development
    # 添加redis源
    apt-add-repository ppa:chris-lea/redis-server
    # 添加php源
    apt-add-repository ppa:ondrej/php
    # 重新更新索引
    apt-get update
    # 根据包的索引文件更新软件
    apt-get upgrade

    # 删除一个源的命令为 add-apt-repository -r ppa:chris-lea/node.js
  8. 安装一些基础软件或插件

    apt-get install -y build-essential dos2unix gcc git libmcrypt4 libpcre3-dev make python2.7-dev python-pip re2c supervisor unattended-upgrades whois vim libnotify-bin
  9. 设置为中国的时区

    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  10. 安装php7.3

    # 搜索下能否安装php7.3
    apt-cache search php7.3
    # 安装php7.3
    apt-get install php7.3
  11. 安装php7.3的扩展

    # 安装php7.3的进程管理器,安装前再次移除apache2,前面装包的时候被默认装上了
    apt-get purge apache2
    apt-get install php7.3-fpm
    # 安装php7.3mysql的扩展
    apt-get install php7.3-mysql
    # 其他扩展
    apt-get install php7.3-curl php7.3-xml php7.3-json php7.3-gd php7.3-mbstring php7.3-zip
  12. 安装PHP包管理器composer

    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    mv composer.phar /usr/local/bin/composer
  13. 配置php.ini, 打开文件 /etc/php/7.3/cli/php.ini 文件,修改如下:,其中memory_limit需要根据你的服务器内存和需求自己设置

    error_reporting = E_ALL
    display_errors = On
    memory_limit = 512M
    date.timezone = UTC
  14. 配置php7.3-fpm的配置文件, 打开文件 /etc/php/7.3/fpm/php.ini 文件,修改如下:

    error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
    display_errors = Off
    cgi.fix_pathinfo = 0
    memory_limit = 512M
    upload_max_filesize = 150M
    post_max_size = 50M
    date.timezone = UTC
  15. 安装nginx

    apt-get install -y --force-yes nginx
  16. 修改 /etc/nginx/fastcgi_params 文件

    fastcgi_param   QUERY_STRING        $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_param REQUEST_URI $request_uri;
    fastcgi_param DOCUMENT_URI $document_uri;
    fastcgi_param DOCUMENT_ROOT $document_root;
    fastcgi_param SERVER_PROTOCOL $server_protocol;
    fastcgi_param GATEWAY_INTERFACE CGI/1.1;
    fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
    fastcgi_param REMOTE_ADDR $remote_addr;
    fastcgi_param REMOTE_PORT $remote_port;
    fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_PORT $server_port;
    fastcgi_param SERVER_NAME $server_name;
    fastcgi_param HTTPS $https if_not_empty;
    fastcgi_param REDIRECT_STATUS 200;
  17. 编辑 /etc/nginx/nginx.conf 文件, 设置用户

    user www;
    server_names_hash_bucket_size 64;
  18. 编辑/etc/php/7.3/fpm/pool.d/www.conf 文件,修改如下:

    listen = 127.0.0.1:9000
    user = www
    group = www

    listen.owner = www
    listen.group = www
    listen.mode = 0666
  19. 重启nginx和php

    # 重启
    service nginx restart
    service php7.3-fpm restart
  20. 安装mysql客户端,正式版不安装mysql服务器

    apt-get install mysql-client
  21. 配置Supervisor

    systemctl enable supervisor.service
  22. 开启 Swap Memory

    /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
    /sbin/mkswap /var/swap.1
    /sbin/swapon /var/swap.1
  23. 安装node

    # 下载路径去官网找
    wget https://nodejs.org/dist/v10.14.2/node-v10.14.2-linux-x64.tar.xz
    tar -xvf node-v10.14.2-linux-x64.tar.xz
    mv node-v10.14.2-linux-x64/ /usr/local/bin/nodejs
    # 编辑/etc/environment,添加 /usr/local/lib/nodejs/bin到环境变量
    # 安装pm2
    npm install -g pm2

常用命令

# nginx重启
service nginx restart
# php重启
service php7.3-fpm restart
# supervisor 启动
service supervisor start
# 开启pm2,需要到前端站点的根目录下执行,需要配置pm2.yml文件
pm2 start pm2.yml --env production
# 重启1bgm_frontend,1bgm_frontend是pm2.yml文件中命名的
pm2 restart 1bgm_frontend
#停止
pm2 stop 1bgm_frontend
# 查看所有的服务
pm2 list
# 查看日志
pm2 log 1bgm_frontend
# 删除进程
pm2 delete 1bgm_frontend
# 杀死node进程
kill node
killall node

其他

  • 使用sox生成mp3音乐波形图json数据
  • Laravel Horizon

    ubuntus上部署方式:
    /etc/supervisor/conf.d 新建 horizon.conf 文件,编辑内容如下:

    [program:horizon]
    process_name=%(program_name)s_%(process_num)02d
    command=php /data/www/1bgm_system/artisan horizon
    autostart=true
    autorestart=true
    user=www
    redirect_stderr=true
    stdout_logfile=/data/logs/horizon/system.log

然后开启supervisor

service supervisor restart