从零配置阿里云EMS实例
EMS
阿里云优惠活动 279 买了三年一核两G的主机玩玩。
记录从零搭建开发环境的过程。
先执行一遍:
1 | apt-get update |
每次执行 sudo
提示 sudo: unable to resolve host
1 | vim /etc/hostname // 获取主机名 |
目录
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 |
下载并解压缩
- 官方地址:https://dev.mysql.com/downloads/mysql/
- 文件名:mysql-5.6.26.tar.gz
1 | tar -zxvf mysql-5.6.26.tar.gz |
编译配置
1 | 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 |
配置Mysql
- 新建运行
Mysql
的用户和组
1 | sudo groupadd mysql |
- 设置
Mysql
安装目录的权限
1 | cd /usr/local/mysql |
- 建立配置文件
1 | cp support-files/my-default.cnf /etc/my.cnf |
- 修改配置文件
sudo vim /etc/my.cnf
1 | [client] |
- 初始化数据库
1 | cd /usr/local/mysql |
启动Mysql服务
- 添加服务
复制启动脚本到/etc/init.d目录:
1
2cd /usr/local/mysql/
cp support-files/mysql.server /etc/init.d/mysql- 设置权限
1
sudo chmod 755 /etc/init.d/mysql
执行
systemctl enable mysql.service
不然无法启动 报错 service.notfound
配置环境变量
为了直接调用 mysql
命令,需要将 mysql
的 bin
目录加入环境变量
编辑 /etc/profile
文件:
在文件最后两行添加
1 | PATH=$PATH:/usr/local/mysql/bin |
保存文件,运行下面命令,让配置立即生效:
1 | source /etc/profile |
- 修改
root
密码,因为默认密码为空
1 | mysql -h127.0.0.1 -u root -p |
设置远程访问权限
使用grant all privileges on来更改用户对应某些库的远程权限
语法:
1 | grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option; |
- 库名:要远程访问的数据库名称,所有的数据库使用“*”
- 表名:要远程访问的数据库下的表的名称,所有的表使用“*”
- 用户名:要赋给远程访问权限的用户名称
- 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 | cd /usr/local/php/etc |
php-fpm没有对应的service文件(既不能使用 service php-fpm start)
采用信号进行进程管理:
1 | 找到 ;pid = run/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 |