@liuximing
2018-04-10T18:27:58.000000Z
字数 3857
阅读 118
Web
国内的话,阿里云现在已经做的很成熟,然后也收购了万网,云主机和域名可以一站购买。需要注意的是,如果购买中国大陆的主机是需要备案的,而有些后缀的域名在国内暂时还不能备案。还有就是,不管你买哪儿的主机,域名都要实名认证后才可以使用。
在选择云主机的配置时,也会要求选择基础镜像,可以选择阿里云提供的公共镜像,也可以去镜像市场的挑选第三方提供的集成运行环境。
域名解析也可以通过阿里云的控制台去设置,具体设置如图所示,记录值填你刚刚购买的云主机的IP地址。

安装依赖
yum -y install gcc apr apr-util pcre-devel
安装openssl
yum -y install openssl openssl-devel
下载(httpd.apache.org)和解压
wget https://archive.apache.org/dist/httpd/httpd-2.4.17.tar.gztar -zxvf httpd-2.4.17.tar.gz
编译安装Apache,使静态包含mod_ssl模块
cd httpd-2.4.17./configure \--prefix=/usr/local/apache2 \--enable-so \--enable-ssl \--enable-cgi \--enable-rewrite \--with-zlib \--with-pcre \--with-mpm=prefork \--enable-modules=most \--enable-mpms-shared=allmakemake install
设置开机自动启动
vim /etc/rc.local/usr/local/apache2/bin/apachectl start
安装依赖
yum -y install gcc gcc++ libxml2-devel
下载(php.net)和解压
wget http://php.net/get/php-7.1.1.tar.gz/from/a/mirrortar -zxvf mirror
编译安装
cd php-7.0.17/./configure --prefix=/usr/local/php7 --enable-fpmmakesudo make install
最后,编写一个脚本测试一下PHP是否正常工作
<?phpphpinfo();
MySQL的编译安装依赖cmake
yum -y install gcc gcc-c++ ncurses ncurses-devel make cmake
下载(dev.mysql.com)和解压
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.54.tar.gztar -zxvf mysql-5.5.54.tar.gz
编译安装
cd mysql-5.5.54/cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/mysql/data \-DSYSCONFDIR=/etc \-DMYSQL_UNIX_ADDR=/var/run/mysql/mysqld.sock \-DMYSQL_TCP_PORT=3306 \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_MEMORY_STORAGE_ENGINE=1 \-DENABLED_LOCAL_INFILE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_cimakesudo make install
配置解释:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ //设置安装目录-DMYSQL_DATADIR=/mysql/data \ //设置数据库存放目录,一般来说会独立放在根目录下,方便磁盘挂在上去-DSYSCONFDIR=/etc \ //设置my.cnf配置文件的所在目录,默认为安装目录-DMYSQL_UNIX_ADDR=/var/run/mysql/mysqld.sock \ //设置socket目录-DMYSQL_TCP_PORT=3306 \ //设置数据库服务器监听端口,默认就是3306-MYSQL_USER=mysql \ //设置运行用户-DWITH_MYISAM_STORAGE_ENGINE=1 \ //支持MYISAM引擎-DWITH_INNOBASE_STORAGE_ENGINE=1 \ //支持INNOBASE引擎-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ //支持ARCHIVE引擎-DWITH_MEMORY_STORAGE_ENGINE=1 \ //支持MEMORY引擎-DENABLED_LOCAL_INFILE=1 \ //支持从本地导入数据库-DWITH_PARTITION_STORAGE_ENGINE=1 \ //支持数据库分区-DEXTRA_CHARSETS=all \ //支持所有字符集-DDEFAULT_CHARSET=utf8 \ //默认字符集-DDEFAULT_COLLATION=utf8_general_ci //默认校对规则更多参数执行 # cmake . -LH 或者查看官方说明
新建MySQL用户组和用户,新建MySQL数据文件目录
cat /etc/passwd | grep mysqlcat /etc/group | grep mysqlgroupadd -r mysqluseradd -r -g mysql mysqlchown -R mysql:mysql /usr/local/mysqlmkdir -p /mysql/datamkdir -p /mysql/logsmkdir -p /mysql/temp
至此,mysql安装完毕
启动和进入mysql
mysqld
测试MySQL(PHP 7 已经放弃php_mysql,采用php_mysqli 和 pdo_mysql)
<?php//创建对象并打开连接,最后一个参数是选择的数据库名称$mysqli = new mysqli('localhost','root','','mysql');//检查连接是否成功if (mysqli_connect_errno()){//注意mysqli_connect_error()新特性die('Unable to connect!'). mysqli_connect_error();}$sql = "select * from user";//执行sql语句,完全面向对象的$result = $mysqli->query($sql);while($row = $result->fetch_array()){echo $row[0];}
这里笔者选择了 Let's Encypt 颁发的免费证书,并使用 certbot 来生成证书(事实上后来我发现阿里云也提供了免费的CA证书服务)。在certbot首页选择你使用的服务器软件和操作系统会有相应的引导,这里我使用的分别是Apache和CentOS 6。

$ wget https://dl.eff.org/certbot-auto$ chmod a+x certbot-auto
$ ./certbot-auto certonly --webroot -w /usr/local/apache2/htdocs/ -d www.域名
Let's Encypt证书的有效期只有3个月,所以需要配置服务器自动更新证书。在/etc/crontab中添加下面的配置:
# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed30 2 */2 * * /root/certbot-auto renew --quiet31 2 */2 * * /usr/local/apache2/bin/apachectl start
首先修改Apache的主配置文件httpd.conf,开启SSL模块,并且包含自子配置文件httpd-ssl.conf:
LoadModule ssl_module modules/mod_ssl.soInclude conf/extra/httpd-ssl.conf
然后修改httpd-ssl.conf,可以参考 配置文件生成器 :
最后,重启Apache,就可以看到梦寐以求的小绿锁了。
$ apachectl restart
