[关闭]
@liuximing 2018-04-10T18:27:58.000000Z 字数 3857 阅读 118

云上的日子——搭建LAMP生产环境

Web


购买服务器和域名

国内的话,阿里云现在已经做的很成熟,然后也收购了万网,云主机和域名可以一站购买。需要注意的是,如果购买中国大陆的主机是需要备案的,而有些后缀的域名在国内暂时还不能备案。还有就是,不管你买哪儿的主机,域名都要实名认证后才可以使用。

1. 选择基础镜像

在选择云主机的配置时,也会要求选择基础镜像,可以选择阿里云提供的公共镜像,也可以去镜像市场的挑选第三方提供的集成运行环境。

2. 设置域名解析

域名解析也可以通过阿里云的控制台去设置,具体设置如图所示,记录值填你刚刚购买的云主机的IP地址。
image.png

安装Apache

安装依赖

  1. yum -y install gcc apr apr-util pcre-devel

安装openssl

  1. yum -y install openssl openssl-devel

下载(httpd.apache.org)和解压

  1. wget https://archive.apache.org/dist/httpd/httpd-2.4.17.tar.gz
  2. tar -zxvf httpd-2.4.17.tar.gz

编译安装Apache,使静态包含mod_ssl模块

  1. cd httpd-2.4.17
  2. ./configure \
  3. --prefix=/usr/local/apache2 \
  4. --enable-so \
  5. --enable-ssl \
  6. --enable-cgi \
  7. --enable-rewrite \
  8. --with-zlib \
  9. --with-pcre \
  10. --with-mpm=prefork \
  11. --enable-modules=most \
  12. --enable-mpms-shared=all
  13. make
  14. make install

设置开机自动启动

  1. vim /etc/rc.local
  2. /usr/local/apache2/bin/apachectl start

安装PHP

安装依赖

  1. yum -y install gcc gcc++ libxml2-devel

下载(php.net)和解压

  1. wget http://php.net/get/php-7.1.1.tar.gz/from/a/mirror
  2. tar -zxvf mirror

编译安装

  1. cd php-7.0.17/
  2. ./configure --prefix=/usr/local/php7 --enable-fpm
  3. make
  4. sudo make install

最后,编写一个脚本测试一下PHP是否正常工作

  1. <?php
  2. phpinfo();

安装MySQL

MySQL的编译安装依赖cmake

  1. yum -y install gcc gcc-c++ ncurses ncurses-devel make cmake

下载(dev.mysql.com)和解压

  1. wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.54.tar.gz
  2. tar -zxvf mysql-5.5.54.tar.gz

编译安装

  1. cd mysql-5.5.54/
  2. cmake \
  3. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  4. -DMYSQL_DATADIR=/mysql/data \
  5. -DSYSCONFDIR=/etc \
  6. -DMYSQL_UNIX_ADDR=/var/run/mysql/mysqld.sock \
  7. -DMYSQL_TCP_PORT=3306 \
  8. -DWITH_MYISAM_STORAGE_ENGINE=1 \
  9. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  10. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  11. -DWITH_MEMORY_STORAGE_ENGINE=1 \
  12. -DENABLED_LOCAL_INFILE=1 \
  13. -DWITH_PARTITION_STORAGE_ENGINE=1 \
  14. -DEXTRA_CHARSETS=all \
  15. -DDEFAULT_CHARSET=utf8 \
  16. -DDEFAULT_COLLATION=utf8_general_ci
  17. make
  18. sudo make install

配置解释:

  1. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ //设置安装目录
  2. -DMYSQL_DATADIR=/mysql/data \ //设置数据库存放目录,一般来说会独立放在根目录下,方便磁盘挂在上去
  3. -DSYSCONFDIR=/etc \ //设置my.cnf配置文件的所在目录,默认为安装目录
  4. -DMYSQL_UNIX_ADDR=/var/run/mysql/mysqld.sock \ //设置socket目录
  5. -DMYSQL_TCP_PORT=3306 \ //设置数据库服务器监听端口,默认就是3306
  6. -MYSQL_USER=mysql \ //设置运行用户
  7. -DWITH_MYISAM_STORAGE_ENGINE=1 \ //支持MYISAM引擎
  8. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ //支持INNOBASE引擎
  9. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ //支持ARCHIVE引擎
  10. -DWITH_MEMORY_STORAGE_ENGINE=1 \ //支持MEMORY引擎
  11. -DENABLED_LOCAL_INFILE=1 \ //支持从本地导入数据库
  12. -DWITH_PARTITION_STORAGE_ENGINE=1 \ //支持数据库分区
  13. -DEXTRA_CHARSETS=all \ //支持所有字符集
  14. -DDEFAULT_CHARSET=utf8 \ //默认字符集
  15. -DDEFAULT_COLLATION=utf8_general_ci //默认校对规则
  16. 更多参数执行 # cmake . -LH 或者查看官方说明

新建MySQL用户组和用户,新建MySQL数据文件目录

  1. cat /etc/passwd | grep mysql
  2. cat /etc/group | grep mysql
  3. groupadd -r mysql
  4. useradd -r -g mysql mysql
  5. chown -R mysql:mysql /usr/local/mysql
  6. mkdir -p /mysql/data
  7. mkdir -p /mysql/logs
  8. mkdir -p /mysql/temp

至此,mysql安装完毕

启动和进入mysql

  1. mysqld

测试MySQL(PHP 7 已经放弃php_mysql,采用php_mysqli 和 pdo_mysql)

  1. <?php
  2. //创建对象并打开连接,最后一个参数是选择的数据库名称
  3. $mysqli = new mysqli('localhost','root','','mysql');
  4. //检查连接是否成功
  5. if (mysqli_connect_errno()){
  6. //注意mysqli_connect_error()新特性
  7. die('Unable to connect!'). mysqli_connect_error();
  8. }
  9. $sql = "select * from user";
  10. //执行sql语句,完全面向对象的
  11. $result = $mysqli->query($sql);
  12. while($row = $result->fetch_array()){
  13. echo $row[0];
  14. }

配置HTTPS

这里笔者选择了 Let's Encypt 颁发的免费证书,并使用 certbot 来生成证书(事实上后来我发现阿里云也提供了免费的CA证书服务)。在certbot首页选择你使用的服务器软件和操作系统会有相应的引导,这里我使用的分别是Apache和CentOS 6。

image.png

1. 下载cerbot
  1. $ wget https://dl.eff.org/certbot-auto
  2. $ chmod a+x certbot-auto
2. 生成证书
  1. $ ./certbot-auto certonly --webroot -w /usr/local/apache2/htdocs/ -d www.域名
3. 配置服务器自动更新证书

Let's Encypt证书的有效期只有3个月,所以需要配置服务器自动更新证书。在/etc/crontab中添加下面的配置:

  1. # For details see man 4 crontabs
  2. # Example of job definition:
  3. # .---------------- minute (0 - 59)
  4. # | .------------- hour (0 - 23)
  5. # | | .---------- day of month (1 - 31)
  6. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  7. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  8. # | | | | |
  9. # * * * * * user-name command to be executed
  10. 30 2 */2 * * /root/certbot-auto renew --quiet
  11. 31 2 */2 * * /usr/local/apache2/bin/apachectl start
4. 配置Apache加入证书

首先修改Apache的主配置文件httpd.conf,开启SSL模块,并且包含自子配置文件httpd-ssl.conf:

  1. LoadModule ssl_module modules/mod_ssl.so
  2. Include conf/extra/httpd-ssl.conf

然后修改httpd-ssl.conf,可以参考 配置文件生成器

最后,重启Apache,就可以看到梦寐以求的小绿锁了。

  1. $ apachectl restart

image.png

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注