## 配置云服务器
### 安装NGINX、PHP和MySQL
参考我的另一篇文章,安装NGINX、PHP和MySQL。(科学上网这一步可以根据实际情况选择是否安装,因为现在webtatic.com现在好像又能正常访问了)。
[CentOS使用Yum源安装 PHP、Nginx、MySQL](https://www.kancloud.cn/colder/install_php_nginx_mysql_by_yum/727066)
以下是安装过程的命令:
```
[root@VM_16_46_centos ~]# history
[root@VM_16_46_centos ~]# yum install epel-release
[root@VM_16_46_centos ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@VM_16_46_centos ~]# yum makecache fast
[root@VM_16_46_centos ~]# yum search php72
[root@VM_16_46_centos ~]# yum install php72w mod_php72w php72w-cli php72w-common php72w-common php72w-dba php72w-devel php72w-embedded php72w-enchant php72w-fpm php72w-gd php72w-imap php72w-interbase php72w-intl php72w-ldap php72w-mbstring php72w-mysql php72w-odbc php72w-opcache php72w-pdo php72w-pdo_dblib php72w-pear php72w-pecl-apcu php72w-pecl-apcu-devel php72w-pecl-geoip php72w-pecl-igbinary php72w-pecl-igbinary-devel php72w-pecl-imagick php72w-pecl-imagick-devel php72w-pecl-libsodium php72w-pecl-memcached php72w-pecl-mongodb php72w-pecl-redis php72w-pecl-xdebug php72w-pgsql php72w-phpdbg php72w-process php72w-pspell php72w-recode php72w-snmp php72w-soap php72w-sodium php72w-tidy php72w-xml php72w-xmlrpc
[root@VM_16_46_centos ~]# systemctl enable php-fpm.service
[root@VM_16_46_centos ~]# systemctl start php-fpm.service
[root@VM_16_46_centos ~]# systemctl status php-fpm.service
[root@VM_16_46_centos ~]# vim /etc/yum.repos.d/nginx.repo
[root@VM_16_46_centos ~]# yum install nginx
[root@VM_16_46_centos ~]# systemctl enable nginx.service
[root@VM_16_46_centos ~]# systemctl start nginx.service
[root@VM_16_46_centos ~]# systemctl status nginx.service
[root@VM_16_46_centos ~]# rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
[root@VM_16_46_centos ~]# yum makecache fast
[root@VM_16_46_centos ~]# yum install mysql-community-server
[root@VM_16_46_centos ~]# systemctl enable mysqld.service
[root@VM_16_46_centos ~]# systemctl start mysqld.service
[root@VM_16_46_centos ~]# systemctl status mysqld.service
[root@VM_16_46_centos ~]# grep 'temporary password' /var/log/mysqld.log
[root@VM_16_46_centos ~]# mysql -uroot -p
```
### 挂载NFS文件存储
```
[root@VM_16_46_centos ~]# yum install -y nfs-utils
[root@VM_16_46_centos ~]# mkdir /exam
[root@VM_16_46_centos ~]# sudo mount -t nfs -o vers=4 172.16.16.48:/ /exam
[root@VM_16_46_centos ~]# cd /exam
[root@VM_16_46_centos ~]# mkdir code
[root@VM_16_46_centos ~]# cd code
[root@VM_16_46_centos ~]# touch index.html
[root@VM_16_46_centos ~]# vim index.html
```
我们先安装nfs-utils挂载工具,然后根据文件存储实例“挂载点信息”中的说明,挂载nfs文件存储。我们把文件存储挂载到/exam目录下,并在文件存储中创建code目录和index.html文件。
然后我们使用命令df查看挂载是否成功:
```
[root@VM_16_46_centos ~]# df
```
![](https://box.kancloud.cn/2441b212a98287e88262e43d5e41d003_570x179.png)
挂载成功了。这里我们是执行了命令挂载的,主机重启后就会断开,需要重新挂载。因此,我们还要设置一下,让系统每次启动时,自动挂载。编辑/etc/rc.local文件,追加如下内容并保存:
```
[root@VM_16_46_centos ~]# vim /etc/rc.local
```
```
# Auto mout nfs
mkdir -p /exam
sudo mount -t nfs -o vers=4 172.16.16.48:/ /exam
```
以后,每次主机重启,都会尝试自动创建/exam目录,并在此目录上挂载文件存储,不需要再手工挂载。
### 配置系统
1 、检查系统最大可打开文件数
```
[root@VM_16_46_centos ~]# ulimit -n
```
如果太小,修改/etc/security/limits.conf加入以下内容:
```
* soft nofile 100001
* hard nofile 100001
```
星号代表全局, soft为软件,hard为硬件,nofile为这里指可打开文件数。
此配置需重启才能生效。
修改vim /etc/sysctl.conf,增加如下配置:
```
fs.file-max=100001
```
修改/proc/sys/fs/file-max,内容为:
```
100001
```
修改NGINX配置文件/etc/nginx/nginx.conf,增加如下配置:
```
worker_rlimit_nofile 100001;
events {
worker_connections 10240;
}
```
因为socket在linux中也被认为是文件,如果连接数过多,会超过系统配置的数量,就会出现“Too many open files”的报错,从而限制并发能力。
2、修改PHP配置文件/etc/php-fpm.d/www.conf:
```
pm = dynamic
pm.max_children = 5000
pm.start_servers = 30
pm.min_spare_servers = 10
pm.max_spare_servers = 50
pm.max_requests = 50
```
其它设置,可参考下面的文档进行设置:[NGINX高并发性能优化](https://www.cnblogs.com/kevingrace/p/6094007.html)
3、创建站点
```
[root@VM_16_46_centos ~]# vim /etc/nginx/conf.d/exam.test.com.conf
```
写入如下内容:
```
server
{
listen 80;
server_name exam.test.com;
index index.html index.htm index.php;
root /exam/code/public/;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
之后,我们把网站程序放在/exam/code中。创建一个文件:/exam/code/public/index.php,写入如下内容
```
<?php
phpinfo();
```
重新载入nginx配置:
```
[root@VM_16_46_centos ~]# nginx -s reload
```
服务器配置完毕,我们就用目前这个配置,创建一个系统镜像,在新增云服务器时,使用这个镜像安装系统,就得到了跟目前这个云服务器完全相同的服务器环境。
### 制作系统镜像
在云服务器列表中,选择“制作镜像”菜单:
:-: ![](https://box.kancloud.cn/cb867caf5be8dfd3fde62732d423bad3_263x372.png)
:-: ![](https://box.kancloud.cn/4b040ba8309d2c68fd66a7cb8235c961_558x651.png)
镜像制作完成后,在“云服务器”-->“镜像”中看到它,可以用这个镜像创建实例,或者在新建云主机时,选择使用“自定义镜像”,并选择使用这个镜像。
:-: ![](https://box.kancloud.cn/7ddf66a2b6695d5f4624e492d99702f9_1216x789.png)
使用自定义镜像,在对服务器进行扩容的时候非常快速,不需要在进行任何配置,只要创建服务器,即可迅速加入集群中,实现即买即用。特别提出的是,腾讯云支持“弹性伸缩”,“弹性伸缩”是配置用于在达到你规定的阈值时,有腾讯云自动为你增加或者减少云服务器,以动态的适应访问压力的方案。在“弹性伸缩”自动创建新的云主机时,不需要人工干预,只需要配置由弹性伸缩”服务使用你制作好的系统镜像创建新的云主机,并由“弹性伸缩”服务帮你加入指定的负载均衡服务器集群中。