多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 配置云服务器 ### 安装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) 使用自定义镜像,在对服务器进行扩容的时候非常快速,不需要在进行任何配置,只要创建服务器,即可迅速加入集群中,实现即买即用。特别提出的是,腾讯云支持“弹性伸缩”,“弹性伸缩”是配置用于在达到你规定的阈值时,有腾讯云自动为你增加或者减少云服务器,以动态的适应访问压力的方案。在“弹性伸缩”自动创建新的云主机时,不需要人工干预,只需要配置由弹性伸缩”服务使用你制作好的系统镜像创建新的云主机,并由“弹性伸缩”服务帮你加入指定的负载均衡服务器集群中。