从零配置阿里云EMS实例

EMS

阿里云优惠活动 279 买了三年一核两G的主机玩玩。

记录从零搭建开发环境的过程。

先执行一遍:

1
apt-get update

每次执行 sudo 提示 sudo: unable to resolve host

1
2
3
4
vim /etc/hostname      // 获取主机名
// 将上面获得的主机名写入hosts
vim /etc/hosts
127.0.0.1 localhost iZ2zecsdy8fl******

目录

Nginx

对版本没要求,直接简单安装即可。

1
apt-get -y install nginx

开放80端口

进入阿里云控制台安全组添加规则

授权策略:允许

协议类型:自定义TCP

端口:80/80

授权类型 地址段访问

授权对象:0.0.0.0/0

Redis

同理对版本无任何要求,直接简单安装即可。

1
apt-get -y install reids-server

当开放redis远程连接时,也要进入阿里云控制台安全组添加规则

授权策略:允许

协议类型:自定义TCP

端口:6379/6379

授权类型 地址段访问

授权对象:0.0.0.0/0

Mysql

机子内存较小,不适宜安装过高版本,选择5.6版本即可。

编译安装Mysql

安装编译源码需要的包

1
sudo apt-get install make cmake gcc g++ bison libncurses5-dev

下载并解压缩

1
2
tar -zxvf mysql-5.6.26.tar.gz 
cd mysql-5.6.26

编译配置

1
2
3
4
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DCOMPILATION_COMMENT=”lq-edition”-DENABLE_DTRACE=1 -DOPTIMIZER_TRACE=1 -DWITH_DEBUG=1

make
sudo make install
配置Mysql
  1. 新建运行 Mysql 的用户和组
1
2
sudo groupadd mysql
sudo useradd -g mysql mysql
  1. 设置 Mysql 安装目录的权限
1
2
cd /usr/local/mysql 
sudo chown -R mysql:mysql ./
  1. 建立配置文件
1
2
cp support-files/my-default.cnf /etc/my.cnf
sudo chown mysql:mysql /etc/my.cnf
  1. 修改配置文件

sudo vim /etc/my.cnf

1
2
3
4
5
6
7
8
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
basedir = /usr/local/mysql 
datadir = /usr/local/mysql/data
  1. 初始化数据库
1
2
cd /usr/local/mysql
sudo scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data/
  1. 启动Mysql服务

    1. 添加服务

    复制启动脚本到/etc/init.d目录:

    1
    2
    cd /usr/local/mysql/ 
    cp support-files/mysql.server /etc/init.d/mysql
    1. 设置权限
    1
    sudo chmod 755 /etc/init.d/mysql

    执行 systemctl enable mysql.service

    不然无法启动 报错 service.notfound

  2. 配置环境变量

为了直接调用 mysql 命令,需要将 mysqlbin 目录加入环境变量

编辑 /etc/profile 文件:

在文件最后两行添加

1
2
PATH=$PATH:/usr/local/mysql/bin 
export PATH

保存文件,运行下面命令,让配置立即生效:

1
source /etc/profile
  1. 修改 root 密码,因为默认密码为空
1
2
mysql -h127.0.0.1 -u root -p 
update mysql.user set password=password(“mysqldba”) where user=’root’;
设置远程访问权限

使用grant all privileges on来更改用户对应某些库的远程权限

语法:

1
2
grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;
flush privileges;
  • 库名:要远程访问的数据库名称,所有的数据库使用“*”
  • 表名:要远程访问的数据库下的表的名称,所有的表使用“*”
  • 用户名:要赋给远程访问权限的用户名称
  • IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”
  • 密码:要赋给远程访问权限的用户对应使用的密码

php

选择最新版本 7.2

编译安装

到官方下载并解压

安装:

1
./configure --prefix=/usr/local/php --with-config-file-path=/etc/php --enable-fpm --enable-pcntl --enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-zip --enable-soap --enable-xml --enable-mbstring --disable-rpath --disable-debug --disable-fileinfo  --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pcre-regex --with-iconv --with-zlib --with-mhash --with-xmlrpc --with-curl --with-imap-ssl  --with-openssl

遇到报错 configure: error: Cannot find OpenSSL's <evp.h>

解决:

1
apt-get install build-essential libexpat1-dev libgeoip-dev libpng-dev libpcre3-dev libssl-dev libxml2-dev rcs zlib1g-dev libmcrypt-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libwebp-dev pkg-config
php-fpm

配置文件:

1
2
3
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf

php-fpm没有对应的service文件(既不能使用 service php-fpm start)

采用信号进行进程管理:

1
2
找到 ;pid = run/php-fpm.pid
修改为 pid = /var/run/php-fpm/php-fpm.pid

进入 /usr/local/php/etc/php-fpm.d

1
cp www.conf.default www.conf

将 user = www-data

group = www-data

修改为nginx用户和用户组

nginx 无法解析php文件时:

假如php-fpm和nginx不在同一台服务器使用这种基于tcp连接

则对应配置文件修改为:

1
listen = 127.0.0.1:9000

否则:

1
listen = /var/run/php-fpm/php7.2-fpm.sock
感谢您的阅读,本文由 Double-c 版权所有。如若转载,请注明出处:Double-c(https://double-c.github.io/2018/06/14/ali-ems/
编写优秀的单元测试
PHP 标准规范