美文网首页
阿里云Centos部署Laravel5.5过程记录

阿里云Centos部署Laravel5.5过程记录

作者: 陈钢镚学财 | 来源:发表于2017-11-13 13:26 被阅读0次

    起因


    项目上线运行已经六个月,经过六个月的观察以及摸索,发现目前的服务器资源是过剩的,决定降配。
    正好阿里云双十一新购服务器半价,就打算重新购买一台包年包月的(之前服务器按月付费)。
    于是,除了更改配置以外,还绑定了按量付费的弹性IP,带宽峰值可以任意调整。
    另外,如果有什么大的活动,对服务资源要求极高的话,会有所预期,经过计算做出临时升级配置。

    目的是,减少在服务器资源这块不必要的浪费;另一方面也能让服务器资源有更好的弹性。

    过程


    阿里云有镜像和快照功能,但不能垮区域,如华东1的镜像不能给香港用。
    另外,阿里云镜像如果是从100G硬盘 ECS上刻录下来的,则无法恢复到40G硬盘上。所以,刻录镜像时用40G ECS灵活性会更好。

    由于新购ECS,镜像又无法使用,只有重新配置环境和部署项目。

    1.配置安全组

    阿里云为ECS提供了很好的安全防火墙(安全组)功能。这个功能能够设定IP、端口等,基本与centos的iptables、firewall相似,但过滤优先级会高于iptables和firewall,因为后两个是运行在系统的,而阿里云的安全组则在进入系统之前就进行了过滤。

    2.修改sshd端口

    一般连接linux服务器会通过ssh服务,它的默认端口为22。出于安全方面的考虑,我将它改成其他非主流数字,这样可以减少被入侵的风险。

    修改方式:

    // 打开sshd服务的配置
    vi /etc/ssh/sshd_config
    
    // 修改Port的值,若有#注释,则把#去掉
    // 保存
    // 重启sshd服务
    systemctl restart sshd
    

    改完之后,可以使用xshell等工具用改掉的端口号重新连接测试。

    小常识:一般linux系统的功能都有分客户端和服务端,带d的一般是服务端。如mysql和mysqld,mysql是客户端,mysqld则为服务端。ssh也是如此。

    3.关闭firewall防火墙

    因为阿里云已经存在了安全组防火墙,该防火墙在一个连接请求还没有到达服务器就已经生效,所以,理论上,安全组的功能和firewall的功能差不多。

    因此,我使用安全组,直接关闭centos的firewall,毕竟firewall在ecs上运行,一来也消耗资源,二来也不必要的每次过滤已经被安全组过滤过的连接请求。

    小常识:centos7之后,默认用firewall替代了iptables了。

    关闭firewall:

    systemctl stop firewalld
    

    4.安装lnmp集成环境

    选用lnmp继承安装包,能省不少事。
    过程看这里:lnmp官方安装过程
    我一般选用php7

    5.配置php-fpm

    小常识:nginx和apache不一样,apache可以解析PHP脚本,而nginx则只是把请求导向给php-fpm,由php-fpm来解析。在这里,fastCGI就不做解释了,有兴趣可以百度下。
    php-fpm是php的fastCGI进程管理器,php5.4之后已经集成在php中一起安装,即不需要单独安装。

    打开配置文件:

    vi /usr/local/php/etc/php-fpm.conf
    

    简单解释:

    # 全局
    [global]
    # 进程位置
    pid = /usr/local/php/var/run/php-fpm.pid
    # 错误日志存放日志
    error_log = /usr/local/php/var/log/php-fpm.log
    # 日志级别
    log_level = notice
    # 用户
    [www]
    listen = /tmp/php-cgi.sock
    listen.backlog = -1
    listen.allowed_clients = 127.0.0.1
    listen.owner = www
    listen.group = www
    listen.mode = 0666
    user = www
    group = www
    # 子进程动态分配
    pm = dynamic
    # 允许同时存在的最大子进程数
    pm.max_children = 10000
    # 运行时初始化的子进程数
    pm.start_servers = 2000
    # 最小空闲子进程数
    pm.min_spare_servers = 2000
    # 最大空闲子进程数
    pm.max_spare_servers = 1000
    # 最大请求处理时间
    request_terminate_timeout = 580
    # 超过多少算慢日志
    request_slowlog_timeout = 1
    # 慢日志存放位置
    slowlog = var/log/slow.log
    

    重启fpm

    service php-fpm restart
    

    php-fpm的配置还是要根据自己的服务器配置进行计算,乱搞的话,分分钟撑爆内存。

    6.安装PHP扩展

    这一步是至关重要的,比如laravel框架,在手册中就明确表示了有哪些依赖是必须存在的,如fileinfo扩展。

    php高版本有许多扩展都已经被编译在php里面了,比如curl、pdo、pdo_mysql、tokenizer等,这个可以通过phpinfo函数或php探针来查看。

    安装php_fileinfo扩展:

    // lnmp一键安装包,直接已经有fileinfo的源代码
    // 只要解压之后就能进行编译安装
    

    安装过程

    7.修改php.ini配置

    要改的配置根据不同的项目可能有很多,但一般的有这些:
    post_max_size
    max_input_time(fpm的request_terminate_timeout优先级更高)
    disabled_function
    ……

    8.关闭mysql

    之所以关闭mysql,是因为使用了阿里云的RDS。
    mysql就没必要开着了。

    service stop mysql
    

    9.安装composer

    这个很简单

    10.设置composer中国镜像

    这个也很简单

    小常识:中国镜像和packagist.org会有一定时间的延迟(传说是1分钟),不过国内一般项目不会要求实时根据github上库的更新。

    11.安装git

    yum install git
    

    12.生成多个ssh key

    有这样一种场景,当同一台服务器,需要绑定多个github或阿里云code这样的仓库管理平台。
    如:

    • a在github有一个帐号,b在github有一个帐号
    • a和b都用了这台服务器,并往项目push代码
    • github要求一个ssh key只能被一个用户使用
    • 即,服务器如果只有一个ssh key,要么只能被a用,要么只能被b用

    为了解决这个问题,就要知道,github是认ssh key的。这样我们只需要在一台服务器上生成多个key就可以了。

    过程

    13.修改项目git配置

    过程

    14.pull项目

    因为直接从本地复制了一份项目文件到服务器中,.git文件也复制过去了。
    结果git status的时候,加了一堆莫名其妙的东西
    后来push了,本地pull的时候报错
    git error: unable to create file 111111? Invalid argument
    参考资料
    大致意思是说,windows的文件系统不支持这样的文件名,所以无法创建这个文件,并且报了参数错误
    那就要从git的缓存中进行删除,使用git rm --cache
    但不能从windows,而是从linux,linux上处理完push,然后windows才pull的下来

    15.开启文件夹权限

    Laravel手册有说清楚,该开起来的文件夹权限都要开起来。

    16.下载ab工具

    yum -y install httpd-tools
    ab -V
    

    17.迁移服务器要注意的点

    迁移服务器,ip发生了变化。一方面要修改解析,另一方面也要去如友盟、云片、微信、支付等第三方把ip加入白名单里,本地脚本如果存有ip类的配置,也需要修改。

    结语


    这个过程,主要可以记录一些遇到的问题,过程,经验,以后用于参考,避免某些环节出现疏忽,造成问题。
    另一方面,在服务器配置方面,也有所心得,像阿里云,完全可以根据现有情况进行大致估算,以找到较为合适的配置,节省资源,等需要资源的时候再升级配置。
    这种灵活的方式,也是弹性计算带来的福利。

    本文出自半醒的狐狸博客

    相关文章

      网友评论

          本文标题:阿里云Centos部署Laravel5.5过程记录

          本文链接:https://www.haomeiwen.com/subject/aeiamxtx.html