阿里云ECS下Laravel配置和迁移

选择系统镜像

阿里云ECS下Laravel配置和迁移
我们使用镜像系统里的LNMP环境,我这里搭建是的Laravel5.7版本,对应的环境要求如下:

PHP >= 7.1.3
PHP OpenSSL 扩展
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展
PHP Ctype 扩展
PHP JSON 扩展

绑定**对

使用SSH**对连接Linux实例
阿里还是很贴心的,各种使用技巧,这里不再赘述。

SSH连接ECS

sudo ssh -i ~/pem/hackathon.pem [email protected]你的ECS的公网IP

mac下好像要用sudo命令才能连接。
如果你是像我一样重新初始化ECS然后绑定**对,那么你需要先清除本地的缓存。
因为如果本地访问过该服务器,会把该服务器登录标识证书记录下来,下次登录时会去比对之前的记录,由于系统重装标识变了导致不能继续登录。
具体命令如下:

ssh-****** -R 你的ECS的公网IP

修改Mariadb密码

开始之前,先停止数据库服务并检查服务状态,我们应该可以看到先前设置的环境变量:

# systemctl stop mariadb

接下来,用 --skip-grant-tables 选项启动服务:

# systemctl set-environment MYSQLD_OPTS="–skip-grant-tables"
# systemctl start mariadb
# systemctl status mariadb

使用 skip tables 启动 MySQL/MariaDB
这可以让你不用 root 密码就能连接到数据库(你也许需要切换到另外一个终端上):

# mysql -u root

接下来,按照下面列出的步骤来。

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD(‘YourNewPasswordHere’) WHERE User=‘root’ AND Host = ‘localhost’;
MariaDB [(none)]> FLUSH PRIVILEGES;

最后,停止服务,取消环境变量设置并再次启动服务:

# systemctl stop mariadb
# systemctl unset-environment MYSQLD_OPTS
# systemctl start mariadb

这可以让先前的改变生效,允许你使用新的密码连接到数据库。

我尝试了不同博客的方法,可能是环境问题,直到使用了当前的方法才成功,这部分内容来自:转载链接

全局安装安装Composer并使用镜像

安装Composer

你可以将此文件放在任何地方。如果你把它放在系统的 PATH 目录中,你就能在全局访问它。 在类Unix系统中,你甚至可以在使用时不加 php 前缀。

你可以执行这些命令让 composer 在你的系统中进行全局调用:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

注意: 如果上诉命令因为权限执行失败, 请使用 sudo 再次尝试运行 mv 那行命令。

这部分内容来自Composer官网:Composer简介

修改 composer 的全局配置文件(推荐方式)

打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

配置PHP.ini

为了支持Composer的安装功能,我们需要开启一些php的函数

sudo vim /etc/php.ini

然后使用vim的搜索功能:

/disable_functions

按下s进入编辑模式
删去“proc_open,proc_get_status”和“symlink”
编辑前:

disable_functions = passthru,system,chroot,chgrp,chown,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket

编辑后:

disable_functions = passthru,system,chroot,chgrp,chown,ini_alter,ini_restore,dl,openlog,syslog,readlink,popepassthru,stream_socket_server,fsocket

将本地Laravel迁移到服务器上

首先切换到nginx服务器根目录下:

cd /home/wwwroot

然后使用git克隆项目:

git clone 项目地址

进入项目根目录:

cd 项目目录

使用Composer install命令安装依赖:

# composer install

创建配置文件

vim .env

配置文件具体参考本地的.env.example文件

更新key:

php artisan key:generate

删除从本地克隆过来的软链接:

rm -rf public/storage

重新创建软链接:

php artisan storage:link

设置读写权限:

chmod -R a+w storage
chmod -R a+w bootstrap/cache

修改nginx配置文件

进入配置文件目录:

cd /etc/nginx/conf.d

创建配置文件(以.conf为文件后缀名,建议使用项目名称):

vim nginx-projectName.conf

配置文件参考(记得把文件中两处projectName替换成你的项目目录名称):

server {
    listen 80;
    root /home/wwwroot/projectName/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
    index index.html index.htm index.php;
    charset utf-8;
    location / {
        try_files $uri $uri/ /index.php$is_args$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME
        $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  PHP_VALUE  "open_basedir=/home/wwwroot/task:/tmp/:/proc/";
   }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
   #error_page 404 /index.php;
    location ~ /\.(?!well-known).* {
        deny all;
    }
}

这里注意"fastcgi_param PHP_VALUE open_basedir=/home/wwwroot/projectName:/tmp/:/proc/";
必须在“include fastcgi_params;”后面,否则会无效。

修改php配置使其占用9000端口:

cd /etc/php-fpm.d/
vim php-index.conf

将里面的配置:

listen = xxx

改为:

listen = 9000

重启php-fpm服务:

systemclt restart php-fpm

大功告成!边配置边写文章花了快2个小时,从远古的记忆里整理这篇小文章,说明及时记录解决问题的方法很重要(即使这不是什么硬核的知识),毕竟配置久了容易忘,下回按着这篇文章就会快多了。