win 服务器迁移 ubuntu

本贴最后更新于 2504 天前,其中的信息可能已经时移世改

前言

之前一直使用的 windowsserver2008,内存占用也不多,没想象的那么多。一切都很稳定,不过最近出了 windows 的病毒,感觉 linux 的防火墙更方便,windows 一大堆东西学习来太麻烦了。

刚开始,用的 centos 7.2,我尝试了几款 linux 面板。大家可以百度了解,挺人性化的。个人感受而言,宝塔linux面板 优于 appnode 。如果付费的话,显然后者更好。因为后者的免费版本,功能有限,使用了付费的,感觉比宝塔好。为什么之后选择不适用 linux 面板这样的神奇呢?主要有 5 个原因:

  1. https 支持不够好
  2. java 技术栈的需要配置 tomcat,他们对 tomcat 支持很不友好
  3. 用别人的面板,存在后门的嫌隙很大
  4. 各种配置都是点击式的,出了问题都不知道怎么配置,自己学会才是硬道理
  5. 体验过程中出现的 bug、十分不舒服。几个面板都还不够稳定,或许一年后再来体验比较好。如果你是一个 php 程序员,使用面板将会非常方便!

服务器介绍

我的是腾讯云的学生机,1 核 1G1M20G

系统选的是:ubuntu16.04(不使用面板的话,推荐这款来个人使用,有运维推荐 centos7)因为自己平时用的就是 ubuntu,熟悉一点,社区大,虽然之前体验 centos 感觉也还行。

ssh

我用的 mobaxterm 来进行 ssh 远程操作服务器,可以拖动文件和准在线编辑文件。不过注意 ssh 是有自动断线的,如果安装时间太长,会自动断线。可以使用 screen 命令来防止,更简单的是如下图:

a14fa53334f545aa8c2e499ccb644f19-0.png

创建超级用户

sudo passwd 输入超级用户 root 的密码

su 切换 root 用户

之后都是在超级用户下操作

DNS

使用 ubuntu14.04 有此情况,16.04 和其他操作系统根据情况忽略 DNS 操作。后来我使用了 16。04,默认的 dns 就好了。

腾讯云的源的域名是内网域名,需要添加内网解析的 dns,我们完全把 dns 的第一个换成腾讯云的内网 dns。

根据自己的服务器所在地址修改,如下

广州服务器:

  • nameserver 10.225.30.181
  • nameserver 10.225.30.223

北京服务器:

  • nameserver 10.53.216.182
  • nameserver 10.53.216.198

上海服务器:

  • nameserver 10.236.158.114
  • nameserver 10.236.158.106

上海金融服务器:

  • nameserver 10.48.46.77
  • nameserver 10.48.46.27

深圳金融服务器:

  • nameserver 100.83.224.91
  • nameserver 100.83.224.88

香港服务器:

  • nameserver 10.243.28.52
  • nameserver 10.225.30.178

修改腾讯云的 dns 操作:

cp /etc/resolv.conf /etc/resolv.conf.bak 备份

vim /etc/resolv.conf 修改

lnmp

之前一直在用 lamp ,后来发现 nginx 会好用一点,特别在反向代理上比 apache 有很多优势。lamp 相对简单点,从我入门的角度来说。在线熟悉了,就用一下 lnmp

官网 https://lnmp.org, 我安装的 1.3 版本,服务器是 ubuntu16.04 版本

wget -c http://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz && tar zxf lnmp1.3-full.tar.gz && cd lnmp1.3-full && ./install.sh lnmp 下载 && 解压 && cd && 执行 ,下载的网速大概 2.5M 每秒

安装过程中,可以仔细看一下说明,学生机的话,推荐一路默认就行,其中 php 推荐 5.6。高版本的好多学生机是不能用的,因为检测到性能不够。

先自动检测系统环境,更新一些软件。

8e3021d39571496690a5410b0f583015-1.png

然后和进行编译安装,编译了很久,可以去喝一杯咖啡了,要慢慢享受才行。网速还行,腾讯云内网的源,只是 cpu 慢,编译比较慢。注意:千万别让 ssh 断了,或使用了 screen,不然推荐你重装系统再来一遍吧。

lampubuntu 16.04 安装一切顺利,。14.04 出了很多 bug。不过云服务有一点很好,重装操作系统很快很快!初学者遇到安装 bug,因为自己操作原因的话,直接重装就好啦

5a9f39b3327c48918a2053f62ceafb79-2.png

箴言

编译安装的速度真的是受不了了,如果你可以,推荐你从 apt-get 里自己下载配置,速度会好很多。

那么为什么还推荐这种方式呢?传送门 感觉我真是一个打广告的。

LNMP 相关软件安装目录

  • Nginx 目录: /usr/local/nginx/
  • MySQL 目录 : /usr/local/mysql/
  • MySQL 配置文件:/etc/my.cnf
  • Nginx 日志目录:/home/wwwlogs/
  • Nginx 主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
  • 添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
  • PHP 配置文件:/usr/local/php/etc/php.ini
  • PHPMyAdmin 目录 : /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin 可自己从官网下载新版替换。
  • 默认网站目录 : /home/wwwroot/default/

更多详见:传送门

JDK 环境

两种方法:

  • apt-get
  • 下载源码,自己配置 path 路径

apt-get 方法

这里使用第一种方法,比较简单,后来经过测验,速度真是太慢了!!!!推荐自己配置吧

  1. 添加 java 的源

    • sudo add-apt-repository ppa:webupd8team/java
    • sudo apt-get update
  2. 安装 oracle-java-installer

    • jdk7
      • sudo apt-get install oracle-java7-installer
    • jdk8
      • sudo apt-get install oracle-java8-installer
  3. 设置系统默认 jdk

    • JDk7
      • sudo update-java-alternatives -s java-7-oracle
    • JDK8
      • sudo update-java-alternatives -s java-8-oracle
  4. 检查安装成功

    • java -version

自己配置方法

  1. 上传 jdk 包
    • 自己去官网下载 linux 64 的.tar.gz
    • ssh 上传上去,推荐使用 mobaxterm 的拖动上传文件到服务器,上传平均速度 700K 每秒
  2. 解压
    • tar -xzvf jdk-8u131-linux-x64.tar.gz
  3. 配置

maven 环境

跟 jdk 安装一样,推荐自己上传,然后解压,再配置,配置文件见下方的配置

如果上传的.zip,解压使用 unzip file.zip

推荐提前更换阿里的镜像,如下。这样 maven 下载速度会很快!

    <mirror>  
        <id>nexus-aliyun</id>  
        <mirrorOf>*</mirrorOf>  
        <name>Nexusaliyun</name>  
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
    </mirror> 

Tomcat

使用的 tomcat8,根据自己情况而定。直接上传到服务器,解压扔到一个目录就行,不用安装和配置!

如果上传的.zip,解压使用 unzip file.zip

配置

直接配置就行了,我的 jdk 和 maven 目录如下面的配置文件所示

sudo vim /etc/profile

在最后,粘贴如下代码(请自行修改路径):

export MAVEN_HOME=/home/ubuntu/apache-maven-3.3.9
export JAVA_HOME=/home/ubuntu/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

使配置生效

source /etc/profile

测试成功没

java -versionmvn -v

发现 mvn 没有运行权限,简单暴力的执行如下:

chmod -R 777 jdk1.8.0_131
chmod -R 777 apache-maven-3.3.9
chmod -R 777 apache-tomcat-8.5.15

再次 mvn -v,成功!

服务运行

Tomcat

  • sh /home/ubuntu/apache-tomcat-8.5.15/bin/startup.sh 开启
  • sh /home/ubuntu/apache-tomcat-8.5.15/bin/shutdown.sh 关闭

LNMP

各个程序状态管理:

lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}

JavaWeb 运行

git clone https://git.coding.net/xjtushilei/SearchVIP.git

带密码的 git:
git clone https://用户名:密码 @git.coding.net/xjtushilei/SearchVIP.git

mvn package

mv target/searchvip-0.0.1-SNAPSHOT.war /home/ubuntu/apache-tomcat-8.5.15/webapps/searchvip.war

运行 tomcat

mysql 优化

让 mysql 外网访问:

  • 首先需要自己在 phpmyadmin 里添加一个用户 主机为 % 的任意主机(也可以编辑已有的用户)
  • 并且 iptables 里删除 DROP 3306 端口的规则
    • sudo iptables -L -n --line-numbers 按行号显示规则
    • sudo iptables -D INPUT 5 删除 3306 的规则的那行

修改端口等:sudo vim /etc/my.cnf

详情操作:https://my.oschina.net/code33/blog/299242?p=1

nginx

添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/*.conf

配置样例:

server {
    listen                     80;
    listen                     443 ssl;
    server_name                tongtong.xjtushilei.com;
     root                      /home/wwwroot/tongtong;
    index                      index.html index.htm index.php;
    include enable-php.conf;
    keepalive_timeout          65s;
    client_max_body_size       1m;
    ssl_certificate            /opt/appnode/agent/data/ssl/tongtong.xjtushilei.com/tongtong.xjtushilei.com.crt;
    ssl_certificate_key        /opt/appnode/agent/data/ssl/tongtong.xjtushilei.com/tongtong.xjtushilei.com.key;
    ssl_ciphers                ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers  on;
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache          shared:SSL:5m;
    ssl_session_timeout        5m;
    gzip_types                 text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/xml application/xhtml+xml application/xml+rss application/rss+xml application/atom+xml application/x-font-ttf application/x-web-app-manifest+json font/opentype image/svg+xml image/x-icon;

    if ($scheme = http) {
        return  301 https://$host$request_uri;
    }


}
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3165 引用 • 8206 回帖
  • lnmp
    8 引用 • 18 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    673 引用 • 535 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 准备往 Go 迁移了。。。

    1 回复
  • xjtushilei

    不搞 java 了吗
    还是社区?

    1 回复
  • 88250

    暂时两手抓,以后重点 Go。会做一版 Solo.go 出来,社区也会初步进行迁移。

    1 回复
  • xjtushilei

    哇,这让我 javaer 情何以堪

  • alanfans

    php 什么鬼

    1 回复
  • sides

    收藏 😬

  • Angonger 2 赞同

    帮同事把 win 服务器迁移到 linux,文件全部乱码,文件名还好说用 convmv 转了成功了,文档没辙了,到现在都没解决,enca 也搞不定,本来觉得很容易的事儿,其实也不容易,重建索引,批量改编码等等,预计一下午的事儿花了将近一天,哎,多积累经验吧

    1 回复
  • someone1764

    咦,不编译安装吗

    1 回复
  • xjtushilei

    比如 phpadmin 呀,比如搞点 php 有意思的网站呀,帮别人放点东西呀

  • xjtushilei

    编码很蛋疼的。。。。在我印象中,1 年前,之前不知道什么原因,一个 linux 服务器的中文编码一直不能显示

    1 回复
  • xjtushilei

    编译。

    1 回复
  • Angonger

    我这次遇到的:1.系统没有中文编码支持,默认的 LANG 是 en_US.UTF-8,2.文件编码格式不对(只针对文件名,文件内容我还是没搞定),用 convmv 转换(一定要弄对了一开始的编码)

  • someone1764

    用 LNMP 这不是集成环境吗

请输入回帖内容 ...