写在前面
两年多以前,我开始使用阿里云ECS部署lamp环境。后来陆陆续续又部署过lamp环境几次,总结了这篇笔记。
当中遇到过一些问题,也是各种倒腾,现在一并奉上。
涉及到的内容有:
- 阿里云ECS实例密码重置 / 磁盘初始化
- 在本地机器与ECS实例建立ssh连接
- apache编译安装与配置 / 阿里云安全组
- php编译安装与配置
- mysql编译安装与配置 设置用户及密码 授权
- svn仓库与项目钩子设置
- git仓库
- https配置
- 其它
1.初始化磁盘 & 管理员密码重置
系统已被我折腾过了,现在需要先将其初始化一下,恢复到刚购买时的情况(新购买跳过)。
停止ECS实例后,选择重新初始化磁盘。
如果忘记了ECS实例的root用户的登录密码,可以选择'重置实例密码'。
密码重置完成后,必须 重启实例 才能生效
2.在本地机器上与服务器简历ssh连接
打开命令行工具,输入ssh root@47.38.34.32,然后会提示你输入管理员密码。
如果是之前使用过该服务器,然后重新初始化,那么会有一个warning给到:
这时需要删除~/.ssh/known_hosts下无效的私钥。
一种方式是直接删除该文件rm ~/.ssh/known_hosts,副作用是影响该文件中的其它域名的配置,不推荐。
另一种方式就是编辑该文件 vi ~/.ssh/known_hosts,删除对应的一条记录。
再次执行ssh root@{ip},输入密码后:
提示是否继续连接,输入yes:
建立连接成功。
3.apache安装与配置
-
准备编译安装apache需要的软件
- 执行
yum install -y gcc gcc-c++ autoconf libtool - 安装apr
cd /usr/local/src/ wget http://oss.aliyuncs.com/aliyunecs/onekey/apache/apr-1.5.0.tar.gz tar zxvf apr-1.5.0.tar.gz cd apr-1.5.0 ./configure --prefix=/usr/local/apr make && make install - 安装apr-util
cd /usr/local/src/ wget http://oss.aliyuncs.com/aliyunecs/onekey/apache/apr-util-1.5.3.tar.gz tar zxvf apr-util-1.5.3.tar.gz cd apr-util-1.5.3 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install - 安装pcre
cd /usr/local/src/ wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/pcre/pcre-8.38.tar.gz tar zxvf pcre-8.38.tar.gz cd pcre-8.38 ./configure --prefix=/usr/local/pcre make && make install
- 执行
-
安装apache
cd /usr/local/src/ wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/apache/httpd-2.4.23.tar.gz tar zxvf httpd-2.4.23.tar.gz cd httpd-2.4.23 ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-cgi --enable-rewrite --enable--ssl --with-zlib --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event make && make install -
配置apache
vim /etc/httpd/httpd.conf将
Require all denied改为Require all granted添加配置项
ServerName locahost:80 -
启动apache服务器,并查看
- 启动apache,
/usr/local/apache/bin/apachectl start,执行该条命令控制台没有任何输出。 - 使用netstat命令查看。
netstat -tnlp 可以看到httpd,apache安装成功。
- 启动apache,
-
如果想要在外网查看apache运行结果,还需要配置阿里云的安全组。现在80端口默认开启了。
在浏览器输入ip(或域名,如果有做域名映射)。可以看到"it works!"。
-
设置apache开机自启动
vim /etc/rc.d/rc.local在文件结尾添加一句
/usr/local/apache/bin/apachectl start -
添加环境变量
vim /root/.bash_profile添加
:/usr/local/apache/bin 执行source /root/.bash_profile,使上面的环境变量设置立即生效。现在可以尝试直接使用
apachectl命令了。# 重启apache apachectl restart
4.php安装与配置
-
安装依赖
yum install php-mcrypt libmcrypt libmcrypt-devel libxml2-devel openssl-devel libcurl-devel libjpeg.x86_64 libpng.x86_64 freetype.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 freetype-devel.x86_64 libjpeg-turbo-devel libmcrypt-devel mysql-devel -y -
安装php
cd /usr/local/src/ wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/php/php-5.6.30.tar.gz tar zxvf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo --enable-pcntl make && make install -
配置php.ini 将当前目录下的php.ini-production拷贝到/etc/php.ini,如果/etc/php.ini已经存在,一定要选择覆盖。
php.ini-production /etc/php.ini修改配置项:
vim /etc/php.ini修改时区
-
修改apache配置,支持解析php文件。
vim /etc/httpd/httpd.conf在httpd.conf文件结尾添加两行:
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps修改
DirectoryIndex配置项,加入index.php配置完毕,重启apache:
apachectl restart。 -
检验php文件能否正常解析
vim /usr/local/apache/htdocs/index.php添加一句代码:
再次在浏览器输入url(之前如果没有关闭浏览器,刷新即可)查看:
-
添加环境变量
vim /root/.bash_profile新增
:/usr/local/php/bin 执行source /root/.bash_profile,是配置立即生效。
5.拉取项目
-
安装git
先尝试一下
git --version,看看服务下是否安装git。如果没有安装,则执行下面的命令:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel yum install git -
生成ssh key
在命令执行
ssh-keygen -t rsa -C "{邮箱}"。命令执行过程中遇到停顿,直接按回车就好。将
/root/.ssh/id_rsa.pub里面的内容配置到git仓库(.ssh/authorized_keys中)。 -
拉取项目代码
然后就可以克隆代码了。
cd /usr/local/apache/htdocs/ git clone git@{ip}:{path/to/project} -
修改apache配置
vim /etc/httpd/httpd.conf修改下面两句:
重启apache。apachectl restart -
刷新页面,查看效果
6.mysql安装及配置
-
检查系统中是否已安装mysql或mariadb。
rpm -qa | grep mysql #由下至上依次卸载 rpm -qa | grep mariadb rpm -e {数据库} #一般使用此命令即可卸载成功 rpm -e --nodeps {数据库} #卸载不成功时使用此命令强制卸载 -
安装mysql
cd /usr/local/src/ yum install -y libaio-* #安装依赖 wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/mysql/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz tar -xzvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz mkdir -p /usr/local/mysql mv mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/local/mysql/ -
建立mysql组&用户,将mysql用户添加到mysql组中。
groupadd mysql useradd -g mysql -s /sbin/nologin mysql -
初始化mysql数据库
/usr/local/mysql/bin/mysqld --initialize-insecure --datadir=/usr/local/mysql/data/ --user=mysql -
更改mysql安装目录的属主属组
chown -R mysql:mysql /usr/local/mysql -
设置开机自启动
cd /usr/local/mysql/support-files/ cp mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld # 添加执行权限 vim /etc/rc.d/rc.local添加
/etc/init.d/mysqld start -
设置环境变量
vim /root/.bash_profile # 增加/usr/local/mysql/bin:/usr/local/mysql/lib PATH=$PATH:$HOME/bin:/usr/local/php/bin:/usr/local/mysql/bin:/usr/local/mysql/lib source /root/.bash_profile # 立即生效 -
创建.cnf文件
cd /usr/local/mysql/support-files cp my-default.cnf /etc/my.cnf如果提示文件存在,则覆盖。
-
启动msyqld
/etc/init.d/mysqld start -
设置mysql root用户密码
msyqladmin -u root password '{密码}' -
连接mysql,查看用户
mysql -uroot -p输入密码后,执行查询语句:
SELECT host,user FROM mysql.user WHERE User = 'root'; -
创建用户,并设置为可以外部连接数据库
CREATE USER 'root'@'%' IDENTIFIED BY '{密码}'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';如果需要修改密码,则执行一下sql:
set password for 'root'@'%'=password('{密码}'); -
设置阿里云ecs安全组,开放3306端口。
7. 补充
-
开启apache rewrite模块
vim /etc/httpd/httpd.conf 重启apache,apachectl restart。 -
配置apache
AllowOverride All