阿里云linux服务器操作记录
- 安装jemalloc
- 安装nginx
- 使用jemalloc优化Nginx
- configure参数说明
- 验证jemalloc优化Nginx是否生效
- 阿里云修改安全组
- 测试nginx主页
- 安装ssl证书
- 配置域名解析
- 安装mysql
- 配置mysql
- 修改字符集
- 使用jemalloc优化Nginx
- 安装JDK
- 安装node
安装jemalloc
jemalloc主要是优化nginx内容管理,如果不需要,可以跳过此步骤
jemalloc的github官网查找对应的版本https://github.com/jemalloc/jemalloc/releases
#安装依赖
yum -y install gcc gcc-c++
#下载jemalloc
mkdir /usr/local/src/jemalloc
cd /usr/local/src/jemalloc
wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2
tar -xvf jemalloc-5.2.1.tar.bz2
cd jemalloc-5.2.1
#安装jemalloc
./configure
make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
如果报错
tar xjf jemalloc-5.2.1.tar.bz2
tar (child): bzip2:无法 exec: 没有那个文件或目录
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
说明确实缺少bzip2包,执行以下命令安装
yum install -y bzip2
安装nginx
nginx官网参考文档http://www.nginx.cn/install nginx官网查找稳定版Stable version的版本下载http://nginx.org/en/download.html
#安装依赖
#安装make
yum -y install gcc automake autoconf libtool make
#安装g++(安装jemalloc已经安装过)
yum install gcc gcc-c++
#安装pcre库;安装zlib库;安装ssl(某些vps默认没装ssl);gcc前面已经安装
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
#下载nginx
mkdir /usr/local/src/nginx
cd /usr/local/src/nginx
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
#安装
./configure
make && make install
#检查/usr/local/nginx是否创建成功
cd /usr/local/nginx
保留/usr/local/src/nginx文件,下次安装插件的时候可以用到,丢失也无关系,可以参考我的博客nginx安装插件
使用jemalloc优化Nginx
cd /usr/local/src/nginx
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-ld-opt="-ljemalloc"
make && make install
configure参数说明
–user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中使用的user指令。默认的用户名是nobody
–group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中使用的 user指令。默认的为非特权用户
–with-http_stub_status_module nginx状态
–with-http_ssl_module 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。–with-http_flv_module 为Flash Video(FLV)文件 提供服务端伪流媒体支持。通过返回以请求偏移位置开始的文件内容,该模块专门处理 在查询串中有start参数的请求, 和有预先设置到FLV头部的请求
–with-http_gzip_static_module 对于静态文件先压缩再输出是再正常不过的事了,但是这种压缩都是动态的,在每次请求都会先压缩再输出,大大浪费了很多cpu。如果前端加了反向代理缓存, 那能减少这种浪费。但不是每个生产环境前端都有缓存的。而nginx有个模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持 gzip的请求则读取原文件。
–with-ld-opt="-ljemalloc" 使用jemalloc优化Nginx内存管理
验证jemalloc优化Nginx是否生效
yum install lsof
lsof -n | grep jemalloc
阿里云修改安全组
点击菜单云服务器 ECS/安全组
选择实例配置规则
点击克隆复制原本的安全设置
添加协议类型为HTTP和HTTPS的安全组规则
测试nginx主页
输入http:ip即可访问nginx主页
安装ssl证书
安装ssl证书文档主要参考阿里官方文档https://help.aliyun.com/knowledge_detail/95491.html
在证书控制台下载Nginx版本证书。下载到本地的压缩文件包解压后包含:
.crt文件:是证书文件,crt是pem文件的扩展名。
.key文件:证书的私钥文件(申请证书时如果没有选择自动创建CSR,则没有该文件)。
友情提示: .pem扩展名的证书文件采用Base64-encoded的PEM格式文本文件,可根据需要修改扩展名。
以Nginx标准配置为例,假如证书文件名是a.pem,私钥文件是a.key。
在Nginx的安装目录下conf文件夹下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key;
打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到:
#server {
# listen 443 ssl;
# server_name localhost;
#
# ssl_certificate cert/a.pem;
# ssl_certificate_key cert/a.key;
#
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
#
# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_prefer_server_ciphers on;
#
# location / {
# root html;
# index index.html index.htm;
# }
#}
将其修改为 (以下属性中ssl开头的属性与证书配置有直接关系,其它属性请结合自己的实际情况复制或调整) :
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert/a.pem;
ssl_certificate_key cert/a.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
保存退出。
重启 Nginx。
配置域名解析
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。
我们已经完成了服务器的配置,现需要把域名指定到我们到服务器上。
进入域名控制台,点击对应域名到解析
点击对应域名到解析设置
设置
记录类型为A
主机记录为www
记录值为服务器公网IP
TTL为10分钟
确定保存后,等待10分钟,访问域名地址,即可看到主机配置到nginx主页
安装mysql
当前操作系统版本为CentOS 7.6 64位
mkdir /usr/local/src/mysql
cd /usr/local/src/mysql
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
#权限设置
chown mysql:mysql -R /var/lib/mysql
#初始化 MySQL
mysqld --initialize
#启动 MySQL
systemctl start mysqld
#启动 MySQL(方法2)
service mysql start
#查看 MySQL 运行状态:
systemctl status mysqld
#查看 MySQL 版本
mysqladmin --version
配置mysql
#Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码
mysqladmin -u root password "new_password";
#通过命令来连接到Mysql服务器
mysql -u root -p
mysql> Enter password:new_password
#允许远程访问
#MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.
#所以必须给root修改可以远程访问的权限
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'new_password' WITH GRANT OPTION;
#因为%不包括本地localhost,所以需要再赋权localhost
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY "new_password";
#检查是否有host为%的记录
mysql> select host, user from user;
+-----------+------+
| host | user |
+-----------+------+
| % | root |
#从mysql数据库的grant表中重新加载权限数据
#因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
mysql> flush privileges;
#检查mysql字符集
mysql> show variables where variable_name like 'character_set_%' or variable_name like 'collation%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+--------------------------+----------------------------+
#ok 退出MySQL 重启服务
quit;
修改字符集
由于字符集是utf8而不是utf8mb4,会存在表情字符的编码与解码问题,可参考https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4后期修改配置,也可以安装完mysql参考下面配置
修改MySQL配置文件
修改mysql配置文件etc/my.cnf
找到后请在以下三部分里添加如下内容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
重启使字符集配置生效
#重启mysql
service mysql restart
mysql -u root -p
重新查询字符集是否改变
mysql> Enter password:new_password
mysql> show variables where variable_name like 'character_set_%' or variable_name like 'collation%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+----------------------------+
#ok 字符集已经改为utf8mb4,退出MySQL
quit;
系统变量 | 描述 |
character_set_client | 客户端来源数据使用的字符集 |
character_set_connection | 连接层字符集 |
character_set_database | 当前选中数据库的默认字符集 |
character_set_results | 查询结果字符集 |
character_set_server | 默认的内部操作字符集 |
使用jemalloc优化Nginx
修改/usr/bin/mysqld_safe脚本,在脚本中添加了export LD_PRELOAD=/usr/local/lib/libjemalloc.so这一行,参考下面命令
#使用jemalloc优化MySQL
sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' /usr/bin/mysqld_safe
#重启mysql
service mysql restart
#验证jemalloc优化
lsof -n | grep jemalloc
安装JDK
#查看可以安装版本
yum -y list java*
#安装
yum install -y java-1.8.0-openjdk-devel.x86_64
java -version
通过yum安装,环境变量已经配置好,不需要再配置,可通过下面命令了解详细java程序位置
#查询java位置,yum安装一般会输出/usr/bin/java
which java
#查询真实路径,yum安装一般会输出/usr/bin/java -> /etc/alternatives/java
ls -lrt /usr/bin/java
#查询真实路径,yum安装一般会输出/etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java
ls -lrt /etc/alternatives/java
结果参考下图
安装node
#安装依赖
mkdir /usr/local/src/node
cd /usr/local/src/node
wget https://nodejs.org/dist/v12.13.1/node-v12.13.1-linux-x64.tar.gz
tar -zvxf node-v12.13.1-linux-x64.tar.gz
mkdir /usr/local/nodejs
cp -r /usr/local/src/node/node-v12.13.1-linux-x64/* /usr/local/nodejs
ln -s /usr/local/nodejs/bin/node /usr/local/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/local/bin/npm
ln -s /usr/local/bin/node /usr/bin/node
ln -s /usr/local/bin/npm /usr/bin/npm
#检查版本
node -v
npm -v
由于国内网络环境原因,需要配置镜像
npm config set registry https://registry.npm.taobao.org
#查看配置
npm config get registry
默认的地址如下